一、特殊位:suid sgid sticky
1、高级权限的内容
suid=4 sgid=2 sticky=1
suid 针对文件程序时,具备提升权限
sgid 针对目录时,该目录具备继承属组的特性
sticky 针对目录设置,该目录中的内容只有root和属主能够删除
2、思考
问题一、 为什么会失败
[root@ccc home]# ll /root/file100
-rw-r--r--. 1 root root 0 4月 28 16:04 /root/file100
[root@ccc home]# ll /root/file100
-rw-r--r--. 1 root root 0 4月 28 16:04 /root/file100
[root@ccc home]# su userQ
[userQ@ccc home]$ cat /root/file100
cat: /root/file100: 权限不够
分析:
root运行的是超管的权限,普通用户运行时是普通用户的权限(cat 命令)
3、示例一:
suid 普通用户通过suid提权<针对文件> 注意:试验后,将cat的suid权限除去
在进程文件(二进制,可执行)上增加suid的权
[root@ccc ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 54080 11月 6 2016 /bin/cat
[root@ccc ~]# chmod u+s /bin/cat
[root@ccc ~]# ll /bin/cat
-rwsr-xr-x. 1 root root 54080 11月 6 2016 /bin/cat
[root@ccc ~]# su userQ
[userQ@ccc root]$ cat /root/file100
4、 示例2 suid(passwd)
普通用户可以修改密码
[root@ccc ~]# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /bin/passwd
[root@ccc ~]# ps aux | grep passwd
root 10800 0.0 0.0 112664 968 pts/1 S+ 17:08 0:00 grep --color=auto passwd
5、示例三:sgid
sgid新建文件继承目录属组<针对目录>
[root@ccc ~]# mkdir 桌面/dir1
[root@ccc ~]# chgrp hr 桌面/dir1
[root@ccc ~]# ll -d 桌面/dir1
drwxr-xr-x. 2 root hr 6 4月 28 17:26 桌面/dir1
[root@ccc ~]# chmod g+s 桌面/dir1
[root@ccc ~]# ll -d 桌面/dir1
drwxr-sr-x. 2 root hr 6 4月 28 17:26 桌面/dir1
[root@ccc ~]# touch 桌面/dir1/file1
[root@ccc ~]# ll 桌面/dir1/file1
-rw-r--r--. 1 root hr 0 4月 28 17:28 桌面/dir1/file1
6、示例4: sticky (谁可以删除,root、文件的所有者、目录的所有者)
[root@ccc ~]# mkdir /home/dir1
[root@ccc ~]# chgrp hr /home/dir1
[root@ccc ~]# ll -d /home/dir1
drwxr-xr-x. 2 root hr 6 4月 28 17:42 /home/dir1
[root@ccc ~]# su - hr1
上一次登录:六 4月 28 17:33:57 CST 2018pts/1 上
[hr1@ccc ~]$ touch /home/dir1/file
[hr1@ccc ~]$ exit
登出
[root@ccc ~]# su - hr2
上一次登录:六 4月 28 17:38:34 CST 2018pts/0 上
[hr2@ccc ~]$ rm /home/dir1/file
rm:是否删除有写保护的普通空文件 "/home/dir1/file"?y
rm: 无法删除"/home/dir1/file": 权限不够
[hr2@ccc ~]$ cd /home
[hr2@ccc home]$ exit
登出
[root@ccc ~]# ll -d /home/dir1
drwxr-xr-x. 2 root hr 18 4月 28 17:44 /home/dir1
[root@ccc ~]# chmod 777 /home/dir1
[root@ccc ~]# ll -d /home/dir1
drwxrwxrwx. 2 root hr 18 4月 28 17:44 /home/dir1
[root@ccc ~]# su - hr2
上一次登录:六 4月 28 17:44:49 CST 2018pts/1 上
[hr2@ccc ~]$ rm /home/dir1/file
rm:是否删除有写保护的普通空文件 "/home/dir1/file"?y
[hr2@ccc ~]$ cd /home/dir1
[hr2@ccc dir1]$ ls
[hr2@ccc dir1]$ touch /home/dir1/file2
[hr2@ccc dir1]$ exit
登出
[root@ccc ~]# chmod o+t /home/dir1
[root@ccc ~]# ll -d /home/dir1
drwxrwxrwt. 2 root hr 19 4月 28 17:48 /home/dir1
[root@ccc ~]# su - hr1
上一次登录:六 4月 28 17:43:51 CST 2018pts/1 上
[hr1@ccc ~]$ rm /home/dir1/file2
rm:是否删除有写保护的普通空文件 "/home/dir1/file2"?y
rm: 无法删除"/home/dir1/file2": 不允许的操作
7、设置特殊权限
字符:chmod u+s file
chmod g+s dir
chmod o+t dir
数字:
chmod 4777 fille
chmod 2770 dir
chmod 1770 dir
二、文件属性chattr
文件属性管理:文件属性
注意:设置文件属性(权限),针对所有用户,包括root
1、先创建三个文件进行对比,查看默认权限
[root@ccc ~]# touch file100
[root@ccc ~]# touch file200
[root@ccc ~]# touch file300
[root@ccc ~]# lsattr file100 file200 file300
---------------- file100
---------------- file200
---------------- file300
2、加上不同的属性
[root@ccc ~]# chattr +a file100 // 只能追加
[root@ccc ~]# chattr +i file200 //不能更改,重命名,删除
[root@ccc ~]# chattr +A file300 //不能更改访问时间
3、查看不同属性
[root@ccc ~]# lsattr file100 file200 file300
-----a---------- file100
----i----------- file200
-------A-------- file300
4、尝试追加,删除,更改。 100不能覆盖,200不能删除,300改了不计时间。
[root@ccc ~]# echo 111 > file100
bash: file100: 不允许的操作
[root@ccc ~]# rm -f file100
rm: 无法删除"file100": 不允许的操作
[root@ccc ~]# echo 111 >> file100 //以追加的方式写入。例如日志文件。
5、记录file300和file400的访问时间。
[root@ccc ~]# stat file300 file400
6、更改和访问文件
[root@ccc ~]# echo 33 > file300
[root@ccc ~]# echo 33 > file400
[root@ccc ~]# stat file300 file400
7、观察file300和file400访问变化时间。
最近访问:2018-04-28 16:04:09.603629325 +0800
最近更改:2018-04-28 19:03:33.522264761 +0800
最近改动:2018-04-28 19:03:33.522264761 +0800
最近访问:2018-04-28 18:57:07.457373216 +0800
最近更改:2018-04-28 19:03:38.172251410 +0800
最近改动:2018-04-28 19:03:38.172251410 +0800
file300 的时间没有变化 file400的时间有变化
8、还原文件的属性
[root@ccc ~]# chattr -a file100
[root@ccc ~]# chattr -i file200
[root@ccc ~]# chattr -A file300
三、进程掩码 mask umask
1、概述:新建文件、目录的默认权限会受到umask的影响,umask表示要剪掉的权限
2、用途:shell (vim,touch) umask 新文件或目录的权限
vsftpd umask 新文件或目录权限
samba umask 新文件或目录权限
useradd umask 用户HOME
3、示例一: 观察系统默认掩码
[root@ccc ~]# umask
0022
4、示例二、修改 shell umask 值(临时)
[root@ccc ~]# umask 000
[root@ccc ~]# mkdir dir888
[root@ccc ~]# touch file888
[root@ccc ~]# ll file888 dir888/ -d
drwxrwxrwx. 2 root root 6 4月 28 19:15 dir888/
-rw-rw-rw-. 1 root root 0 4月 28 19:16 file888
5、示例三:修改 shell umask值(建议不要)
# vim /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
[root@tianyun ~]# source /etc/profile //立即在当前shell中生效
6、示例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/
6、示例5:例如vsftpd进程 /etc/vsftpd/vsftpd.conf 【了解】
[root@tianyun ~]# yum -y install vsftpd
[root@tianyun ~]# man vsftpd.conf
anon_umask
local_umask