您的位置:首页 > 运维架构 > Linux

linux文件属性及权限详解(整理自鸟哥)

2010-05-25 11:29 471 查看
学习linux的基础知识,对文件属性的清除认识是重点之一
在坛子里发现这方面的帖子不是很多,
所以,给大家找了点资料,整理一下发出来:
希望对大家有所帮助
首先我们root登录系统后输入ls –al 会有如下所示:
[root@tsai root]# ls -al
total 64
drwxr-x--- 4 root root 4096 Feb 14 22:02 .
drwxr-xr-x 23 root root 4096 Feb 16 13:35 ..
-rw-r--r-- 1 root root 1210 Feb 10 06:03 anaconda-ks.cfg
-rw------- 1 root root 12447 Feb 14 23:22 .bash_history
-rw-r--r-- 1 root root 24 Jun 11 2000 .bash_logout
-rw-r--r-- 1 root root 234 Jul 6 2001 .bash_profile
-rw-r--r-- 1 root root 217 Feb 9 22:06 .bashrc
-rw-r--r-- 1 root root 210 Jun 11 2000 .cshrc
drwx------ 2 root root 4096 Feb 14 21:54 .gnupg
-rw------- 1 root root 8 Feb 14 22:05 .mysql_history
drwx------ 2 root root 4096 Feb 10 00:44 .ssh
-rw-r--r-- 1 root root 196 Jul 11 2000 .tcshrc
-rw-r--r-- 1 root root 1126 Aug 24 1995 .Xresources
整体上属性分七栏
第一栏  [文件属性]
第二栏  [文件数]
第三栏  [拥有者]
第四栏  [所有者群组]
第五栏  [大小]
第六栏  [建档日期]
第七栏  [档名]
ls 是『list』的意思,与在早期的 DOS 年代的 dir 类似功能。而参数『-al』则表示列出所有的文件(包含隐藏档,就是档名前面第一个字符为 . 的那种文件)。如上所示,在你第一次以 root 身份登入Linux 时,如果你输入指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思:
1. 第一栏代表这个文件的属性:这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其
实共有十个属性:
• 第一个属性代表这个文件是『目录、文件或连结文件』:
• 当为[ d ]则是目录,例如上表的第 11 行;
• 为[ - ]则是文件,例如上表的第 5 行;
• 若是[ l ]则表示为连结档(link file);
• 若是[ b ]则表示为装置文件里面的可供储存的接口设备;
• 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标。
• 接下来的属性中,三个为一组,且均为『rwx』的三个参数的组合。其中,[ r ]代表可读、
[ w ]代表可写、[ x ]代表可执行:
• 第一组为『拥有人的权限』,以第五行为例,该文件的拥有人可以读写,但不可执
行;
• 第二组为『同群组的权限』;
• 第三组为『其它非本群组的权限』。
范例:若有一个文件的属性为『-rwxr-xr--』,简单的可由下面说明之:
[-][rwx][r-x][r--]
1 234 567 890
1 为:代表这个文件名为目录或文件(上面为文件)
234为:拥有人的权限(上面为可读、可写、可执行)
567为:同群组使用者权限(上面为可读可执行)
890为:其它使用者权限(上面为仅可读)
上面的属性情况代表一个文件、这个文件的拥有人可读可写可执行、但同群组的人仅可读与执行,非同群组的使用者仅可读的意思!
• 除此之外,需要特别留意的是 x 这个标号!若文件名为一个目录的时候,例如上表中的 .
ssh 这个目录:
drwx------ 2 root root 4096 Feb 10 00:44 .ssh
可以看到这是一个目录,而且只有 root 可以读写与执行。但是若为底下的样式时,请问
非 root 的其它人是否可以进入该目录呢?
drwxr--r-- 2 root root 4096 Feb 10 00:44 .ssh
咦!似乎好像是可以喔!因为有可读[ r ]存在嘛!『错!』答案是非 root 这个账号的其它使用者均不可进入 .ssh 这个目录,为什么呢?因为 x 与 目录的关系相当的重要,如果您在该目录底下不能执行任何指令的话,那么自然也就无法执行 ls, cd 等指令,所以啰,
也就无法进入了,因此,请特别留意的是,如果您想要开放某个目录让一些人进来的话,
请记得将该目录的 x 属性给开放!
• 另外,你也必须要更加的小心的是,在 Windows 底下一个文件是否具有执行的能力是藉
由『附档名』来执行的,例如:.exe, .bat, .com 等等,但是在 Linux 底下,我们的文件是否能执行,则是藉由是否具有 x 这个属性来决定的!所以,跟档名是没有绝对的关系的!
这点还请特别留意呢!
2. 第二栏表示为连结占用的节点 (i-node) ( 若为目录时,通常与该目录底下还有多少目录有关 )这
部分将在介绍连结 link 文件时 (下一节) 再深入的介绍;
3. 第三栏表示这个文件(或目录)的『拥有人』;
4. 第四栏表示拥有人的群组;
这里再次解释一下,在 Linux 中,你的 ID ( 如 root 或 test 等账号均是所谓的 ID ) 即是你的身份,而且你还有附属在一个或多个群组之下,例如刚刚我们上面提到的,你有一个团体 ( 即群组 ) 代号为 testgroup ,且这个群体里有三个人,其代号分别是 test1, test2, 与 test3,则这三个人为同一群组即 testgroup!那么如果以上图的[-rwxrwx---]的文件属性来看,如果该文件属于test1 所有,那么 test2, test3 亦有读、写、执行的权力,因为他们都属于同一个 group 呀!而如果您不是属于 test1, test2, test3 的任何一个人,也不属于 testgroup 这个群组时,那么您将不具备读、写、执行这个文件的权限了!
5. 第五栏为这个文件的大小;
6. 第六栏为这个文件的建档日期或者是最近的修改日期,分别为月份、日期及时间。请特别留意,
如果您是以繁体中文来进行安装您的 Linux 时,那么预设的语系可能会被改为中文。而由于中
文无法显示在文字型态的终端机上面,所以这一栏会成为怪怪的乱码,这个时候,请修改一下
/etc/sysconfig/i18n 这个文件,里面的『 LC_TIME 』修改为:『 LC_TIME=en 』再储存离开,
再登入一次,就可以得到英文字形显示的日期了!那么如何修改该文件呢?呵呵!以 root 身份
用 vi 修改! ;
7. 第七栏为这个文件的档名,如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』,例如:上表第 6 行的『.bashrc_history』档名即是隐藏档,由于我们有下一个参数为 ls -al,所以连隐藏档都列出来,如果你只输入 ls 则档名有加『 . 』的文件就不会被显示出来!
• 例题一:如果有下面的两个文件:
-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。其中, test1 可以针对此文件具有可读可写可执行的权力,而同群组的 test2, test3 两个人与 test1 同样是testgroup 的群组账号,则仅可读可执行但不能写 (亦即不能修改),至于非 testgoup 这一个群组的人则仅可以读,不能写也不能执行!
• 例题二:如果我的目录为底下的样式:
drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/
请问 testgroup 这个群组的成员与其它人( others )是否可以进入本目录?
答:
• 文件拥有者 test1 可以在本目录中进行任何工作;
• 而 testgroup 这个群组的账号,例如 test2, test3 亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
• 至于 other 的权限中虽然有 r ,但是由于没有 x 的权限,因此 others 的使用者,并不能进入此目录!

