文件权限
用户权限(**user**) | 组权限(group) | 其他用户 | ||||||
---|---|---|---|---|---|---|---|---|
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
- 每一类用户都有3个权限
- r:读取权限, 只读
- w: 写入权限 , 可以编辑文件
- x: 执行权限, 由于某些文件是可以执行的,如有有执行权限才可以执行
- 操作权限
-c | 若该文件权限确实已经更改,才显示其更改动作 |
---|---|
-f | 若该文件权限无法被更改也不显示错误讯息 |
-v | 显示权限变更的详细资料 |
-R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更) |
chgrp-更改文件的用户组
语法格式: chgrp [参数] [目录]
常用参数:
-c | 效果类似”-v”参数,但仅回报更改的部分 |
---|---|
-f | 不显示错误信息 |
-h | 对符号连接的文件作修改,而不更动其他任何相关文件 |
-R | 递归处理,将指定目录下的所有文件及子目录一并处理 |
chown-更改文件或目录的用户和用户组
语法格式:chown [参数]
常用参数:
-R | 对目前目录下的所有文件与子目录进行相同的拥有者变更 |
---|---|
-c | 若该文件拥有者确实已经更改,才显示其更改动作 |
-f | 若该文件拥有者无法被更改也不要显示错误讯息 |
-h | 只对于连结(link)进行变更,而非该 link 真正指向的文件 |
-v | 显示拥有者变更的详细资料 |
常见的权限操作
授权
$ chmod 777 file/dir
添加可执行权限
$ chmod +x file
导出以及恢复文件的权限
导出文件的权限
$ getfacl -R ./ > chmod.txt
从导出的权限文件中恢复文件的权限
$ setfacl --restore=chmod.txt
Linux下的s、t、i、a权限
s:文件属主和组设置SUID和GUID
文件在被设置了s
权限后将以root身份执行。在设置s
权限时文件属主、属组必须先设置相应的x
权限,否则s
权限并不能正真生效(chmod
命令不进行必要的完整性检查,即使不设置x
权限就设置s
权限,chmod
也不会报错,当ls -l
时看到rwS
,大写S
说明s
权限未生效)。Linux修改密码的passwd便是一个设置了SUID的程序,普通用户无读写/etc/shadow文件的权限但是却可以修改自己的密码。
ls -al /usr/bin/passwd
-rwsr-xr-x 1 root root 32988 2008-12-08 17:17 /usr/bin/passwd
可以通过字符模式设置s
权限:chmod a+s filename
,也可以使用绝对模式进行设置:
设置suid:将相应的权限位之前的那一位设置为4; 设置guid:将相应的权限位之前的那一位设置为2; 两者都置位:将相应的权限位之前的那一位设置为4+2=6。
如:
chmod 4764 filename //设置SUID
t :设置粘着位
一个文件可读写的用户并一定想让他有删除此文件的权限,如果文件设置了t
权限则只用属主和root有删除文件的权限,通过chmod +t filename
来设置t
权限。
i:不可修改权限
例:chattr +i filename
则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename
就可以了。查看文件是否设置了i
权限用lsattr filename
命令。
a:只追加权限
对于日志系统很好用,这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a
设置追加权限。