3.5文件和目录的权限

1.文件的权限

用于控制进程对系统中文件和目录的访问

权限的三个级别

​ 文件主、同组用户、其他用户

​ 每个文件都有唯一的属主

普通文件的执行

​ 读、写、可执行

​ 不可写文件也有可能被删除

可执行文件:

​ (1)程序文件(可执行文件)

​ (2)脚本文件:文本文件

​ 默认的解释程序为/bin/bash

​ 可以在脚本文件的第一行自行指定解释程序,必须是第一行

#! /bin/bash

​ 脚本程序运行时,其实是解释程序创建了一个进程

2.目录的权限

目录的读写权限:

​ (1)读权限:若无读权限,那么目录表文件不许读,ls会失败

​ (2)写权限:若无写权限,目录表文件不许写。

​ 写权限包括在该目录中创建文件、删除文件、文件重命名,这些都会修改目录文件

​ 而修改文件会修改i节点。

​ 目录无写权限不是指目录下的所有文件禁止写。

目录的x权限(执行权限):

​ 有执行权限意味着分析路径名过程中可检索该目录

​ 例如cat /a/b/c,要求//a/a/b三个目录都有执行权限,并且c文件有读权限。

​ 例如cd ../file,要求当前文件夹,..,file必须有x 权限。

STICKEY权限(粘着位):

​ 早期Unix具有sticky属性的可执行文件尽量常驻内存或交换区以提高效率

​ 现代Linux对访问过的文件自动缓冲在内存,文件sticky属性被忽略

STICKEY目录

​ 问题:对于公共目录,用户user1和user2没有写权限,就不可以在这个目录下创建新文件;若有写权限,用户user1的文件就算是“只读文件”也可以被user2删除;

​ STICKEY属性用于解决这个问题:目录有写权限并且自带STICKEY属性,此目录下的文件仅文件主可以删除,其他用户删除操作失效

例如 drwxrwxrwt 13 root root 20480中最后一个字符的t

权限验证顺序

3.权限相关命令

chmod

(1)修改权限(字母形式)

chmod [ugoa][+-=][rwxst] 文件名表

例如:chmod u+rw *

chmod go-rwx *.[ch]

(2)修改权限(八进制数字形式)

chmod 644 xyz1

6:用户权限 110 rw-

4: 组权限 100 r–

4: 其他用户权限 100 r–

注意:只允许文件主和超级用户权限修改文件权限

umask

决定文件、目录的初始权限

umask是进程属性的一部分,是shell的内部命令

(1)进程umask属性的作用

​ 掩码值:022(八进制值) —> 000 010 010 (二进制)

​ 取消新文件/目录的组w权限和其他用户w权限

(2)系统调用umask

修改进程自身的umask属性值

4.SUID权限

SUID使得用户可以通过文件主提供的程序,以文件主的权限访问文件,但这种访问依赖于文件主提供的程序,进行有限的访问。