- 前言
- 一、权限的查看及读取
- 1.权限的查看
- 2.文件及目录权限读取
- 二、普通权限的类型及作用
- 1.用户对于文件的身份
- 2.权限位
- 3、用户身份匹配
- 4、权限类型
- 三、普通权限的类型及作用
- 四、系统默认权限设定
- 1.如何保留权力
- 五、文件用户用户组管理
- 六、特殊权限
- 1.stickyid 粘制位
- 七、acl权限列表
- 八、attr权限
前言
在企业和公司的Linux系统中,权限是非常重要的一环,它关乎着公司系统的安全和稳定,对用户的使用有着重大的意义,因此,掌握在Linux系统中如何对权限进行管理是非常重要的。
一、权限的查看及读取 1.权限的查看
ls -l 文件名:查看文件权限信息
ls -ld 目录名:查看目录权限信息
文件的属性被叫做文件的元数据(meta data),一种元数据用 1 个 byte 来记录内容。
1)文件权限信息# - | rw-r–r-- | . | 1 | root | root | 0 | Apr 12 10:57 | westos
[1] [2] [3] [4] [5] [6] [7] [8] [9]
2)目录权限信息# d | rw-r–r-- | . | 2 | root | root | 0 | Apr 12 10:57 | westosdir
[1] [2] [3] [4] [5] [6] [7] [8] [9]
其中:
[1]文件的类型: -表示普通文件; d表示目录 l表示软链接(快捷方式) b表示块设备(dev里只有sda) c字符设备 s socket套接字(进入程序的一个接口) p 管道 [2] 用户权限: 例如:rw-r–r-- ,rw-为用户权限(u);r–为用户组权限(g);r–为其他用户权限(o) u g o [3] 系统的 selinux 开启( .点是安全上下文的内容) [4] 对于文件:文件内容被系统记录的次数(硬链接个数) 对于目录:目录中子目录的个数 [5] 文件拥有者 [6] 文件拥有组 [7] 对于文件:文件内容大小 对于目录:目录中子文件的元数据大小 [8] 文件内容被修改的时间(属性或内容等被修改时都会变) [9] 文件名称二、普通权限的类型及作用 1.用户对于文件的身份
| u:user | 文件的拥有者 |
|---|---|
| g:group | 文件拥有组 |
| o:other | 既不是拥有者也不是拥有组成员的其他用户的通称 |
rwx|r- -|r- -
分为三位,分别对应user权限、group权限、other权限
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 <+/-/=> | 用字符方式设定文件权限 |
| chmod+布尔值+文件 | 通过数字方式设定权限 |
注:权限波尔指表示方式:rwx = 111;— = 000
即r=4,w=2,x=1;
例如:
三位二进制可以表示的最大范围为 8 进至数:
rwx=111=7
rw-=110=6
r-x=101=5
r–=100=4=r
-wx=011=3
-w-=010=2=w
--x=001=1=x
—=000=0
如下图所示:
系统本身存在的意义,从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高。在现实中,既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放,把不安全的权力默认保留。
1.如何保留权力umask 表示系统保留权力
文件默认权限 = 777-umask-111
目录默认权限 = 777-umask
umask 值越大系统安全性越高
若要临时更改umask,只需在shell中执行
若要永久更改umask值,则要更改 /etc/bashrc(shell系统配置文件) 和 /etc/profile(系统环境配置文件)
第一步:编辑shell系统配置文件,搜索umask,修改umask值
vim /etc/bashrc #shell 系统配置文件
74 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
75 umask 002–>022 #普通用户的 umask
76 else
77 umask 022 #root 用户的 umask
78 fi
第二步:编辑系统环境配置文件,搜索umask,修改umask值
vim /etc/profile #系统环境配置文件
59 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
60 umask 002–>022 #普通用户的 umask
61 else
62 umask 022 &emsp#root 用户的 umask
63 fi
第三步:使更改的内容立即被系统识别
source /etc/bashrc ##source 作用时使我们更改的内容立即被系统识别
source /etc/profile
此时新建一个文件或者目录,如下
可以看到更改umask后文件的权限为777-077-111=600,目录的权限为777-077=700
| chown username file | 更改用户拥有者 |
|---|---|
| chgrp groupname file | 更改用户拥有组 |
| chown username:groupname file(中间冒号可用.代替) | 同时更改文件拥有者和文件拥有组 |
| chown -R username dir | 更改目录本身及目录中文件的拥有者 |
| chgrp -R username dir | 更改目录本身及目录中文件的主组 |
| 粘滞位(stickyid) | 针对目录: 如果一个目录 stickyid 开启,那么这个目录中的文件只能被文件所有人删除 |
|---|---|
| 设定方法: | chmod 1源文件权限 dir ;chmod o+t dir |
| 强制位(sgid) | 针对目录: 目录中新建的文件自动归属到目录的所属组中 |
| 设定方法: | chmod 2源文件权限 dir;chmod g+s dir |
| 冒险位(suid) | 只针对二进制的可执行文件(c 程序),当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关 |
| 设定方法: | chmod 4原属性 file;chmod u+s file |
可以看到westos用户是以root用户身份运行的watch指令。
七、acl权限列表功能:在列表中可以设定特殊用户对与特殊文件有特殊权限。acl列表开启标识:在用户权限位末尾有+号
acl 列表权限读取:getfacl filename or dirname
显示内容分析:
| #file : westosfile | 文件名称 |
|---|---|
| # owner:root | 文件拥有者 |
| # group:root | 文件拥有组 |
| user::rw- | 文件拥有者权限 |
| user:westos:rw- | 特殊指定用户权限 |
| group::— | 文件拥有组权限 |
| group:westos:rwx | 特殊指定的用户组的权限 |
| mask::rwx | 能够赋予特殊用户和特殊用户组的最大权限阀值 |
| 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 列表之后用 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(目录)中新建的文件生效 |
使用attr 权限可以限制所有用户,主要是用来限制超级用户,防止超级用户的一些误操作。
| i | 不能作任何的更改 |
|---|---|
| a | 能添加不能删除 |
| lsattr dir/file | 查看 attr 权限 |
| chattr +i/+a/-i/-a dir/file | 设定 attr 权限 |