===========================================================================

linux文件属性 t

一般是在目录文件的exacute位上,对于这个t属性,表示为sticky,有了这个属性就可以阻止非属主删除此目录中的文件(仅当该目录所有人可写是才有意义),非属主就是创建该目录或文件的用户和组之外的用户。比如spool文件夹就有一个trwxrwxrwx属性,意思是说spool是任何人都可写,读,执行,有了个t之后就是说谁创建的谁能删除。
我们要打印的东西可以放到spool中去,所以每个人都可以打印东西,但不能把别人要打印的给删掉。

linux文件属性 s

setuid和setgid 位

setuid 和setgid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。比如我们用普通用户运行passwd命令来更改自己的口令,实际上最终更改的是/etc/passwd文件。我们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改。

[root@localhost ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 2379 04-21 13:18 /etc/passwd


作为普通用户如果修改自己的口令通过修改/etc/passwd肯定是不可完成的任务,但是不是可以通过一个命令来修改呢。答案是肯定的,作为普通用户可以通过passwd 来修改自己的口令。这归功于passwd命令的权限。我们来看一下;

[root@localhost ~]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 02-12 16:15 /usr/bin/passwd


因为/usr/bin/passwd 文件已经设置了setuid 权限位(也就是r-s--x--x中的s),所以普通用户能临时变成root,间接的修改/etc/passwd,以达到修改自己口令的权限。

我们知道Linux的用户管理是极为严格的,不同的用户拥有不同的权限,为了完成只有root用户才能完成的工作,我们必须为普通用户提升权限,最常用的方法就是su或sudo。虽然setuid 和setgid也是让普通用户超越自身拥有的普通权限达到root权限的方法,但我不推荐大家使用,因为它能为系统带来安全隐患!!

注意:setuid和setgid会面临风险,所以尽可能的少用,了解了解既可~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: