一、特殊位: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