基本权限
文件属性rwx
每个文件当用ls -l查看时,都会显示文件的详细属性信息,其中在排在首位的共有10位字符信息
例如 -rw-r–rw-. 1 root root ……..
共有10位,第一位代表的是文件的类型,后边9位表示的是文件的权限属性,没3个字符为一组,从左到右,依次表示owner,group,others的权限,其中每组3个字符中又对应三种状态,分别是rwx。后边的依次是连接数,所有者,所属组,
1、权限对文件意义
r read,表示可读取文件的实际内容
w write,可以编辑、新增或者修改文件的内容,但是不包括删除该文件
x eXecute,表示该文件具有被系统执行的权限。在linux中,我们的文件能否被执行,是有x这个权限来决定的,而跟文件名没有绝对的关系
notice:当我们对一个文件有w权限是,我没只能对文件内容进行改动,而对文件本身是不具备删除权限的。对于文件的rwx来说,主要都是针对的文件内容,与文件名的存在有否没有关系。
2、权限对目录的意义
文件是存放实际数据的所在,目录的主要内容是记录文件名列表,文件名与目录有强烈的关联
r: read content in directory
表示具有读出目录结构列表的权限,所以当对一个目录具有r的权限的时候,表示我们可以查询该目录下的文件名的数据,所以可以使用ls命令将目录的内容列表显示出来
w:modify contents of directory 表示具有更改目录结构列表的权限
x:access directory
目录的x权限代表的是用户能否进入到该目录成为工作目录的用途。如果对一个目录不具备x权限,那么就无法切换到该目录下,也就无法执行该目录下的任何命令
要开放目录的权限给别人时,应该至少要给r和x的权限,但是w的权限不能随便给,因为给予w权限,就具备了对目录中文件和目录的一系列的删除、新建、重命名等操作。
文件普通权限与属性的修改
chown change owner 改变所有者
chgrp change group 改变所属组
chmod change mode 改变文件的权限
chown [-R] [owner][:[group]] File
用法 owner 或者 owner: 相当于 owner:owner 或者:group
-R 表示递归,连同子目录下的所有文件和目录
chown [-R] –reference=file1 file2
将file2的权限修改成与file1的相同
chgrp [-R] [group] file
chgrp [-R] –reference=file1 file2
将file2的用户组改成与file1相同
chmod 更改文件的权限
更改文件的权限有两种方法
1、数字类型改变文件权限
r对应数值4,w对应2,x对应1,-对应0,相应的权限位置有则计算,没有计为0,没三个相加,得到数字就是最后的权限数,例如某个文件的权限:-rwxrw-r–,对应的数字就是421420400,最后的数字就是764
chmod 764 file
2、符号类型修改文件权限
修改一类用户的所有权限:u=[rwx] g=[rwx] o=[rwx] ug=[rwx] a=[rwx] u=,g=
修改用户的某些权限或某一位权限:u+ u-g+ g-o+ o-a+ a- + –
chmod [-R] –reference=file1 file2 参考file1的文件权限,将file2修改为与file1相同
新建文件和目录的默认权限
当我们新创建一个目录或者文件时都是有权限的,那他的默认权限是怎么来的?这就与umask有关了,umask是用户在新建文件或目录时的权限默认值。系统默认的umask=0022,其中,一般用户在创建时取用后三位022,系统用户在创建时取用前三位002,并且umask的值是可以查看和设定的,直接输入umask 即为查看,输入umask #即为设定,并且可以用 umask -S 来以模式的方式产看,umask -p 显示的umask值可以被调用
新建文件的权限=最高权限-umask,新建文件的最高权限为666,新建目录的最高权限为777。
由于umask的值可以在新建文件时重新设定,所以当得到的文件权限存在可执行(奇数)位时,就在对应的权限数值上+1,例如 umask=035,得到的文件权限为631,则最后的权限应该是642
umask值其实就是在新建文件或目录时从做大权限中拿掉的权限。
文件系统的特殊权限SUID、SGID、Stick
进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
SUID
任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否拥有执行权限,启动为进进程之后,其进程的属主为源文件的属主。SUID就是让普通用户拥有可以执行“只有root权限才能执行”的特殊权限
SUID的限制与功能
1、SUID权限仅对二进制(binary program)程序有效,设置在目录上无意义
2、执行者需要对于该程序有x的可执行权限
3、本权限只在执行改程序的过程中有效
4、执行者将具有该程序所有者的权限
权限设定 chmod u+s file… chmod u-s file…
SGID
可执行(具有x权限)文件上的SGID权限
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限。启动为进程之后,其进程的属主为原程序文件的属组
权限设定:chmod g+s file… chmod g-s file…
可执行目录上的SGID权限
默认情况下,用户创建文件时,其属组为此用户所属组的主组
一旦某目录被设定SGID,则对此目录有写权限的用户,在此目录中创建的文件,所属的组为此目录的属组
通常用于创建一个协作的目录
权限设定:chmod g+s dir… chmod g-s dir…
Sticky位(粘滞位)
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky设置在文件上没有意义
权限设定:chmod o+t dir… chmod o-t dir…
当设定对应的SUID SGID和Sticky时,如果对应的属主、属组和other没有相应的x权限,那么特殊权限会由s s t变成,S S T
特殊权限的数字发设定
SUID=4,SGID=2,Sticky=1,将含有对应权限累加,得到数值后,放到普通权限三个数值的前面,即可用chmod命令设定
文件的隐藏属性chattr lsattr
文件除了上边介绍的属性之外还具有隐藏的属性,用命令chattr来修改,用lsattr来查看
chattr [+-=][ASacdistu] 文件或目录名称
选项 -R 递归,将目录中的内容依次改变
参数
+ 增加某一个特殊参数,其他参数不改变
– 删除某一个特殊参数,其他参数不改变
= 设定为后边的参数
A 当设置了A后,当访问这个文件时,文件的atime不会改变,对于I/O较慢的机器可以避免过度访问磁盘
a 当设置a属性之后,这个文件将只能增加数据,不能修改和删除数据,只有root能设置这个属性
c 文件设置c属性之后,将会自动将此文件压缩,读取时自动解压缩;进行存储的时候,会先进行压缩在存储
i 设置i属性之后,这个文件将不能被删除、改名,设置连接也无法写入或添加数据,只有root能够设置
s 当设置s属性后,文件被删除之后,将会完全从磁盘被删除,包括文件的具体数据
u 与s属性相对应的,当文件设置u属性之后,如果文件被删除,将只会删除文件的文件名,内部的具体数据依旧会存在磁盘上,可以恢复
lsattr 查看文件的隐藏属性
lsattr [-adR] 文件或目录
选项与参数:
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
-R :连同子目录的数据也一并列出来!
主机的具体权限规划:ACL
ACl是access control list的缩写,主要目的是提供传统的owner、group、others的r、w、x权限之外的具体权限设置。ACl可针对单一用户、单一文件或目录来进行rwx的权限设置,对于需要特殊权限的使用状况非常有帮助
CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt
ACL的生效顺序:所有者,自定义用户,自定义组,其他人
设置文件的ACL权限 使用setfacl命令
选项:
–m 设置文件的acl参数,不能与-x混用
-x 删除文件的acl参数,不能与-m混用
-b 清空文件所有的acl参数
-k 移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍;
-R 递归设定 acl ,亦即包括次目录都会被设定起来;
-d 设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值
-M 调用设置好的ACL权限设置文件 setfacl -M file.acl file|directory
设置方式 setfacl -m[R] u[g]:username[groupname]:[rwx权限] file[dir]
取消方式 setfacl -x[-R] u[g]:username[groupname] file[dir]
这种取消方式可能不彻底,可以使用-b选项全部取消
setfacl -m d:u:wang:rx dir d 是default,意思是将来目录下新建的文件自动有次权限,只对新文件有效,对于旧文件无效
setfacl -X file.acl directory 删除文件中的权限
用命令getfacl可以查看文件的ACL权限 getfacl file
在看到的选项中有一项是mask值,是自定义用户,自定义组的最大权限,既ACL文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限。mask只影响所有者和other的之外的人和组的最大权限。mask需要与用户的权限进行逻辑运算后,才能变成有限的权限(effective permission),用户和组的设置必须存在与mask权限设定范围内才会生效。
mask值的设置 setfacl -m mask::[权限] file
原创文章,作者:black_fish,如若转载,请注明出处:http://www.178linux.com/27526