linux中文件的特殊权限
1.sticky 粘制位
只针对目录有效,当一个目录上有sticky权限时,这个目录中的文件只能被文件的所有者删除
设定方式:
chmod o+t direcotry
chmod 1777 direcotry
chmod 1xxx direcotry
(1)先在超级用户下建立一个目录 mkdir /westos1
然后设置监控命令j监控改目录以及改目录下的文件:
watch -n 1 “ls -ld /westos1 ; ls -l /westos1”
并且在超级用户下设置满权限 chmod 777 /westos1
(2)在超级用户下建立两个普通用户linux1 linux2
分别切换到两个普通用户下建立文件file1 file2
useradd linux1 useradd linux2 su - linux1 touch /westos1/file1 exit su - linux2 touch /westos1/file2 exit
(3)linux1用户可以删除linux2用户建立的文件file2,这样做很不安全
怎样解决这个问题?我们可以设置特殊权限t
su - linux1
rm -fr /westos1/file2
在超级用户模式下给westos1这个目录增加t权限
chmod o+t /westos1
给westos1目录加上t权限以后,linux2用户就不能删除linux1用户建立的file1文件了
su - linux2
rm -fr /westos1/file1
2.sgid 强制位
设定方式:
chmod g+s file|dir
chmod 2xxx file|dir
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
(1)首先在超级用户下建立一个目录
并且对这个目录进行监控
mkdir /westos2
watch -n 1 “ls -ld /westos2 ; ls -l /westos2”
查看这个目录的权限:
ls -ld /westos2
(3)在超级用户下建立一个新用户,并且将新建目录的用户组变为刚刚新建的用户
然后在改目录下建立新的文件,发现此文件的用户组仍然为超级用户,
并不是刚刚 新建的那个用户
useradd linux3
chgrp linux3 /westos2
touch /westos2/file3
(4) 为了使在目录中建立的文件都属于目录的用户组,需要在目录上加上s权限
由此可见,当给目录加上s权限时,目录的所有组权限会出现s,此时建立的文件的所有组为目录的所有组。
对文件:只针对二进制可执行文件,当文件上有s权限时任何人执行此文件产生的进程都属于文件的所有组
chmod g+s /westos2
touch /westos2/file4
ls -ld /westos2
先监控二进制文件的进程:
ps -ax -o user,group,comm | grep watch
ls -l /bin/watch
查看该二进制文件的权限:
ls -l /bin/watch
(3)以rootls -l /bin/watch
身份启动一个进程,这个进程的所有人和所有组均为root
然后将改文件的所有组改为linux3,发现并没有改变,仍为toot
/bin/watch -n 1 date
chgrp linux3 /bin/watch
给二进制文进加上s权限,重新开启一个新的进程
chmod g+s /bin/watch
3.suid 冒险位
作用:只针对二进制可执行文件,当文件上有suid权限时任何人执行这个文件中程序产生的进程都属于文件的所有人
设定方式:
chmod u+s file
chmod 4xxx file
(1)监控二进制文件的进程:
ps -ax -o user,group,comm | grep watch