基本权限UGO
#概述
文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件
#权限对象:
属主: u
属组: g
其他人: o
所有人:a(u+g+o)
#权限类型:
读:r=4
写:w=2
执行: x=1
#设置权限
更改权限
使用符号
使用符号:u用户 g组 o其他 r读 w写 x执行
语法: chmod 对象(u/g/o/a) 赋值符(+/-/=) 权限类型(r/w/x) 文本对象
[root@localhost ~]# cd /tmp
[root@localhost tmp]# chmod u+x file1 //属主增加执行
[root@localhost tmp]# chmod a=rwx file1 //所有人等于读写执行
[root@localhost tmp]# chmod a=- file1 //所有人没有权限
[root@localhost tmp]# chmod ug=rw,o=r file1 //属主属组等于读写,其他人只读
[root@localhost tmp]# ll file1 //以长模式方式查看文件权限
-rw-rw-r-- 1 alice it 17 10-25 16:45 file1 //显示的结果
#使用数字
4读 2写 1执行
[root@localhost ~]# chmod 644 file1
[root@localhost ~]# ll file1
-rw-r--r-- 1 alice it 17 10-25 16:45 file1
更改属主、属组
=chown: 设置一个文件属于谁,属主
#语法: chwon 用户名.组名 文件
[root@localhost ~]# chown alice.hr file1 //改属主、属组
[root@localhost ~]# chown alice file1 //只改属主
[root@localhost ~]# chown .hr file1 //只改属组
=chgrp: 设置一个文件属于哪个组,属组
#语法: chgrp 组名 文件 -R是递归的意思
[root@localhost ~]# chgrp it file1 //改文件属组
[root@localhost ~]# chgrp -R it dir1 //改文件属组
#案例
需求
针对hr部门的访问目录设置权限,要求如下:
1. root用户和hr组的员工可以读、写、执行
2. 其他用户没有任何权限
操作思路:
1.创建组
2.创建用户
3.修改属主和属组
4.设置权限
#操作示范
[root@localhost ~]# groupadd hr
[root@localhost ~]# useradd hr01 -G hr
[root@localhost ~]# useradd hr02 -G hr
[root@localhost ~]# mkdir /home/hr
[root@localhost ~]# chgrp hr /home/hr
[root@localhost ~]# chmod 770 /home/hr
[root@localhost ~]# ll -d /home/hr/
drwxrwx---. 2 root hr 4096 3月 13 14:26 /home/hr/
2.用户对文件有全部权限,能否删除该文件
#示例1: 对文件的影响
[root@localhost ~]# mkdir /dir10
[root@localhost ~]# touch /dir10/file1
[root@localhost ~]# chmod 777 /dir10/file1
[root@localhost ~]# ll -d /dir10/
drwxr-xr-x. 2 root root 4096 3月 11 18:37 /dir10/
[root@localhost ~]# ll /dir10/file1
-rwxrwxrwx. 1 root root 0 3月 11 18:37 /dir10/file1
切换用户alice
[alice@localhost ~]$ cat /dir10/file1
[alice@localhost ~]$ rm -rf /dir10/file1
rm: 无法删除"/dir10/file1": 权限不够
注:不可以,文件的去留在乎用户对其父系目录有没有W的权限
3.用户对文件上一级目录有全部权限,能否删除其中的文件
#示例2: 对目录有w权限
[root@tianyun ~]# chmod 777 /dir10/
[root@tianyun ~]# chmod 000 /dir10/file1
[root@tianyun ~]# ll -d /dir10/
drwxrwxrwx. 2 root root 4096 3月 11 18:37 /dir10/
[root@tianyun ~]# ll /dir10/file1
----------. 1 root root 0 3月 11 18:37 /dir10/file1
[alice@tianyun ~]$ cat /dir10/file1
cat: /dir10/file1: 权限不够
[alice@tianyun ~]$ rm -rf /dir10/file1
[alice@tianyun ~]$ touch /dir10/file2
注:可以,文件的生杀大全在于,用户对其父目录是否有w的权限。
4.alice能删除/下的任何文件吗?
#问题2: alice能删除/下的任何文件吗?
[root@tianyun ~]# chmod 777 /
[root@tianyun ~]# ll -d /
drwxrwxrwx. 27 root root 4096 6月 4 11:32 /
[alice@tianyun ~]$ rm -rf /etc
注:可以。所以请注意rm -rf 的危险性。
基本权限 ACL
文件权限管理之: ACL设置基本权限(r、w、x)
#用法
设置:
[root@tianyun ~]# touch /home/test.txt
[root@tianyun ~]# ll /home/test.txt
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt
[root@tianyun ~]# getfacl /home/test.txt//查看文件有哪些ACL权限。
[root@tianyun ~]# setfacl -m u:alice:rw /home/test.txt //增加用户alice权限
[root@tianyun ~]# setfacl -m u:jack:- /home/test.txt //增加用户jack权限
[root@tianyun ~]# setfacl -m o::rw /home/test.txt
#查看/删除:
如何删除一条acl,如何删除所有acl呢?
[root@tianyun ~]# ll /home/test.txt
-rw-rw-r--+ 1 root root 0 10-26 13:59 /home/test.txt
[root@tianyun ~]# getfacl /home/test.txt
[root@tianyun ~]# setfacl -m g:hr:r /home/test.txt
[root@tianyun ~]# setfacl -x g:hr /home/test.txt //删除组hr的acl权限
[root@tianyun ~]# setfacl -b /home/test.txt //删除所有acl权限
#帮助
=查看帮助=
[root@tianyun ~]# man setfacl
/EXAMPLES //查找示例
=多多观察,你会发现很多有趣的事情=
[root@tianyun ~]# getfacl file1 |setfacl --set-file=- file2 //复制file1的ACL权限给file2
高级用法 mask
#mask:
原理
acl权限中有个"mask"的选项,它就是ACL权限的最大权限,现在是rwx,当你设置某个用户或组的ACL权限时,要跟mask的权限“相与”之后产生的权限才是该用户的最终权限,也就是加入mask的最大权限是rx,但是你给st用户设置的是rwx权限,此时st用户它的权限只有rx的权限,因为与最大权限“相与”得出的结果就是rx
#示例
1.创建一个测试文件:/tmp/filemask
[root@localhost ~]# touch /tmp/filemask
2.移除其他用户权限
[root@localhost ~]# chmod o-r /tmp/filemask
3.设置用户alice,读写执行权限
[root@localhost ~]# setfacl -m u:alice:rwx /tmp/filemask
4.查看权限
[root@localhost ~]# getfacl /tmp/filemask
getfacl: Removing leading '/' from absolute path names
# file: tmp/filemask
# owner: root
# group: root
user::rw-
user:alice:rwx
group::r--
mask::rwx
other::r--
5.切换用户alice,验证权限(读写执行)
[root@localhost ~]# su - alice
上一次登录:四 3月 29 15:47:05 CST 2018pts/1 上
[alice@localhost ~]$ echo date > /tmp/filemask
[alice@localhost ~]$ cat /tmp/filemask
date
[alice@localhost ~]$ /tmp/filemask
2018年 03月 29日 星期四 15:48:52 CST
[alice@localhost ~]$ exit
登出
6.设置掩码mask权限,为无权限。
[root@localhost ~]# setfacl -m m::--- /tmp/filemask
7.观察有效权限effective,alice用户没有权限。
[root@localhost ~]# getfacl /tmp/filemask
getfacl: Removing leading '/' from absolute path names
# file: tmp/filemask
# owner: root
# group: root
user::rw-
user:alice:rwx #effective:---
group::r-- #effective:---
mask::---
other::r--
8.切换用户验证mask。
[root@localhost ~]# su - alice
上一次登录:四 3月 29 15:48:23 CST 2018pts/1 上
[alice@localhost ~]$ echo date >> /tmp/filemask
-bash: /tmp/filemask: 权限不够
[alice@localhost ~]$ cat /tmp/filemask
cat: /tmp/filemask: 权限不够
9.得出结论,mask掩码与有效权限取之交集。
生产案例
生产环境中,常用于临时降低用户或组(除属主和其他人)的权限
#请注意文件基本权限。
1 创建用户(便于测试)
2 创建两个文件(设置其中一个文件的权限掩码)
[root@tianyun ~]# setfacl -m m::--- /tmp/file1.txt
3 删除基本权限
chmod o= /tmp/file1
4 使用账户进行测试
file1.txt没有权限。file2.txt有只读权限。
default: 继承(默认)
要求: 希望alice能够对/home以及以后在/home下新建的文件有读、写、执行权限
思路:
步骤一: 赋予alice对/home读、写、执行权限
[root@tianyun ~]# setfacl -m u:alice:rwx /home
步骤二: 赋予alice对以后在/home下新建的文件有读、写、执行权限 (使alice的权限继承)
# d default 继承 #
[root@tianyun ~]# setfacl -m d:u:alice:rwx /home
网友评论