Linux——文件属性、文件权限的重要性

Linux 文件属性

 

既然要让你了解 Linux 的文件属性,那么有个重要的也是常用的指令就必须要先跟你说啰!那一个?就是『 ls 』这一个察看文件的指令啰!在你以 dmtsai 登入系统,然后使用 su - 切换身份成为 root 后, 下达『 ls -al  』看看,会看到底下的几个咚咚:

ls 是『list』的意思,重点在显示文件的文件名与相关属性。而选项『-al』则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为『 』的文件)。如上所示,在你第一次以 root 身份登入 Linux 时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思:

 1、第一栏代表这个文件的类型与权限(permission)(很重要) 

这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字符:

第一个字符代表这个文件是『目录、文件或链接文件等等』:

  • 当为[ d ]则是目录,例如上表档名为『.config』的那一行;
  • 当为[ - ]则是文件,例如上表档名为『initial-setup-ks.cfg』那一行;
  • 若是[ l ]则表示为连结档(link file)
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)[ w ]代表可写(write)[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

  • 第一组为『文件拥有者可具备的权限』,以『initial-setup-ks.cfg』那个文件为例, 该文件的拥有者可以读写,但不可执行;
  • 第二组为『加入此群组之账号的权限』;
  • 第三组为『非本人且没有加入本群组之其他账号的权限』。

注意:不论是那一组权限,基本上,都是『针对某些账号来设计的权限』喔!以群组来说,他规范的是『加入这个群组的账号具有什么样的权限』之意, 以学校社团为例,假设学校有个童军社的社团办公室,『加入童军社的同学就可以进出社办』,主角是『学生(账号)』而不是童军社本身喔!这样可以理解吗?

例题:

若有一个文件的类型与权限数据为『-rwxr-xr--』,请说明其意义为何? 答:

先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:

[-][rwx][r-x][r--] 1  234  567  890

1 为:代表这个文件名为目录或文件,本例中为文件(-);

234 为:拥有者的权限,本例中为可读、可写、可执行(rwx);

567 为:同群组用户权力,本例中为可读可执行(rx);

890 为:其他用户权力,本例中为可读(r),就是只读之意

 

同时注意到,

rwx 所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。

2、第二栏表示有多少档名连结到此节点(i-node):

每个文件都会将他的权限与属性记录到文件系统的 i-node 中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个 i-node 啰!这个属性记录的,就是有多少不同的档名连结到相同的一个 i-node 号码去就是了。 关于 i-node 的相关资料我们会在第七章谈到文件系统时再加强介绍的。

3、第三栏表示这个文件(或目录)的『拥有者账号』

4、​​​​​​​第四栏表示这个文件的所属群组

在Linux 系统下,你的账号会加入于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3均属于 projecta 这个群组,假设某个文件所属的群组为 projecta,(-rwxrwx---),则 class1, class2, class3 三人对于该文件都具有可读、可写、可执行的权限(看群组权限)但如果是不属于 projecta 的其他账号,对于此文件就不具有任何权限了。

​​​​​​​5、第五栏为这个文件的容量大小,默认单位为 bytes;

​​​​​​​6、第六栏为这个文件的建档日期或者是最近的修改日期:

这一栏的内容分别为日期(/)及时间。如果这个文件被修改的时间距离现在太久,那时间部分会仅显示年份而已。 如下所示:

如果想要显示完整的时间格式,可利用 ls 的选项,即:『ls -l --full-time』就能够显示出完整的时间格式了!包括年、月、日、时间喔。 另外,如果你当初是以繁体中文安装你的 Linux 系统,那么日期字段将会以中文来显示。 可惜的是,中文并没有办法在纯文本的终端机模式中正确的显示, 所以此栏会变成乱码(目前在Centos7.6以上操作系统已经没有该问题啦,可以忽略该操作方法!!!)。 那你就得要使用『export LC_ALL=en_US.utf8』来修改语系喔!如果想要让系统默认的语系变成英文的话,那么你可以修改系统配置文件『/etc/locale.conf』,利用 nano 来修改该文件的内容,使 LANG 这个变量成为上述的内容即可。

​​​​​​​​​​​​​​7、第七栏为这个文件的档名

这个字段就是档名了。比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』例如上表中的.config 那一行,该文件就是隐藏档。 你可以使用『ls』及『ls -a』这两个指令去感受一下什么是隐藏档啰!

对于更详细的 ls 用法记得怎么查询吗?对啦!使用 ls --help man ls info ls 去看看他的基础用法去!

Linux 文件权限的重要性

Windows 系统不一样的是,在 Linux 系统当中,每一个文件都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢? 其实,最大的用途是在『数据安全性』上面的。

1、​​​​​​​系统保护的功能:

举个例子,在你的系统中,关于系统服务的文件通常只有 root 才能读写或者是执行,例如/etc/shadow 这一个账号管理的文件,由于该文件记录了你系统中所有账号的数据, 因此是很重要的一个配置文件,当然不能让任何人读取(否则密码会被窃取啊),只有 root 才能够来读取啰!所以该文件的权限就会成为[ ---------- ],所有人都不能使用?没关系,root 基本上是不受系统的权限所限制的, 所以无论文件权限为何,预设root 都可以存取喔!

​​​​​​​2、团队开发软件或数据共享的功能:

如果你有一个软件开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的文件, 而非你的团队的其他人则不予以开放呢?以上面的例子来说,testgroup 的团队共有三个人,分别是 test1, test2, test3,那么我就可以将团队所需的文件权限订为[ -rwxrws--- ]来提供给 testgroup 的工作团队使用!

​​​​​​​3、未将权限设定妥当的危害:

再举个例子来说,如果你的目录权限没有作好的话,可能造成其他人都可以在你的系统上面乱搞啰! 例如本来只有 root 才能做的开关机、ADSL 的拨接程序、新增或删除用户等等的指令,若被你改成任何人都可以执行的话, 那么如果使用者不小心给你重新启动啦!重新拨接啦!等等!那你的系统不就会常常莫名其妙的挂掉啰! 而且万一你的用户的密码被其他不明人士取得的话,只要他登入你的系统就可以轻而易举的执行一些root 的工作!

注意:在你修改你的 linux 文件与目录的属性之前,一定要先搞清楚, 什么数据是可变的, 什么是不可变的!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值