Linux入门:文件权限、用户、用户组(比较清楚)

时间:2021-11-21 21:05:09
单个文件名或目录名长度不超过255字符;
文件或目录的绝对路径长度不超过4096字符;
 

一、文件所有者与用户组

 
 
一个文件有很多属性,包括文件类型、文件权限、文件隐藏权限、文件所有者、用户组、文件大小、创建日期、修改日期、访问日期等,比如下面是/etc/inittab文件的属性:
Linux入门:文件权限、用户、用户组(比较清楚)
Linux入门:文件权限、用户、用户组(比较清楚)
 
1.文件类型
 
(1)d:目录;find / -type d 查询;
(2)-:一般文件;find / -type f 查询;
(3)l:链接文件;find / -type l 查询;
(4)b:块设备,即存储设备,比如/dev/sda;find / -type b 查询;
(5)c:字符设备,即串行端口设备,如键盘,比如/dev/zero;find / -type c 查询;
(6)s:socket,比如/var/run/acpid.socket;find / -type s 查询;
(7)p:pipe文件,比如我们可以通过mknod mypipe p 创建pipe文件;find / -type p 查询;
 
2.文件所有者与用户组
 
首先说明一点:文件所有者与用户组本身没有什么关系,比如用户组可以是root,但是文件所有者为xiazdong;
案例分析:
(1)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为xiazdong,如果想要让文件的所有者变成root,能成功吗?不能;
(2)一个文件的文件所有者为xiazdong,用户组为root,当前登录用户为root,如果想要让文件的所有者变成root,能成功吗?能;
总结一点:改文件的所有者、用户组应该是root的职责;
 
再说明一点:一个用户总会归属于一个或多个用户组,一个用户组里可以有多个用户,比如root用户归属于root用户组,但是我们也可以创建一个用户xzdong,及归属于group1用户组,又归属于group2用户组;
 
3.文件的mtime、atime、ctime
 
mtime:文件内容修改时间;
atime:文件访问时间;
ctime:文件权限、所有者被修改的时间;
 
ls --time=atime/ctime
 
 
命令
 
chgrp、chown命令用来设置文件的所有者、用户组;
(1)chgrp xiazdong test.txt:将test.txt的文件用户组设置为xiazdong;
(2)chgrp xiazdong dir:将dir的文件用户组设置为xiazdong;
(3)chown xiazdong test.txt:将test.txt的文件所有者设置为xiazdong;
(4)chown xiazdong:root test.txt:将test.txt的文件所有者设置为xiazdong,用户组设置为root;
 
 
二、文件权限
 
 
文件权限规定了文件所有者对文件/目录的权限、文件所属用户组的成员对文件/目录的权限、其他人对于文件/目录的权限;
(1)r:可读权限;
(2)w:可写权限;
(3)x:可执行权限;
 
对于目录和文件来说,这些权限代表的意义是不同的。
对于文件来说:
(1)r:可以读取文件的内容;
(2)w:可以写入文件内容,但是不能删除文件,如果要赋予删除文件的权限,则需要指定目录权限;
(3)x:执行文件,不是每个文件都需要这个权限的,比如txt文件不需要;
 
对于目录来说:
(1)r:可以读取目录下的目录结构,即能够执行ls查看目录下的文件名;
(2)w:能够改变目录的结构,即添加、删除目录下的文件、对文件重命名;
(3)x:能够进入目录,即cd到该目录;
但是请注意:如果目录只有r,但没有x权限,则只能ls出文件名,而不能显示文件属性,如下图所示:
 
Linux入门:文件权限、用户、用户组(比较清楚)
Linux入门:文件权限、用户、用户组(比较清楚)
 
注:如果dir目录下存在test.txt文件,如果xiazdong用户没有dir的写权限,则就算对test.txt有rwx权限,也不能删除test.txt;
 
最要注意的是:不管文件权限设置成什么样了(此处只讨论一般的权限,特殊权限不算),root都能够对文件或目录rwx;
 
案例:-rwxr--r-- 表示(1)文件所有者能够对该文件可读、可写、可执行;(2)所属用户组能够对该文件可读;(3)其他人能够对该文件可读;
 
命令
 
