权限管理

一、基本权限(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权限对文件和目录的意义?
image.png

二、基本权限ACL

原理:

acl权限中有个"mask"的选项,它就是ACL权限的最大权限,现在是rwx,当你设置某个用户或组的ACL权限时,要跟mask的权限“相与”之后产生的权限才是该用户的最终权限,也就是加入mask的最大权限是rx,但是你给st用户设置的是rwx权限,此时st用户它的权限只有rx的权限,因为与最大权限“相与”得出的结果就是rx

图示:

权限管理_第1张图片
image.png

生产案例:

生产环境中,常用于临时降低用户或组(除属主和其他人)的权限

请注意文件基本权限。
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

你可能感兴趣的:(权限管理)