Linux系统下的权限管理

Linux系统下的权限管理

权限管理
1.文件用户及用户组
Linux 是个多用户多任务的系统 ,常常会有多人同时使用同一主机来进行工作,为了考虑每个人的隐私权以及每个人喜好的工作环境 , 对用户进行分类。
分为以下三大类:
文件拥有者 (user)
文件所属组 (group)
其他人 (other)

2.文件属性的查看
ls -l filename
或 ll filename ( ls -l 缩写为 ll )
Linux系统下的权限管理

属性 含义
- 文件的类型
rw-rw-r– 文件的权限
1 文件的硬连接个数(文件内容被记录的次数)
user1 文件的所有人
user1 文件的所有组
0 文件的大小
Oct 20 16:25 最后一次被修改的时间
user1file 文件的名称

(1)"-":文件类型
”-“ ##普通文件
’d’ ##目录
‘c’ ##字符设备
’s‘ ##套接字
’p‘ ##管道
’b‘ ##快设备
‘l’ ##连接

(2)“rw-r–r--”:文件读写权限
rw-|r–|r–
u g o
u所有人的权限
g所有组的权限
o其他人的权限
注:u优先匹配,g次优先,o当u,g不匹配时匹配
(3)“r,w,x” 的含义
<1> r===read
对文件:可以查看文件中的字符
对目录:可以查看目录中文件的信息

<2> w===write
对文件:可以更改文件内字符
对目录:可以在目录中添加删除文件

<3> x===execute
对文件:可以运行文件内记录的程序动作
对目录:可以进入目录中

3.目录属性的查看
ls -ld directory
或 ll -d directory
Linux系统下的权限管理
4.文件权限的修改
(1)字符方式修改
chmod [-R] <u|g|o><+|-|=><r|w|x> file|dir

chmod u-x file1 ##file1拥有者去掉x权限
chmod g+w file1 ##file1拥有组添加w权限
chmod u-x,g+w file1 ##file1拥有者去掉x权,file1拥有组添加w权限
chmod ugo-r file2 ##file2的用户组其他人去掉r权限
chmod ug+x,o-r file3 ##file3用户和组添加x权限,其他人去掉r权限

Linux系统下的权限管理
(2)数字方式修改
在linux中
r=4
w=2
x=1
文件权限数字表示方式
rw-|r–|r–
u g o
u=rw-=4+2+0=6
g=r–=4+0+0=4
o=r–=4+0+0=4
所以文件权限表示为644

chmod 修改后权限值 file
chmod 777 file

7=rwx
6=rw-
5=r-x
4=r–
3=-wx
2=-w-
1=–x
0=—
Linux系统下的权限管理
5.系统默认权限的设定
从系统存在角度来说,开放权力越大,系统存在意义越高
从系统安全角度来说,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
(1)临时设定方式
umask ##查看系统保留权限默认为022
umask 077 ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效
所以对于文件而言,系统默认权限是644;对于目录而言,系统默认权限是755。
Linux系统下的权限管理
Linux系统下的权限管理
(2)永久修改系统预留权限umask值的方法:
在shell配置文件/etc/bashrc 中和系统配置文件/etc/profile 中记录有系统的默认umask值,只要把这两个文件中的 umask值修改之后就可以永久修改umask值了。
操作指令: vim /etc/bashrc
vim /etc/profile
/etc/bashrc 文件中的71行是普通用户的umask值,73行是超级用户的umask值:
Linux系统下的权限管理
/etc/profile 文件中的60行是普通用户的umask值,62行是超级用户的umask值:
Linux系统下的权限管理
通过修改这两个文件中超级用户的umask值可以实现永久修改:
Linux系统下的权限管理
Linux系统下的权限管理
最后通过 :wq 保存退出,如果不能退出则使用 :wq! 强制保存退出。
注意:想要永久性的修改 umask 值,一定要重新读取两个配置文件后 ,才能生效,需要执行下面这两条命令
source /etc/bashrc #刷新bash配置
source /etc/profile #刷新系统配置
完成以上操作之后,再查看umask值,就会发现umask值被永久修改了:Linux系统下的权限管理
6.特殊权限
(1)suid ##冒险位
之针对二进制可执行文件,
文件内记录的程序产生的进程的所有人为文件所有人
和进程发起人身份无关

设定方式:
chmod u+s file
suid=4
chmod 4xxx file

(2)sgid ##强制位
对文件:只针对二进制可执行文件,
任何人运行二进制文件
程序时程序产生的进程的所有组都是文件的所有组
和程序发起人组的身份无关
对目录:当目录有sgid权限后,目录中新建的所有文件的所有组
都自动归属到目录的所有组之中,和文件建立者所在的组无关

设定方式:

chmod g+s file|dir
sgid=2
chmod 2xxx file|dir

(3)sticky ##粘制位
t权限:
只针对与目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除

设定方式:
chmod o+t direcotry
t=1
chmod 1777 direcotry

操作示例:
Linux系统下的权限管理
7. 文件的访问控制(acl列表)
(1)acl定义
acl = access control
作用:指定特殊用户对特殊文件有特殊权限
Linux系统下的权限管理
“+”表示/mnt/file目录是有acl权限列表
#file:/mnt/file #文件名
#owner:root #文件所有者
#group:root #文件所有组
#user::rw- ##拥有者权限
#user:tom:rw- ##特殊用户权限
#group::r-- ##组权限
#mask::r-- ##权限掩码(能赋予用户的最大权限阈值)
#other::r-- ##其他人权限

注:当文件上有权限列表时,ls -l 能看到的权限是假的

(2)设定acl列表
设定:
setfacl -m <u|g>:<username|groupname>:权限 文件|目录
-m #设定
u #用户
g #组
删除列表中的用户或者组:
setfacl -x <u|g>:<username|groupname> 文件|目录
(eg: setfacl -m d:u:student:rwx /westos )
关闭列表:
setfacl -b 文件|目录
(3)acl mask值
mask 权限掩码
mask用来标实能够赋予用户最大权限,当用chmod改变文件普通权限时可能会被破坏。
修复方法:setfacl -m m:rwx 文件名称

acl 默认权限:
当我们需求某个目录对于student可写,并且目录中新建的子目录对student也可写,就要设定默认权限。

注: 默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,对于目录本身也无效。