chmod命令可以设置文件的权限;
注意:我们可以通过数字或符号设置权限;
如果是数字,则4代表r,2代表w,1代表x,如果是5代表r-x,6代表rw-,7代表rwx;
如果是符号,则a代表全部人,u代表owner,g代表group,o代表others,r就是r,w就是w,x就是x,什么都不写表示一个权限都没有;
(1)chmod 755 test.txt:赋予test.txt rwxr-xr-x
(2)chmod u=rwx,go=r test.txt:赋予test.txt  rwxr--r--
(3)chmod a=r test.txt:赋予test.txt  r--r--r--
(4)chmod a+x test.txt:给test.txt全部的人添加x权限;
(5)chmod a-x test.txt:给test.txt全部的人删除x权限;
(6)chmod u=rwx,go= test.txt:赋予test.txt  rwx------
 
以下的部分均为ext文件系统专属特性
 
 
三、文件隐藏属性
 
 
(1)a:文件只能添加,不能修改、删除;常用于日志文件;
(2) i:文件不能修改、删除,即使root也不行,用于固定不变的文件;
 
 
命令
 
1、lsattr
list attribute,即列出文件或目录的隐藏属性;
 
lsattr file:列出文件的隐藏属性;
lsattr -d dir:列出目录的隐藏属性;
 
2、chattr
 
change attribute,即修改文件或目录的隐藏属性;
(1)i:如果设置了此属性,则目录或文件不能被修改(即使root也不能修改或删除他)。
(2)a:如果设置了此属性,只能添加内容,而不能修改或删除内容;
 
chattr +ai file:添加属性;
chattr -ai file:删除属性;
chattr =a file:设置属性;
 
 
四、文件特殊权限
 
 
文件有3个特殊属性:
(1)SUID:在用户所有者的x权限位置为“s”,如/usr/bin/passwd;
(2)SGID:在用户组的x权限位置为“s”,如/usr/bin/locate;
(3)SBIT:在其他的x权限位置为“t”,如/tmp;
 
 
SUID
 
SUID只能赋予二进制文件,并且用户对该文件具有x权限时,赋予SUID才有效果;
SUID效果:当一般用户对二进制文件b有x权限,并且b文件已经设有SUID权限,当一般用户执行b时,则此用户会具有文件所有者的权限;
Linux入门:文件权限、用户、用户组(比较清楚)
Linux入门:文件权限、用户、用户组(比较清楚)
 
SGID
 
SGID能够赋予目录或文件,执行者必须具备x权限;
SGID用途:团队开发,并且一个目录是团队的共享目录,任何人在此目录中创建文件,文件的用户组都是团队,而不是个人用户组;
SGID效果:
(1)当赋予文件SGID时:当执行者执行时,此执行者会有用户组的权限;
(2)当赋予目录SGID时:执行者进入目录后,有效用户组为目录的用户组,比如用户创建一个文件,则此文件的用户组为目录的用户组;
比如创建chmodtest目录,权限为drwxrwsrwx,则用xiazdong进入该目录后创建test.txt,则test.txt的文件所有者为xiazdong,但是用户组为root;
 
Linux入门:文件权限、用户、用户组(比较清楚)
 
Linux入门:文件权限、用户、用户组(比较清楚)
Linux入门:文件权限、用户、用户组(比较清楚)
SBIT
 
只能赋予目录,如果对目录赋予SBIT之后,则用户A在此目录下创建的文件或目录只有root和用户A能删除,其他人不能删除;
 
命令
 
设置SUID、SGID、SBIT,通过chmod设置;
 
SUID:4
SGID:2
SBIT:1
 
 
(1)-rwsrw-r--:
数字表示 :chmod 4764 file,第一个数字4就是设置了SUID;
符号表示:chmod u=rwxs,g=rw,o=r file
(2)-rwxrwsr--:
数字表示 :chmod 2764 file,第一个数字2就是设置了SGID;
符号表示:chmod u=rwx,g=rwxs,o=r file
(3)-rwxrwxr-t:
数字表示 :chmod 1764 file,第一个数字1就是设置了SBIT;
符号表示:chmod u=rwx,g=rwx,o=rt file
 
u+s:加上SUID;
g+s:加上SGID;
o+t:加上SBIT;
 
http://blog.csdn.net/xiazdong/article/details/7926672