权限管理
文件权限
文件的权限主要针对三类对象进行定义
owner: 属主, u group: 属组, g other: 其他, o
每个文件针对每类访问者都定义了三种权限
r: Readable 读 w: Writable 写 x: eXcutable 执行
对于文件类型
r: 可使用文件查看类工具获取其内容 w: 可修改其内容 x: 可以把此文件提请内核启动为一个进程
目录:
r: 可以使用ls 查看此目录中文件列表 w: 可在此目录中创建文件,也可删除此目录中的文件 x: 可以使用ls -l 查看此目录中文件列表,可以cd 进入此 X: 只给目录 x 权限,不给文件x
文件权限操作
使用 ls -l 命令可查看文件权限
权限组合机制:
权限数字的含义:八进制数字
--- 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:change mode 修改文件权限
语法:chmod 选项 参数
选项: -c, --changes 类似 --verbose,但只在有更改时才显示结果
-f, --silent, --quiet 去除大部份的错误信息
-v, --verbose 为处理的所有文件显示诊断信息
-R, --recursive:递归修改
三类用户:
u:属主
g:属组
o:其它
a: 所有
三种表示法:
mode表示法:
赋值表示法:直接操作一类用户的所有权限位rwx
u=rw 表示属主可读写缺不可执行
g=rx 表示属组可读可执行却不可改
o=rwx 表示其他用户可以读写执行
a=rw 表示所有用户可读可写
授权表示法:直接操作一类用户的一个权限位r,w,x
u+rw, u-rw
g+rw, g-w
o+rw, o-w
a+rw, a-w
8进制表示法:
chmod 664 file
引用其他人的文件访问权限:
chmod --reference=/etc.issue /app/a
参数: 指定修改的文件
实例:
# chmod u=rw,g=w,o=wx file # 给file文件的属主读写权限,属组写权限,其他用户写执行权限
# chmod u-x,o+r file # 给file文件的属主解除执行权限,其他用户增加读权限
# chmod 664 file # 给file文件的属主读写权限,属组的读写权限,其他用户写权限
# chmod --reference=/etc/issue /app/file # 将file文件的权限改为和issue的权限一样
注意:用户仅能修改属主为自己的那些文件的权限;
- chown:修改文件的所有者或所属组
语法:chown 选项 参数
选项:
-c 或--changes 效果类似"-v"参数,但仅回报更改的部分。
-f 或--quite 或--silent 不显示错误信息。
-h 或--no-dereference 之对符号连接的文件作修改,而不更动其他任何相关文件。
-R 或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v 或--version 显示指令执行过程。
--reference=<参考文件或目录> 把指定文件或目录的拥有者与所属群组全部
设成和参考文件或目 录的拥有者与所属群组相同。
参数:指定文件及其所有者或组
实例:
# chown lpx:root nginx.conf #将nginx.conf所属用户和组改为lpx,root
# chown -R lpx:root www #将www目录,所属用户和组改为lpx,root
- chgrp:修改文件的组所有权
语法:chown 选项 参数
选项:
-c, --changes # 详细描述对每一个文件的动作:实际上改变了哪个组。
-f, --silent, --quiet # 不列出错误信息.(那些组不能被改变).
-h, --no-dereference # 作用于符号链接本身代替它所指向的. 仅可用于 lchown 系统调用被提供时.
-v, --verbose # 详细描述作用或没作用的所有文件.
-R, --recursive # 递归的改变目录和它的内容的组所有权
参数:指定修改的文件
实例:
# chgrp lpx file #改变用户组
# chgrp -R lpx dir #改变dir目录,以及目录下的所有文件所属组
# chgrp -R 100 file #通过群组识别码改变文件群组属性
umask:文件的权限反向掩码,遮罩码;
文件: 666-umask +1 目录: 777-umask 注意: 之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1; umask: 023 666-023 = 643+1 文件默认+1 777-023 = 754 目录不需+1 umask命令: umask:查看当前umask umask MASK: 设置umask 注意:此类设定仅对当前shell进程有效;
特殊权限
默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行;
可执行文件上SUID
SUID的功用:用户运行某程序时,如果此程序拥有SUID权限, 那么程序运行为进程时,进程的属主不是发起者,而程序文件自己的属主; 启动为进程之后,其进程的属主为原程序文件的属主 SUID 只对二进制可执行程序有效 SUID 设置在目录上无意义 权限设定: chmod u+s FILE chmod u-s FILE SUID: user, 占据属主的执行权限位 s: 属主拥有x 权限 S :属主没有x 权限
SGID:
功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组, 且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组; 启动为进程之后,其进程的属组为原程序文件的属组 权限设定: chmod g+s FILE chmod g-s FILE SGID: group, 占据属组的执行权限位 s: group 拥有x 权限 S :group 没有x 权限
Sticky
功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的 已有文件;如果为此类目录设置Sticky权限,则每个用户能创建新文件,且只能删除自己的文件; sticky 设置在文件上无意义 权限设定: chmod o+t dir chmod o-t dir Sticky: other, 占据other 的执行权限位 t: other 拥有x 权限 T :other 没有x 权限 注意:系统上的/tmp和/var/tmp目录默认均有sticky权限;
特殊权限数字法
suid sgid sticy 八进制权限 0 0 0 0 无权限 0 0 1 1 sticy 0 1 0 2 sgid 0 1 1 3 sgid sticy 1 0 0 4 suid 1 0 1 5 suid sticy 1 1 0 6 suid sgid 1 1 1 7 suid sgid sticy 基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字; 例如:chmod 4777 /tmp/a.txt srwx
设定文件特定属性
chattr +i file # 不能删除,改名,更改 chattr +a file # 只能追加内容 lsattr file # 显示特定属性