文章目录
前言
在系统中,权限是一个非常严肃且重要的问题,它对系统的安全性,对用户的使用都有着十分重大的意义,因此想要学好Linux,我们必须熟练的掌握这部分知识,让我们一起来学习一下今天的内容吧。
一、权限信息的查看及介绍
1、查看文件及目录权限信息的方法
ls -l 文件名:查看文件权限信息
ls -ld 目录名:查看目录权限信息
如下图所示:
2、文件及目录权限信息
权限信息基本构成如下,每两个分隔符之间是一位,共有九位:
-| rw-r- -r- - | . | 1 | root | root | 0 | Apr 12 10:57 | westos
每一位代表的信息如下表:
【1】 | 文件类型 |
---|---|
【2】 | 用户权限 |
【3】 | 系统的 selinux 开启 |
【4】 | 对于文件:文件内容被系统记录的次数(硬链接个数)对于目录:目录中子目录的个数 |
【5】 | 文件拥有者 |
【6】 | 文件拥有组 |
【7】 | 对于文件:文件内容大小 对于目录:目录中子文件的元数据大小("文件的属性被叫做文件的元数据) |
【8】 | 文件最后被修改的时间 |
【9】 | 文件名 |
其中关于第一位文件类型有如下总结:
- | 表示普通文件 |
---|---|
d | 表示目录 |
l | 软链接 |
b | 块设备 |
c | 字符设备 |
s | socket套接字 |
p | 管道 |
如下图标注部分所示:
二、普通权限的类型及作用
1、用户对文件的身份
u:user | 文件的拥有者 |
---|---|
g:group | 文件拥有组 |
o:other | 既不是拥有者也不是拥有组成员的其他用户的通称 |
2、权限位
rwx|r- -|r- -
分为三位,分别对应user权限、group权限、other权限
3、用户身份匹配
user>group>other
4、权限类型
- | 权限未开启 |
---|---|
r | 对于文件:可以读取文件内容; 对于目录:可以 ls 列出目录中的文件 |
w | 对于文件:可以更改文件内容; 对于目录:可以在目录中新建或者删除文件 |
x | 对于文件:可以用文件名称调用文件内记录的程序; 对于目录:可以进入目录中 |
三、设定普通权限的方法
chmod | 设定文件权限 |
---|---|
chmod --reference=目录1 目录2 | 复制目录1的权限到目录2上 |
chmod -R --reference=目录1 目录2 | 复制目录1的权限到目录2及目录2的子文件上;-R表示递归操作 |
chmod <a/u/g/o><+/-/=><r/w/x> file | 用字符方式设定文件权限 |
chmod+布尔值+文件 | 通过数字方式设定权限 |
rwx | 表示7(r表示4,w表示2,x表示1) |
rw- | 表示6 |
r-x | 表示5 |
r- - | 表示4 |
-wx | 表示3 |
-w- | 表示2 |
- -x | 表示1 |
例: | 777表示rwxrwxrwx,500表示r-x------ |
具体操作如下图所示,左图表示对目录及文件进行实时监控:
四、系统默认权限设定
系统本身存在的意义,从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高。在现实中,既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放,把不安全的权力默认保留。
系统保留权力及修改方式如下表:
umask | 查看系统保留权力 |
---|---|
umask 权限值 | 临时设定系统保留权力 |
永久设定 | vim /etc/bashrc(该文件是shell的系统配置文件)vim /etc/profile(系统环境配置文件) 编辑这两个文件中umask的值可以 实现永久设定umask值 |
source /etc/bashrc;source /etc/profile | 完成上述文件编辑后执行这两个命令可以使我们更改的内容立即被系统识别、 |
如下图所示:
五、文件用户及用户组管理
chown username file | 更改用户拥有者 |
---|---|
chgrp groupname file | 更改用户拥有组 |
chown username:groupname file(中间冒号可用.代替) | 同时更改文件拥有者和文件拥有组 |
chown | chgrp -R user |
如下图所示:
六、特殊权限
粘滞位(stickyid) | 针对目录: 如果一个目录 stickyid 开启,那么这个目录中的文件只能被文件所有人删除 |
---|---|
设定方法: | chmod 原始权限 dir ;chmod o+t dir |
强制位(sgid) | 针对目录: 目录中新建的文件自动归属到目录的所属组中 |
设定方法: | chmod 源文件权限 dir;chmod g+s dir |
冒险位(suid) | 只针对二进制的可执行文件(c 程序),当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关 |
设定方法: | chmod 原属性 file;chmod u+s file |
如下图所示:
七、acl权限列表
全称:Aiccess Control Lists(访问控制列表)
作用:在列表中可以设定特殊用户对特殊文件的特殊权限
acl列表开启标识:在用户权限位末尾有+号
acl 列表权限读取:getfacl filename or dirname
显示内容分析如下:
# file: | 文件名称 |
---|---|
# owner: | 文件拥有者 |
# group: | 文件拥有组 |
user::rw- | 问件拥有者权限 |
user:lee:权限 | 特殊指定用户权限 |
group::权限 | 文件拥有组权限 |
group:westos:权限 | 特殊指定的用户组的权限 |
mask::权限 | 能够赋予特殊用户和特殊用户组的最大权限阀值 |
other::权限 | 其他人的权限 |
acl列表设定方法:
setfacl -m u:username:rw filename | 设定指定用户对指定文件的特殊权限 |
---|---|
setfacl -m g:groupname:rw filename | 设定指定文件拥有组对指定文件的特殊权限 |
setfacl -x u:username filename | 删除指定文件的特殊用户 |
setfacl -b filename | 关闭指定用户的acl列表 |
acl 权限优先级 | 拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他 |
acl mask 控制 | mask 是能够赋予指定用户权限的最大阀值 |
存在的问题: | 当设定完毕文件的 acl 列表之后用 chmod 缩小了文件拥有组的权力。mask 值会跟着发生变化 |
恢复方法: | setfacl -m m:权限 文件 |
acl列表的默认权限:
setfacl -m u:username:rwx dirname | 只对于dirname(目录)本身生效 |
---|---|
setfacl -Rm u:username:rwx dirname | 对于dirname(目录)和目录中已经存在的内容生效 |
setfacl -m d:u:username:rwx dirname | 只针对与dirname(目录)中新建的文件生效 |
注意:当文件权限列表开启,不要用 ls -l 的方式来读取文件的权限
如下图所示:
八、attr权限
使用attr 权限可以限制所有用户,主要是用来限制超级用户,防止超级用户的一些误操作。
i | 不能作任何的更改 |
---|---|
a | 能添加不能删除 |
lsattr dir/file | 查看 attr 权限 |
chattr +i/+a/-i/-a dir/file | 设定 attr 权限 |
如下图所示:
九、习题练习
问题描述:
问题解答:
总结
本次讲了权限管理中的一些知识点,主要针对普通文件、目录和二进制文件,这部分的内容需要我们去理解,特别是第六和第七部分,如果有问题应该通过多次实验去验证,这样才能牢固的掌握。