红帽Linux — 2控制对文件的访问
文章目录
一、Linux文件系统权限
权限类型
文件的权限有三种用户类别:文件所有者、所属组、其他人
每类用户对文件的权限又可分为三种:读、写、执行
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r | 可以读取文件内容 | 可以列出目录的内容(文件名) |
w | 可以更改文件内容 | 可以创建、删除目录中的任一文件 |
x | 可以作为命令执行文件 | 可以进入访问目录(查看文件详细信息等) |
权限的表示
drwxrw-r--
文件类型、所有者、所属组、其他人
数字加权:764
r=4,w=2,x=1
文件类型有:-(常规文件)、d(目录)、l(软链接)、其它字符(b、c:硬件设备,p、s:特殊用途文件)
例子
- 例1:用户对目录有 r-x 权限,可以列出和查看目录下文件的信息。如果只有 r 权限,就只能列出文件,而无法查看到文件的详细信息。
- 例2:用户对目录有 x 权限,将可以进入目录,但没法列出文件。若用户同时对文件有 r 权限,则 可以通过具体文件的指向来查看这个文件,但是无法编辑文件。
- 例3:用户对目录有 rw 权限,对文件有 r 权限,用户不能编辑文件,但有时候乱配一通后发现可以保存,这是为什么呢?(可能在vim中编辑保存时用了:w!,相对于借用root权限)
- 例4:tom 是 1.txt 的所有者,具有 r-- 权限。tom 的补充组是 ken,对 1.txt 具有 r-x 权限,那 tom 的权限是?(r-x)
ls -ld /home
ls 中的-d
可以显示目录本身,而不是其内容
二、管理文件系统权限
修改文件权限
chmod指令结构
chmod <who> <what> <which> <file|directory>
- who:u、g、o、a user、group、others、all
- what:+、-、= 增加权限、减少权限
- which:r、w、x(X) 读、写、执行
赋予权限
-
+x:赋予文件可被执行的权力
chmod +x <file>
,或赋予某对象执行该文件的权力chmod a+x <file>
,赋予一个目录下所有文件可执行的权限需要-R,chmod g+x -R <dir>
-
+X:当文件是个目录或是被设定为某用户可执行的文件时,+X等价于+x,否则不改变其可否被执行的权力
chmod a+X <file>
例子
-
例1、修改 1.txt 的所有者权限为完全控
chmod u=rwx 1.txt #直接指定某对象的权限
-
例2:修改 2.txt 的权限为所有用户完全控制
chmod 777 1.txt #可以使用数字加权的方法设定所有用户的权限
-
例3:要求其他用户对 1.txt 具有执行权限(例如:脚本)
chmod o+x 1.txt #不考虑原来的权限,直接添加或减少某个权限
-
例4:将 test 目录及子目录子文件的权限都设置为 rwx
chmod -R a=rwX test #使用 -R 选项实现递归设置
注:在递归设置权限时,设计执行权限,可用大写X,若文件原本可被某一用户执行或是目录,则按设置的指令更改其被其他用户执行的权力,否则不改变其执行权限
小测验
练习
1.C 2.A × => B √ 3.D
4.A 5.C 6.D
答案
修改文件的所有者和所属组
chown <user> <file|dir> #命令的参数(执行对象)通常是在末尾
chgrp <group> <file|dir>
-
例1:修改 1.txt 所有者为 tom,所属组改为 group1
chown tom 1.txt chgrp group1 1.txt 或 chown tom:group1 1.txt #同事修改文件的所有者和所属组
注:只有root用户可以修改文件的所有者;而所有者可以修改文件的所属组。
三、管理特殊权限和默认权限
执行文件时的特殊权限
权限 | 权值 | 操作符 | 对文件的影响 | 对目录的影响 |
---|---|---|---|---|
SUID | 4 | u+s或S | 执行文件时,以文件所有者身份运行文件 | - |
SGID | 2 | g+s或S | 以所有组身份运行文件 | 在具有 sgid 权限的目录下创建子项目时, 继承上级的所属组 |
SBIT | 1 | o+t或T | - | 具有 t 权限的目录,目录下的文件和子目录 只能被所有者或 root 用户删除 |
- 在权限属性中,特殊权限会占用执行权限的位置
- 此时小写表示原位置有x权限,大写表示无x权限
- 其加权数值为四位,第一位记录特殊权限的权值
例子
-
-r-sr-Sr--
6544
-
-rwsrw-rw-
4766
默认权限
系统中默认权限:目录是0777,文档是0666(所有文件都无执行权限)
umask概念
umask:在默认权限的基础上减去 umask 就是新建目录/文件的权限。
-
配置文件: /etc/bashrc
-
默认值:0002
-
分配规则:若UID为200或以上,且用户名与组名相同则分配值为002的umask,否则分配022。新建用户的umask为0002
-
umask通常还会设置为:
-
0:其他人将具有对目录和文件的执行权限
-
027:其他人将没有任何权限,可以确保只有所有者和所属组具有权限。
-
临时修改umask
umask #查看当前umask
umask XXXX #设置临时umask,重启后失效
永久性的更改 umask 两种方法
1、改两个文件
用户的系统默认umask值在 /etc/profile
和 /etc/bashrc
文件中,用户可以在其主目录的 .bash_profile
和 .bashrc
文件中覆盖系统默认值。
2、新建个脚本文件
新建个脚本文件 /etc/profile.d/local-umask.sh
修改不同UID范围的,UID与GID是否相等的,账户的umask值
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 007
else
umask 022
fi
改完后reboot
重启生效
sh代码中整数比较大小
指令 | 英文 | 含义 |
---|---|---|
-eq | equal to | 等于 |
-ne | not equal to | 不等于 |
-gt | greater than | 大于 |
-ge | greater than or equal to | 大于等于 |
-lt | less than | 小于 |
-le | less than or equal to | 小于等于 |
参考资料:Red Hat Training and Certification