潘小安 2019-06-27
x
)权限chmod 4755 文件名 chmod +x,u+s 文件名
755
644
,此时是将特殊权限省略了。4
,代表SUID权限。rws
。x
)权限,否则文件所有者对应的权限会变为 rws
,这是无效的权限。[root/tmp/suid]# touch 4755.sh [root/tmp/suid]# touch u+s.sh [root/tmp/suid]# ll 总用量 4.0K -rw-r--r-- 1 root root 0 6月 8 09:22 4755.sh -rw-r--r-- 1 root root 0 6月 8 09:22 u+s.sh [root/tmp/suid]# chmod 4755 4755.sh [root/tmp/suid]# chmod +x,u+s u+s.sh [root/tmp/suid]# ll 总用量 4.0K -rwsr-xr-x 1 root root 0 6月 8 09:22 4755.sh* -rwsr-xr-x 1 root root 0 6月 8 09:22 u+s.sh*
chmod 0755 文件名 chmod u-s 文件名
[root/tmp/suid]# ll 总用量 4.0K -rwsr-xr-x 1 root root 0 6月 8 09:22 4755.sh* -rwsr-xr-x 1 root root 0 6月 8 09:22 u+s.sh* [root/tmp/suid]# chmod 0755 4755.sh [root/tmp/suid]# chmod u-s u+s.sh [root/tmp/suid]# ll 总用量 4.0K -rwxr-xr-x 1 root root 0 6月 8 09:22 4755.sh* -rwxr-xr-x 1 root root 0 6月 8 09:22 u+s.sh*
/etc/shadow
文件,而该文件的权限是 000
。理论上来说,应该只有root用户才有权限修改该文件。[root/tmp/suid]# ll /etc/shadow ---------- 1 root root 829 6月 8 02:21 /etc/shadow
passwd
命令时,身份自动切换成root,所以普通用户可以修改自己的密码。[root/tmp/suid]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 28K 6月 10 2014 /usr/bin/passwd*
find / -perm -4000
/usr/bin/mount /usr/bin/su /usr/bin/chsh /usr/bin/chage /usr/bin/gpasswd /usr/bin/newgrp /usr/bin/chfn /usr/bin/umount /usr/bin/pkexec /usr/bin/crontab /usr/bin/sudo /usr/bin/passwd /usr/sbin/pam_timestamp_check /usr/sbin/unix_chkpwd /usr/sbin/usernetctl /usr/sbin/mount.nfs
/
,/usr
等。find / -perm -4000 -o -perm -2000
#!/bin/bash find / -perm -4000 -o -perm -2000 > /tmp/setuid.check for i in $(cat /tmp/setuid.check) do grep $i /home/suid.log> /dev/null if [ "$?" != "0" ] then echo "$i isn't in listfile!">>/home/suid_log_$(date +%F) fi done rm -rf /tmp/setuid.check
x
)权限r
和 x
权限,才能进入此目录。w
权限,新建的文件的默认属组是这个目录的属组。chmod 2755 文件名 chmod +x,g+s 文件名
2
,代表SGID权限。rws
。x
)权限,否则文件所属组对应的权限会变为 rws
,这是无效的权限。x
)权限,直接设定SGID权限,则组权限会变为 r-S
,此权限不可用[root/tmp/sgid]# touch file [root/tmp/sgid]# chmod g+s file [root/tmp/sgid]# ll 总用量 0 -rw-r-Sr-- 1 root root 0 6月 8 10:44 file
[root/tmp/sgid]# chmod +x file [root/tmp/sgid]# ll 总用量 0 -rwxr-sr-x 1 root root 0 6月 8 10:44 file*
2777
(为了让普通用户可以在该目录下创建文件)[root/tmp/sgid]# chmod 2777 dir/ [root/tmp/sgid]# ll 总用量 0 drwxrwsrwx 2 root root 6 6月 8 10:48 dir/
[vagrant/tmp/sgid/dir]$ touch file [vagrant/tmp/sgid/dir]$ ll 总用量 0 -rw-rw-r-- 1 vagrant root 0 6月 8 10:52 file
chmod 0755 文件名(似乎对文件夹不好用) chmod g-s 文件名
chmod 0755 文件名
对文件有效,但似乎对文件夹无效[root/tmp/sgid]# ll 总用量 0 drwxrwsrwx 2 root root 6 6月 8 10:48 dir/ -rwxr-sr-x 1 root root 0 6月 8 10:44 file* [root/tmp/sgid]# chmod 0755 dir/ [root/tmp/sgid]# chmod 0755 file [root/tmp/sgid]# ll 总用量 0 drwxr-sr-x 2 root root 17 6月 8 10:52 dir/ -rwxr-xr-x 1 root root 0 6月 8 10:44 file*
chmod g-s 文件名
对文件和文件夹都有效[root/tmp/sgid]# ll 总用量 0 drwxrwsrwx 2 root root 6 6月 8 10:57 dir/ -rwxr-sr-x 1 root root 0 6月 8 10:44 file* [root/tmp/sgid]# chmod g-s dir/ [root/tmp/sgid]# chmod g-s file [root/tmp/sgid]# ll 总用量 0 drwxrwxrwx 2 root root 6 6月 8 10:57 dir/ -rwxr-xr-x 1 root root 0 6月 8 10:44 file*
/var/lib/mlocate/mlocate.db
文件,而该文件的权限是 640
。理论上来说,普通用户没有权限查阅该文件。[root/tmp/sgid]# ll /var/lib/mlocate/mlocate.db -rw-r----- 1 root slocate 2.4M 6月 8 03:20 /var/lib/mlocate/mlocate.db
locate
命令时,组身份自动切换成slocate,而slocate组对 /var/lib/mlocate/mlocate.db
文件有读权限,所以普通用户可以使用locate命令搜索文件。[vagrant/tmp/sgid/dir]$ ll /usr/bin/locate -rwx--s--x 1 root slocate 40K 4月 11 03:46 /usr/bin/locate*
find / -perm -2000
/usr/bin/wall /usr/bin/lockfile /usr/bin/write /usr/bin/ssh-agent /usr/bin/locate /usr/sbin/netreport /usr/sbin/sendmail.sendmail /usr/libexec/utempter/utempter /usr/libexec/openssh/ssh-keysign
但是不能删除其他用户建立的文件
不建议手工建立拥有SBIT的目录
chmod 1755 目录名 chmod o+t 目录名
1
,代表SBIT权限。rwt
。dir_1755
和 dir_o+t
两个目录,分别赋予SBIT权限[root/tmp/sbit]# mkdir dir_1755 [root/tmp/sbit]# mkdir dir_o+t [root/tmp/sbit]# [root/tmp/sbit]# [root/tmp/sbit]# chmod 1755 dir_1755/ [root/tmp/sbit]# chmod o+t dir_o+t/ [root/tmp/sbit]# ll 总用量 0 drwxr-xr-t 2 root root 6 6月 8 11:34 dir_1755/ drwxr-xr-t 2 root root 6 6月 8 11:34 dir_o+t/
chmod 0755 目录名 chmod o-t 目录名
[root/tmp/sbit]# ll 总用量 0 drwxr-xr-t 2 root root 6 6月 8 11:34 dir_1755/ drwxr-xr-t 2 root root 6 6月 8 11:34 dir_o+t/ [root/tmp/sbit]# chmod 0755 dir_1755/ [root/tmp/sbit]# chmod o-t dir_o+t/ [root/tmp/sbit]# ll 总用量 0 drwxr-xr-x 2 root root 6 6月 8 11:34 dir_1755/ drwxr-xr-x 2 root root 6 6月 8 11:34 dir_o+t/
/tmp
目录实际拥有 777 权限,正常情况下,任何用户都可以删除/tmp
目录下的文件[root/tmp/sbit]# ll -d /tmp drwxrwxrwt. 12 root root 4.0K 6月 8 11:33 /tmp/
[vagrant/tmp]$ ll /tmp/test.md -rw-r--r-- 1 root root 215 5月 31 04:24 /tmp/test.md [vagrant/tmp]$ rm test.md rm:是否删除有写保护的普通文件 "test.md"?yes rm: 无法删除"test.md": 不允许的操作
chattr [+-=] [选项] [文件或目录]
[+-=]
+
:增加权限-
:删除权限=
:设定权限i
:(insert)插入
a
:(append)追加
echo '字符串' > file
的形式向文件中追加数据。lsattr [选项] [文件名]
-a
:显示所有文件和目录-d
:若目标是目录,仅列出目录本身的属性,而不是子文件的属性i
选项不能对文件进行删除和改名,不能添加和修改文件数据。
[root/tmp/chattr]$ touch file_i [root/tmp/chattr]$ date > file_i [root/tmp/chattr]$ cat file_i 2018年 06月 08日 星期五 12:04:57 UTC
chattr +i file_i
[root/tmp/chattr]# chattr +i file_i [root/tmp/chattr]# lsattr file_i ----i----------- file_i
[root/tmp/chattr]# rm file_i rm: 无法删除"file_i": 不允许的操作
[root/tmp/chattr]# mv file_i file mv: 无法将"file_i" 移动至"file": 不允许的操作
[root/tmp/chattr]# date >> file_i bash: file_i: 权限不够
[root/tmp/chattr]# date > file_i bash: file_i: 权限不够
i
选项不能建立和删除文件,可以修改目录下文件数据
[root/tmp/chattr]# mkdir dir_i [root/tmp/chattr]# touch dir_i/file [root/tmp/chattr]# ll dir_i/ 总用量 0 -rw-r--r-- 1 root root 0 6月 8 12:13 file
chattr +i file_i
[root/tmp/chattr]# chattr +i dir_i/ [root/tmp/chattr]# lsattr -d dir_i/ ----i----------- dir_i/
[root/tmp/chattr]# touch dir_i/file2 touch: 无法创建"dir_i/file2": 权限不够
[root/tmp/chattr]# rm dir_i/file rm: 无法删除"dir_i/file": 权限不够
[root/tmp/chattr]# date > dir_i/file [root/tmp/chattr]# cat dir_i/file 2018年 06月 08日 星期五 12:17:16 UTC