一、权限定义
1、文件权限作用的对象
owner :属主 — u
group :属组 — g
other :其他人 — o
2、文件的三种权限
//针对文件的权限
r 可读 可以使用cat命令查看文件的类容
w 可写 可以编辑或删除文件
x 可执行 在命令行界面下当做命令提交给内核执行
//针对目录的权限
r 可读 可以使用ls命令查看目录里面包含哪些文件
w 可写 可以在此目录中创建其他的文件或删除此目录中的文件
x 可执行 可以使用cd命令切换至此目录,也可以使用ls -l查看目录内部文件的详细信息
3、r、w、x 权限与十进制的转换
r — 4
w — 2
x — 1
二、权限管理命令
1、chmod —— 修改权限命令(可以修改文件或目录)
chmod
-R(recursive):递归处理,将该目录下的所有文件及子目录一起处理
+:开启权限范围的文件或目录的该选项权限设置;
-:关闭权限范围的文件或目录的该选项权限设置;
=:指定权限范围的文件或目录的该选项权限设置;
示例
chmod u+r filename
chmod g+w filename
chmod o+x filename
chmod u-r filename
chmod g-w filename
chmod o-x filename
chmod u=rwx filename
chmod g=rw filename
chmod o=x filename
chmod a+r filename
chomd a+w filename
chomd a+x filename
chomd a-r filename
chomd a-w filename
chomd a-x filename
chomd a=rw filename
chomd a=x filename
2、chown —— 修改文件或目录的属主或属组权限的命令
chown
-R(recursive):递归处理,将指定目录下的所有文件及子目录一并处理
示例
chown username:groupname filename //修改属主和属组
chown username.groupname filename //可以使用点代替冒号
chown username filename //只修改属主
chown :groupname filename //只修改属组
chown .groupname filename
chown -R username:groupname filename //递归修改文件属主和属组
三、遮罩码
1、什么是遮罩码
在Linux系统创建一个文件或目录时,一个文件的权限是644,而一个目录的权限时755,这些看上去好像是固定的?
仔细看看就会发现:
1️⃣:该文件都没有执行的权限;且该文件除了属主以外,其他的都没有写和执行的权限;
2️⃣:而目录除了属主以外,其他=都没有写的权限。这些都是由umask遮罩码控制的,遮罩码umask的目的就隐藏一些权限。
3️⃣:umask的默认大小是0022
4️⃣:文件的最终权限是:文件:666 — umask (0022;第一个不用减,从第二个开始;666 — 0022=644)
5️⃣:目录的最权限:目录:777 — umask (0022;第一个不用减,从第二个开始;777—0022=755)
2、查看遮罩码
[root@localhost ~]# umask
0022
四、Linux安全上下文
1、进程有属主和主组;文也有属主和属组
任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限
启动为进程后,其进程的属主为发起者,属组为发起者所属的组
进程访问文件时的权限取决于进程的发起者
进程的发起者是文件的属主时,则应用文件属主权限
进程的发起者是文件的属组时,则应用文件属组权限
应用文件“其它”权限
五、特殊权限
1、SUID(4)、SGID(2)、Sticky(1)
SUID
十进制:4
chmod u+s filename
chmod u-s filename
或者
chomd 4644 filename
//如果file本身原来就有执行权限,则SUID显示为s(小写),否则显示为S(大写)
SGID
十进制:2
chmod g+s filename
chomd g-s filename
或者
chmod 2644 filename
//如果file本身原来就有执行权限,则SGID显示为s(小写),否则显示为S(大写)
Sticky
十进制:1
chomd o+t filename
chomd o-t filename
或者
chmod 1644 filename
//如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
2、示例
//SUID
[root@localhost ~]# touch file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod u+x file
[root@localhost ~]# ll file
-rwxr--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod u+s file
[root@localhost ~]# ll file
-rwsr--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod u-x file
[root@localhost ~]# ll file
-rwSr--r--. 1 root root 0 8月 6 16:02 file
//SGID
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod g=rwx file
[root@localhost ~]# ll file
-rw-rwxr--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod g+s file
[root@localhost ~]# ll file
-rw-rwsr--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod g-x file
[root@localhost ~]# ll file
-rw-rwSr--. 1 root root 0 8月 6 16:02 file
//Sticky
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod o=rwx file
[root@localhost ~]# ll file
-rw-r--rwx. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod o+t file
[root@localhost ~]# ll file
-rw-r--rwt. 1 root root 0 8月 6 16:02 file
[root@localhost ~]# chmod o-x file
[root@localhost ~]# ll file
-rw-r--rwT. 1 root root 0 8月 6 16:02 file
或
//SUID
[root@localhost ~]# touch file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 4644 file
[root@localhost ~]# ll file
-rwSr--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod u+x file
[root@localhost ~]# ll file
-rwsr--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 0644 file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
//SGID
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 2644 file
[root@localhost ~]# ll file
-rw-r-Sr--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod g+x file
[root@localhost ~]# ll file
-rw-r-sr--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 0644 file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
//Sticky
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 1644 file
[root@localhost ~]# ll file
-rw-r--r-T. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod o+x file
[root@localhost ~]# ll file
-rw-r--r-t. 1 root root 0 8月 6 16:09 file
[root@localhost ~]# chmod 0644 file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 8月 6 16:09 file