分享

Linux文件属性

 rongq2007 2019-08-23

2019年01月27日 10:44:12 菜是原罪QAQ 

对于初学者来说,因为文件的权限与属性是学习 Linux 的一个相当重要的关卡, 如果没有这部份的概念,那么你将老是听不懂别人在讲什么呢!尤其是当你在你的屏幕前面出现了『 Permission deny』的时候,不要担心,『肯定是权限设定错误』啦!

你以普通身份登入系统,然后使用 su - 切换身份成为 root 后, 下达『ls -al 』看看,会看到底下的几个东东:

  • Tips: 由于后续的 chgrp, chown 等指令可能都需要使用 root 的身份才能够处理,所以这里建议您以 root 的身份来学习!要注意的是, 我们还是不建议你直接使用 root 登入系统,建议使用 su - 这个指令来切换身份喔!离开 su - 则使用 exit 回到普通身份即可!

在这里插入图片描述

ls 是『 list』的意思,重点在显示文件的文件名与相关属性。而选项『 -al』则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为『. 』的文件)。

如上所示,在你第一次以 root 身份登入 Linux 时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思:
在这里插入图片描述

第一栏代表这个文件的类型与权限(permission)

在这里插入图片描述
这一栏其实共有十个字符:

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

  2. 接下来的字符中,以三个为一组,且均为『 rwx』 的三个参数的组合。其中, [ r ]代表可读(read)、 [ w ]代表可写(write)、 [ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
    (1)第一组为『 文件拥有者可具备的权限』,以『 initial-setup-ks.cfg』那个文件为例, 该文件的拥有者可以读写,但不可执行;
    (2)第二组为『 加入此群组之账号的权限』;
    (3)第三组为『 非本人且没有加入本群组之其他账号的权限』。

  3. 例题:若有一个文件的类型与权限数据为『 -rwxr-xr–』,请说明其意义为何?
    先将整个类型与权限数据分开查阅,并将十个字符整理成为如下所示:
    [-][rwx][r-x][r–]
    1 234 567 890
    1 为:代表这个文件名为目录或文件,本例中为文件(-);
    234 为:拥有者的权限,本例中为可读、可写、可执行(rwx);
    567 为:同群组用户权力,本例中为可读可执行(rx);
    890 为:其他用户权力,本例中为可读( r ),就是只读之意
    同时注意到, rwx 所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。

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

每个文件都会将他的权限与属性记录到文件系统的 i-node 中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个 i-node 啰!这个属性记录的,就是有多少不同的档名连结到相同的一个 i-node 号码去就是了。

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

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

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

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

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

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

如果想要显示完整的时间格式,『 ls -l --full-time』即可。

另外,如果你当初是以繁体中文安装你的 Linux 系统,那么日期字段将会以中文来显示。 可惜的是, 中文并没有办法在纯文本的终端机模式中正确的显示,所以此栏会变成乱码。 那你就得要使用『 export LC_ALL=en_US.utf8』来修改语系喔!

如果想要让系统默认的语系变成英文的话,那么你可以修改系统配置文件『 /etc/locale.conf』,利用之前谈到的 nano 来修改该文件的内容,使 LANG 这个变量成为上述的内容即可。

第七栏为这个文件的档名

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

  • Tips 对于更详细的 ls 用法,还记得怎么查询吗?对啦!使用 ls --help 或 man ls 或 info ls去看看他的基础用法!自我进修是很重要的。

总结

这七个字段的意义是很重要的!务必清楚的知道各个字段代表的意义!尤其是第一个字段的九个权限,那是整个 Linux 文件权限的重点之一。
下面我们来做几个简单的练习,你就会比较清楚了:

  1. 例题:假设 test1, test2, test3 同属于 testgroup 这个群组,如果有下面的两个文件,请说明两个文件的拥有者与其相关的权限为何?
    -rw-r–r-- 1 root root 238 Jun 18 17:22 test.txt
    -rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai

  • 文件 test.txt 的拥有者为 root,所属群组为 root。至于权限方面则只有 root 这个账号可以存取此文件,其他人则仅能读此文件;

  • 另一个文件 ping_tsai 的拥有者为 test1,而所属群组为 testgroup。其中:
    (1)test1 可以针对此文件具有可读可写可执行的权力;
    (2)而同群组的 test2, test3 两个人与 test1 同样是 testgroup 的群组账号,则仅可读可执行但不能写(亦即不能修改);
    (3)至于没有加入 testgroup 这一个群组的其他人则仅可以读,不能写也不能执行!

  1. 例题
    承上一题,如果我的目录为底下的样式,请问 testgroup 这个群组的成员与其他人(others)是否可以进入本目录?
    drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/

  • 文件拥有者 test1[rwx]可以在本目录中进行任何工作;

  • 而 testgroup 这个群组[r-x]的账号,例如 test2, test3 亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;

  • 至于 other 的权限中[r–]虽然有 r ,但是由于没有 x 的权限,因此 others 的使用者,并不能进入此目录!

补充:Linux 文件权限的重要性

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

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

  2. 团队开发软件或数据共享的功能
    此外,如果你有一个软件开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的文件, 而非你的团队的其他人则不予以开放呢?以上面的例子来说, testgroup 的团队共有三个人,分别是 test1, test2,test3,那么我就可以将团队所需的文件权限订为[ -rwxrws— ]来提供给 testgroup 的工作团队使用啰! (怎么会有 s 呢?没关系,这个我们在后续章节再讲给你听! )

  3. 未将权限设定妥当的危害
    再举个例子来说,如果你的目录权限没有作好的话,可能造成其他人都可以在你的系统上面乱搞啰! 例如本来只有 root 才能做的开关机、 ADSL 的拨接程序、新增或删除用户等等的指令,若被你改成任何人都可以执行的话, 那么如果使用者不小心给你重新启动啦!重新拨接啦!等等的!那么你的系统不就会常常莫名其妙的挂掉啰! 而且万一你的用户的密码被其他不明人士取得的话,只要他登入你的系统就可以轻而易举的执行一些 root 的工作!可怕吧!因此, 在你修改你的 linux 文件与目录的属性之前,一定要先搞清楚, 什么数据是可变的,什么是不可变的!千万注意啰!接下来我们来处理一下文件属性与权限的变更吧!

Linux文件和目录的属性及权限总结

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多