基本权限类型:可读(r)、可写(w)、可执行(x)
权限对象:
权限指的是属主、属组或其他人对文件可操作的类型
更改文件的属主、属组
chown 属主:属组 文件名
chown centos:hr file1 # 改属主、属组
chown centos file1 # 只改属主
chown :hr file1 # 只改属组
[root@wdy ~]# chgrp it file1 # 改文件属组
[root@wdy ~]# chgrp -R it dir1 # 改文件属组
改变某个文件的访问模式
对象 赋值符 权限类型(数字表示)
u + r(4)
g - w(2)
chmod o = x(1) file
a
[root@wdy ~]# chmod u+x file1 # 属主增加对file1文件的执行 权限
[root@wdy ~]# chmod a=rwx file1 # 所有人对file1的权限为:读写执行
[root@wdy ~]# chmod a=- file1 # 所有人对file1没有权限
[root@wdy ~]# chmod ug=rw,o=r file1 # 属主属组对file1的权限等于读写,其他人对file1的权限为只读
[root@wdy ~]# chmod 644 file1
[root@wdy ~]# ll file1
r、w、x权限对文件和目录的意义
[root@wdy ~]# mkdir /dir10
[root@wdy ~]# touch /dir10/file1
[root@wdy ~]# chmod 777 /dir10/file1
[root@wdy ~]# ll -d /dir10/
drwxr-xr-x. 2 root root 19 9月 4 11:44 /dir10/
[root@wdy ~]# ll /dir10/file1
-rwxrwxrwx. 1 root root 0 9月 4 11:44 /dir10/file1
[root@wdy ~]# su centos
[centos@wdy root]$ cat /dir10/file1
[centos@wdy root]$ rm -rf /dir10/file1
rm: 无法删除"/dir10/file1": 权限不够
删除文件看的是用户是否拥有该目录的w权限,而不是对文件是否有w权限
对目录有w权限
[root@wdy ~]# chmod 777 /dir10/
[root@wdy ~]# chmod 000 /dir10/file1
[root@wdy ~]# ll -d /dir10/
drwxrwxrwx. 2 root root 19 9月 4 11:44 /dir10/
[root@wdy ~]# ll /dir10/file1
----------. 1 root root 0 9月 4 11:44 /dir10/file1
[root@wdy ~]# su centos
[centos@wdy root]$ cat /dir10/file1
cat: /dir10/file1: 权限不够
[centos@wdy root]$ rm -rf /dir10/file1
对目录有w权限,可以在目录中创建新文件,可以删除文件夹中的文件(跟文件权限无关)
acl(访问控制列表)
UGO设置基本权限:只能一个用户,一个组和其他人,粒度比较大
ACL设置基本权限:r、w、x
acl能够更精确的控制权限,可以单独针对某一个用户对某个文件的权限操作进行更改
getfacl [选项] file
选项:
-a:仅显示文件访问控制列表
-d:仅显示默认的访问控制列表
-c:不显示注释表头
-e:显示所有的有效权限
-E:显示无效权限
-R:递归显示子目录
-t:使用制表符分隔的输出格式
实例:
查看acl权限列表
getfacl anaconda-ks.cfg
不显示表头
getfacl -c anaconda-ks.cfg
setfacl
常用选项
-m :添加acl设定参数
-x :删除acl设定参数
-b :移除所有的ACL设定参数
-R :递归添加acl设定参数
-d :添加默认acl设定参数(目录)
指定某一用户增强权限:setfacl -m u:user01:rx /workdir
删除用户权限:setfacl -x u:username filename
删除组权限:setfacl -x g:groupname filename
删除整个acl权限:setfacl -b filename
实例:
通过将组设置成某个文件的访问权限,将用户添加到该组下,实现用户可以对文件实现想要的权限
useradd wdy
mkdir /workedir
groupadd worker2
setfacl -m g:worker2:rwx /workedir
usermod -a -G worker2 wdy
getfacl /workdir
su - wdy #当前用户wdy就能实现对/workedir进行rwx权限操作
让目录下创建的文件默认继承目录的ACL权限
setfacl -m d:u:wdy:rw /workdir #d表示default,
cd /workdir
touch newfile
getfacl newfile
设置
[root@xwz ~]# ll file1
-rw-r--r--. 1 centos it 0 9月 4 11:03 file1
[root@xwz ~]# getfacl file1
# file: file1
# owner: centos
# group: it
user::rw-
group::r--
other::r--
[root@xwz ~]# setfacl -m u:centos:rw file1 # 增加用户权限
[root@xwz ~]# setfacl -m u:user05:- file1 # 增加用户权限
[root@xwz ~]# setfacl -m o::rw file1 # 修改其他人权限
查看/删除
[root@xwz ~]# ll file1
-rw-rw-rw-+ 1 centos it 0 9月 4 11:03 file1
[root@xwz ~]# getfacl file1
# file: file1
# owner: centos
# group: it
user::rw-
user:centos:rw-
user:user05:---
group::r--
mask::rw-
other::rw-
[root@xwz ~]# setfacl -m g:hr:r file1 # 增加组权限
[root@xwz ~]# setfacl -x g:hr file1 # 删除组权限
[root@xwz ~]# setfacl -b file1 # 删除所有acl权限
指的是用户或群组能拥有的最大ACL权限,也就是说给用户或群组设定的ACL权限不能超过mask规定的权限范围,超出部分做无效处理
修改上面newfaile的mask值
setfacl -m m::rwx /workdir/newfile #m表示修改mask权限,不用指定用户
getfaCl newfile
文件的特殊权限包括:SUID 4、SGID 2、SBIT 1
suid 4 # 使用文件所有者身份执行文件<针对文件>
sgid 2 # 新建文件继承目录属组<针对目录>
sticky 1 # 文件只能由文件拥有者,root,文件夹拥有者删除<针对目录>
suid:借出程序所有者的权限
s:程序所属主有x权限
S:程序所属主没有x权限
SUID权限仅对二进制程序有效,只能运用在可执行文件上。如果给一个非二进制文件附加suid权限,则会显示大写S,属于无效。
仅在本程序中拥有该权限
属主拥有s权限,即可将自己的权限暂时借给其他人使用
系统会检查进程的所有者,根据所有者设置的权限来确定是否对文件有权限
[root@wdy ~]# ll /etc/shadow
----------. 1 root root 1760 9月 5 11:12 /etc/shadow # 普通用户依旧是可以修改密码
[root@wdy ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
普通用户无法修改存放密码的shadow文件,在使用passwd这个命令时,是借用了属主root的执行权限
chmod u+s file
chmod u-s file
chmod 4765 file
SGID:借出用户组的权限
可运用于文件或目录
二进制程序有效
执行者拥有x权限
执行过程中暂时拥有用户组权限
高级权限的类型
s:程序所属主有x权限
S:程序所属主没有x权限
chmod g+s /workdir #对目录添加特殊权限,在该目录下所有用户创建的文件或者目录的所属组都和当前一样
cd /workdir
touch file
ll
SBIT 权限:用来做共享目录
stiky权限:
当属主拥有x权限时,用小写的字母t表示,当属主没有x权限时,用大写字母T权限表示1
只针对目录有效
**用户在此目录中创建文件时,只有 ** root 用户和自己可以删除该文件,其他用户是不可以修改此文件
典型例子/tmp这个目录
chmod 777 /workdir
chmod o+t /workdir
su - zhangsan
cd /workdir
touch zhangsanfile
exit
su - lisi
cd /workdir
touch lisifile
rm -f zhangsanfile # 删除失败
chmod u+s file
chmod g+s dir
chmod o+t dir
chmod 4777 file
chmod 7777 file
chmod 2770 dir
chmod 3770 dir
进程 新建文件、目录的默认权限会受到umask的影响,umask表示要减掉得到权限
[root@wdy ~]# umask # 查看当前用户的umask权限
0022
默认文件的权限是666-umask 目录是777-umask
[root@wdy ~]# umask -S # 查看最终有的权限
u=rwx,g=rx,o=rx
[root@wdy ~]# touch file1
[root@wdy ~]# mkdir dir1
[root@wdy ~]# ll -d dir1/ file1
drwxr-xr-x. 2 root root 6 9月 9 09:29 dir1/
-rw-r--r--. 1 root root 0 9月 9 09:29 file1
修改umask的值(临时)
[root@xwz ~]# umask 0000
[root@xwz ~]# mkdir dir2
[root@xwz ~]# touch file2
[root@xwz ~]# ll -d file2 dir2
drwxrwxrwx. 2 root root 6 9月 9 09:31 dir2
-rw-rw-rw-. 1 root root 0 9月 9 09:31 file2
修改umask值(永久)
vim /etc/profile
source /etc/profile #立即在当前shell中生效