在Linux系统中,文件具有三种身份,即属主、属组和其他,每种身份对应可读(r)、可写(w)、可执行(x)三种权限。
用户访问文件时,首先判断用户是否为文件的属主,若是属主则安照属主权限访问,若不是属主,判断用户是否文件属组的组成员,若是组成员,则安照组权限访问,否则安照其他人权限访问文件。
权限 | 文件 | 目录 |
---|---|---|
r权限 | 具有读取文件内容权限,只能使用查看类命令cat、head、tail、less、more | 具有浏览目录和子目录权限,仅仅能浏览目录内的文件名,无其它操作权限 |
w权限 | 具有新增、修改文件内容权限,不能删除文件,需参考上级目录是否具有w权限 | 具有增加、删除或修改目录内文件名权限,不能进入目录、不能复制目录、不能删除目录、不能移动目录 |
x权限 | 具有执行文件权限 | 具有访问目录内容权限,只能进入目录,不能浏览、复制、移动、删除 |
rw权限 | 可以查看和编辑文件内容 | 能看,能写,但无法进入目录 |
rx权限 | 允许查看和执行文件,当不能修改文件 | 允许浏览目录文件及子目录,允许在目录内新建文件 |
rwx权限 | 能读,能写、能执行,当不能删除,需参考上级目录是否有w权限 | 能看,能写,能进入目录,能删除内容,能写入内容 |
对于文件来说,写的权限和执行的权限,都需要有读权限配合,如果想对文件进行操作,必须对文件赋予读的权限;
对于目录来说,写的权限和读的权限,都需要有执行权限配合,如果想对目录进行操作,必须对目录赋予执行的权限
一个普通文件默认权限: 644 保证属主用户对文件可以编辑 保证其他用户可以读取文件内容
一个目录文件默认权限: 755 保证属主用户对目录进行编辑 保证其他用户可以读取目录中的信息,可以进入到目录中
// 设置所有人权限
chmod a=[MODE] filename
// 设置用户、组、其它人权限
chmod u=[MODE],g=[MODE],o=[MODE] filename
// 添加执行权限
chmod u+x filename
// 数字形式设置文件权限
chmod 644 filename
// 递归修改权限
chmod -R 755 dir/subdir
chown [OPTION]... [OWNER][:[GROUP]] FILE...
如:
chown -R mysql:mysql /data/mysql
SUID权限让普通用户对可执行二进制文件,临时拥有二进制文件的属主权限,如果设置的二进制文件没有执行权限,则SUID 权限为S。SUID权限仅对二进制文件有效,对文件和目录无效。
添加SUID权限
chmod 4755 /usr/bin/passwd 或chmod u+s /usr/bin/passwd
将目录设置SGID权限后,在该目录下创建目录和文件,都与该目录的属组保持一致。
添加SGID权限
chmod 2755 dirname 或 chmod g+s dirname
Sticky粘滞位仅对目录有效,让多个用户具有读写权限,且只能删除自己的文件。
添加SBIT权限
chmod 1755 /tmp 或 chmod o+t /tmp
chattr用来修改文件系统的权限属性
chattr [+-=] [选项] filename | dirname
a:让文件或目录仅可追加内容
i:不得更改文件或目录
umask设置文件和目录的默认权限,系统默认umask=022,默认目录权限777-022=755,默认文件权限666-022=644
umask属性在/etc/bashrc、/etc/profile、 ~/.bashrc、/.bash_profile
原文:https://blog.51cto.com/12631595/2665136