- 修改文件的属主、属组:chown
- chown [OPTION]… [OWNER][:[GROUP]] FILE…
附:[] 表示可以省略,…表示可以加多个 - 用法:
OWNER
OWNER:GROUP
:GROUP
命令里的冒号可用.号代替,这个命令只能修改属主、属组,不能添加附加组
-R:递归选项
- chown [OPTION]… [OWNER][:[GROUP]] FILE…
- 修改文件目录的属组:chgrp
chgrp [OPTION]… GROUP FILE…
-R:递归
例:chgrp group1 testfile #把文件testfile属组变成group1
chgrp group1 testdir/ #把目录testdir属组变成group1 文件权限
文件、目录权限主要针对三类对象:
- owner: 属主, u
- group: 属组, g
- other: 其他, o
文件、目录针对访问者的三种权限:
r:读、w:写、x:执行- 权限对目录和文件的影响:
- 文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程 - 目录:
r: 可以使用ls 查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l 查看此目录中文件列表,可以cd 进入此
X: 只给目录x 权限,不给文件x 权限,这个选项只针对目录设置
例:chmod -R g+rwX /testdir
- 文件:
- 权限对目录和文件的影响:
- 文件权限的操作
八进制权限表示:
权限 | 二进制 | 八进制 |
---|---|---|
— | 000 | 0 |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
例:640:rw-r—–
755:rwxr-xr-x
修改权限的时候用数字比较常见。
- chmod [OPTION]… OCTAL-MODE FILE…
-R: 递归修改权限,包括自己的权限
chmod [OPTION]… MODE[,MODE]… FILE…
MODE:
修改一类用户的所有权限:
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + -
接下来介绍下Linux文件系统的特殊权限SUID、SGID、Sticky
1. 进程访问文件的权限取决于发起者对于文件的权限,如果是文件属主,就应用文件属主权限,如果属于文件属组,就应用文件属组权限,如果都不是应用其他权限。
2. SUID权限
SUID 只对二进制可执行程序有效,设置在目录上没有意义,启动之后,进程的属主变成了原程序文件的属主,拥有原程序文件的属主的权限。
chmod u+s FILE…
chmod u-s FILE…
例:-rwsr-xr-x. 1 root root 30768 Nov 24 2015 /usr/bin/passwd #这个二进制可执行程序当普通用户使用时会暂时获得root权限,修改/etc/passwd文件内容。
3. SGID权限
SGID权限可用于二进制可执行文件也可用于目录,通常作用于目录,创建一个协作目录。启动为进程之后,其进程的属主为原程序文件的属组,SUID占据属主的执行位,s表示属主有执行权限,S表示没有执行权限
chmod g+s FILE…
chmod g-s FILE…
一旦某目录被设定了SGID ,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,SGID占据属组的执行位,s表示属组有执行权限,S表示没有执行权限
chmod g+s DIR…
chmod g-s DIR…
4. 具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权,在目录设置Sticky位,只有文件的所有者或root可以删除该文件,sticky设置在文件上无意义,Sticky占据other位执行权限,t表示有执行权限,T没有执行权限
chmod o+t DIR…
chmod o-t DIR…
5. SUID、SGID、STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
它们也可用用八进制表示权限,三个权限分别对应一位
例:chmod 4777 /tmp/a.txt
ACL访问控制列表
1. ACL可以实现灵活的权限管理,除了文件的所有者,所属组和其它人,可以对更多的用户设
置权限CentOS7默认创建的xfs和ext4文件系统具有ACL 功能,CentOS7之前版本,默认手工创建的ext4文件系统无ACL功能,需要手动增加。注:当设置了ACL权限,用ll命令查看的是mask权限
例如:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
2. ACL生效顺序:所有者,自定义用户,自定义组,其他人
例子:
getfacl file|driectory #获取文件或目录的ACL权限
setfacl -m u:user:rwx file|directory #user用户设置ACL权限
setfacl -mR u:user:rwx directory #递归设置目录ACL权限
setfacl -M file.acl file|directory #用file.acl文件设置ACL权限
setfacl -m g:group:rwx file|directory #给group设置ACL访问权限
setfacl -x u:user:rwx file|directory #删除一条userACL权限
setfacl -X file.acl file|directory #用file.acl文件设置文件目录ACL权限
setfacl -k dir 删除默认ACL 权限
setfacl –b file1 清除所有ACL
getfacl file1 | setfacl –set-file=- file2 复制file1的 的acl 权限给file2
3. 备份和恢复ACL
主要的文件操作命令cp 和mv 都支持ACL ,只是cp 命令需要加上-p 参数。但是tar 等常见的备份工具是不会保留目录和文件的ACL 信息
getfacl -R /tmp/dir1 > acl.txt #把/tmp/dir1下的所有内容的ACL权限重定向到acl.txt
setfacl -R -b /tmp/dir1 #删除目录的ACL权限
setfacl -R –set-file=acl.txt /tmp/dir1 或者 setfacl –restore acl.txt #恢复ACL权限
getfacl -R /tmp/dir1 #查看