一、基本权限(UGO)
1 权限对象
属主: u
属组: g
其他人: o
所有人: a(u+g+o)
2 权限类型(r,w,x)数字表示(4,2,1)
2.1设置权限:
=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 //改文件属组
示例1:
针对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.r、w、x权限对文件和目录的意义?
二、基本权限ACL
原理:
acl权限中有个"mask"的选项,它就是ACL权限的最大权限,现在是rwx,当你设置某个用户或组的ACL权限时,要跟mask的权限“相与”之后产生的权限才是该用户的最终权限,也就是加入mask的最大权限是rx,但是你给st用户设置的是rwx权限,此时st用户它的权限只有rx的权限,因为与最大权限“相与”得出的结果就是rx
图示:
生产案例:
生产环境中,常用于临时降低用户或组(除属主和其他人)的权限
请注意文件基本权限。
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:r-x /home
二、高级权限
高级权限的类型:suid=4 sgind=2 sticky=1
suid,sgid针对文件程序时,具备临时提升权限
sgid针对目录时,该目录具备继承属组的特性
sticky针对目录设置,该目录中的内容只有root和属主能够删除
例子1 :普通用户通过suid提权(针对文件)
suid 普通用户通过suid提权 <针对文件>
在进程文件(二进制,可执行)上增加suid权限
[root@tianyun ~]# chmod u+s /usr/bin/cat
[alice@tianyun ~]$ cat /root/file1.txt
请在试验后,将cat的suid权限除去。
示例2:sticky 用户只能删除自己的文件 <针对目录>
[root@tianyun ~]# mkdir /home/dir1
[root@tianyun ~]# chmod 777 /home/dir1
测试:user1在/home/dir1建立文件, user2尝试删除!
[root@tianyun ~]# chmod o+t /home/dir1
[root@tianyun ~]# ll -d /home/dir1
rwxrwxrwt 2 root root 4096 09-02 02:26 /home/dir1
谁可以删除:
root
文件的所有者
目录的所有者
文件chattr属性
文件权限管理之: 文件属性
注:设置文件属性(权限),针对所有用户,包括root
1 先创建三个文件进行对比。查看默认权限。
[root@tianyun ~]# touch file100 file200 file300 file400
[root@tianyun ~]# lsattr file100 file200 file300
-------------- file100
-------------- file200
-------------- file300
2 加上不同属性。
[root@tianyun ~]# man chattr
[root@tianyun ~]# chattr +a file100 //只能追加
[root@tianyun ~]# chattr +i file200 //不能更改,重命名,删除
[root@tianyun ~]# chattr +A file300 //不能更改访问时间。
3 查看不同属性
[root@tianyun ~]# lsattr file100 file200 file300
-----a-------e- file100
----i--------e- file200
-------A-----e- file300
4 尝试追加,删除,更改。100不能覆盖,200不能删除,300改了不计时间。
[root@tianyun ~]# echo 111 > file100 //以覆盖的方式写入
bash: file100: Operation not permitted
[root@tianyun ~]# rm -rf file100
rm: cannot remove `file100': Operation not permitted
[root@tianyun ~]# echo 111 >> file100 //以追加的方式写入,例如日志文件
[root@tianyun ~]# echo 111 > file200
bash: file200: Permission denied
[root@instructor ~]# echo 111 >> file200
bash: file200: Permission denied
[root@tianyun ~]# rm -rf file200
rm: cannot remove `file200': Operation not permitted
5 记录file300 和file400 访问时间
[root@localhost ~]# stat file300 file400
观察两个文件的访问时间。截图
6 更改和访问文件。
[root@localhost ~]# date 06010000
2018年 06月 01日 星期五 00:00:00 CST
[root@localhost ~]# echo 111 >> file300
[root@localhost ~]# echo 111 >> file400
[root@localhost ~]# cat file300 file400
7 观察file300 和file400 访问变化时间
[root@localhost ~]# stat file300 file400
对比第五步文件访问的信息。300没有变化,400有变化。
理解-A锁定了访问时间。
6 将属性还原。
[root@tianyun ~]# chattr -a file100
[root@tianyun ~]# chattr -i file200
[root@tianyun ~]# chattr -A file300
>进程掩码mask umask
示例1:观察系统默认掩码
示例1: 在shell进程中创建文件
[root@tianyun ~]# umask //查看当前用户的umask权限
0022
[root@tianyun ~]# touch file800
[root@tianyun ~]# mkdir dir800
[root@tianyun ~]# ll -d dir800 file800
drwxr-xr-x. 2 root root 4096 3月 11 19:40 dir800
-rw-r--r--. 1 root root 0 3月 11 19:40 file800
示例2:临时修改shell umask
示例2:修改shell umask值(临时)
[root@tianyun ~]# umask 000
[root@tianyun ~]# mkdir dir900
[root@tianyun ~]# touch file900
[root@tianyun ~]# ll -d dir900 file900
drwxrwxrwx. 2 root root 4096 3月 11 19:44 dir900
-rw-rw-rw-. 1 root root 0 3月 11 19:44 file900
示例3:修改shell umask值(永久 建议不要)
示例3:修改shell umask值(永久 建议不要)
[root@tianyun ~]# vim /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
[root@tianyun ~]# source /etc/profile //立即在当前shell中生效
示例4:通过umask决定新建用户HOME目录的权限
示例4:通过umask决定新建用户HOME目录的权限
[root@tianyun ~]# vim /etc/login.defs
UMASK 077
[root@tianyun ~]# useradd gougou
[root@tianyun ~]# ll -d /home/gougou/
drwx------. 4 gougou gougou 4096 3月 11 19:50 /home/gougou/
[root@tianyun ~]# vim /etc/login.defs
UMASK 000
[root@tianyun ~]# useradd yangyang
[root@tianyun ~]# ll -d /home/yangyang/
drwxrwxrwx. 4 yangyang yangyang 4096 3月 11 19:53 /home/yangyang/
示例5:例如vsftpd进程
/etc/vsftpd/vsftpd.conf 【了解】
示例5:例如vsftpd进程 /etc/vsftpd/vsftpd.conf 【了解】
[root@tianyun ~]# yum -y install vsftpd
[root@tianyun ~]# man vsftpd.conf
anon_umask
local_umask