文件权限与目录权限
之前有了解过基本的权限:
- 系统基本权限:r(读) - w(写) - x(执行)
- 系统权限划分:属主,属组,其他用户
普通文件的权限:
- r : 是否可以查看文件内容 (是否可以查看block)
- w: 是否可以编辑文件内容(是否可以改写block)
- x:是否可以让文件运行
权限划分给三个用户的效果
权限\用户 | root | 属主 | 其他用户 |
---|---|---|---|
无权限 | 可读可写 | 可写(覆盖式编辑) | 没有任何权限 |
读权限 | 可读写 | 可读可写 | 可读 |
写权限 | 可读写 | 可写(覆盖写入) | 可写(覆盖写入) |
执行权限 | 为所欲为 | 无法执行 | 无法执行 |
- 文件权限总结:1. root用户在系统基本是可以为所欲为的存在,可以随意编辑文件信息,都不受到权限的限制
- 文件权限中,读权限最为重要。有读写权限,才可以正常编辑文件。有读执行权限,才可以正常执行文件
- 创建一个文件的初始权限是:644 —>属主(rw)属组(r)其他用户(r)
目录文件的权限:
- r : 表示能不能查看目录下数据信息
- w :表示能不能在目录中进行操作(删,重命名,创建)
- x :表示能否切换目录
目录的权限划分效果
权限\用户 | root | 属主 | 其他用户 |
---|---|---|---|
无权限 | 可读写执行 | 无法做操作 | 无法做操作 |
读权限 | 可读写执行 | 只能看到名称 | 只能看到名称 |
写权限 | 可读写执行 | 无法做操作 | 无法做操作 |
执行权限 | 可读写执行 | 可切换 | 可切换 |
目录文件总结:1. root用户可随意查看编辑任何目录信息,不会受到权限限制
2. 目录的权限中,执行权限是最重要的。有读写权限,才可以正常查看目录目录下信息。有写执行权限,才可以正常在目录中创建、删、重命名操作
系统读取数据原理
对于文件:
- inode:存储文件属性信息 与 指针信息
- block: 存储文件数据内容
- 读权限:可以查看文件内容信息(获取指针信息)
- 写权限:可以编辑文件内容信息
对于目录:
- inode:存储目录属性信息 与 指针信息
- block: 目录下面数据名称信息
- 执行权限:可以切换到目录中 (获取目录指针信息)
- 读权限:可以查看目录中数据信息 (查看目录文件名称)
系统权限设置
系统数据默认权限设置:
- 创建一个文件的默认权限是 644
- 创建一个目录的默认权限是 755
- 使用
umask
命令可以查看当前的umask值
默认是 022- 默认文件权限:666 - 022 = 644 所以创建文件的默认权限才会是 644
- 默认目录权限:777 - 022 = 755 这是目录创建时的默认权限 755
umask
命令用来设置限制新建文件权限的掩码
修改 umask 配置文件:/etc/profile
文件中,就可以修改umask
系统特殊权限
- setuid(4):让普通用户可以拥有属主用户的能力(主要针对操作命令进行权限调整)
命令调整权限:#chmod u+s /root/test
- - - 给一个文件添加的普通用户添加属主能力,在属主的x位置会更换为 s ,下面看效果
PS:也可以用数值调整 #chmod 4644 /root/test
- setgid(2):让普通用户拥有属组的用户的能力 (主要针对操作命令进行权限调整)
命令调整权限:#chmod g+s /root/test
- - - 给一个文件添的普通用户添加属组能力,在属组x位置会跟换为 s
PS:也可以用数值调整 #chmod 2644 /root/test
- 粘滞位(1):创建一个共享目录,只能文件属主用户对自己的数据调整,其他用户只能有看的权限
命令调整权限:#chmod o+t /root/test
- - - 这个文件只有属主能操作,其他用户只能查看的权限
PS:#chmod 1644 /root/test
系统用户提权配置
- 单个用户设置权限: #
vim /etc/sudoers
或者 #visudo
找到100左右的这些字符
在下面添加,第一列:用户名称
第二列:权限集中管理配置 格式:ALL=(ALL)
第三列:指定特权信息, 命令的绝对路径,后面跟上可以操作的文件信息, 格式:/bin/cat /etc/shadow - 提权文件书写规范要求:
- 必须有三列信息,列于列之间要有空格分开
- 提权命令必须携带绝对路径
- 提权多个命令,用逗号空格进行分隔
- 提权多个命令时,在指定命令前面加上!,表示取消指定特权(取消指定的命令权限)
- 提权操作时,在命令前面加上NOPASSWD:表示取消提权输入密码过程
- 测试权限效果
测试时,在正常名命令前面加上sudo才能使用 :#sudo cat /etc/shadow
查看被给予了那些权限,用对应的用户查询 命令:#sudo -l
系统用户相关命令
- useradd :创建用户
相关参数:1. -u :指定创建用户uid 数值信息- -g : 指定用户所属主要组信息
- -G: 指定用户所属附属组信息
- -M:指定用户不创建家目录
- -d : 指定用户登录系统方式(这个参数后面跟路径,可以登录/bin/bash;不可以登录/sbin/nologin)
- -c : 指定用户注释信息
- groupadd:创建组信息
相关参数:1. -g:创建指定组 id号码 - usermod:修改用户信息
- groupmod:修改组信息
- userdel:删除用户信息
- groupdel:删除组信息
用户相关文件和目录
- 相关文件#
/etc/passwd
以分号分割:
第一列: 用户名称
第二列:用户密码,早期的这里是密码,后来考虑不安全就换位置了,所以现在用x代替
第三列:用户的uid信息
第四列:用户的gid信息
第五列:用户注释信息
第六列:用户家目录路径信息
第七列:用户登录系统方式- #
/etc/shadow
- - - 存放用户密码信息 - #
/etc/group
- - - 存放用户组信息 - #
etc/gshadow
- - - 存放用户组密码信息
- #
- 相关目录#
/etc/skel
家目录的模板目录,创建一个新的用户,这个目录里有什么文件就会给心用户里面放置什么文件
如果命令提示符出现错误,可以试试用这个目录修复隐藏目录