云服务器

1. s位叫特权位,英文的叫法有setuid,setgid,suid,sgid等

特权位s    
一个可执行文件拥有s位时,当别的用户来执行这个可执行文件的话,使用的权限是此可执行文件属主或者属组的权限

只针对前三位,中间三位
对目录可以加,但是无效,因为目录不是命令,根本不能执行它

# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 17  2012 /usr/bin/passwd
# ll /etc/shadow
----------. 1 root root 1434 Jul 17 09:27 /etc/shadow


--普通用户修改密码使用passwd能改自己的密码,但是密码是存放在/etc/shadow里,也就是说普通用户对/etc/shadow没有写的权限,但passwd可执行文件的前三位有s位,所以普通在调用passswd时是用的root的权限

# chmod u+s 1.txt --suid
# chmod g+s 1.txt --guid

小实验:
<1>,测试passwd命令的s位,去掉其s位,普通用户就不能自己改自己密码了,加上s位就可以了
chmod 777 /usr/bin/passwd 去掉s位

chmod 4755 /usr/bin/passwd 添加s位

<2>,/bin/touch这个命令是没有s位的,你可以尝试加上s位,然后用普通用户touch文件,观察效果。做完测试后,记得改回来也就是把s位去掉

chmod 4755  /bin/touch


<3>,普通用户能关机吗?怎么让普通用户关机

可以对关机命令加s位来让普通用户能关机,在rhel6下测试shutdown可以这样做,halt,init不能这样做
这只是一个理论讨论,实际情况不会这么做的

# shutdown -h now

2. 粘贴位t --只针对目录有效

特别用在/tmp目录

有t位的目录,任何用户在有权限的情况下是可以创建文件和目录,就算是有权限删除别人的文件或目录也不能删除
自己只能删除自己创建的目录,用于一些共享上传的文件服务器场合

会提示Operation not permitted --这是操作不允许,不是pemission denied  

s位和t位注意的地方:

用数字表示

前三位上加s    4
中间三位加s 2
后三位加t 1


chmod 1777 /tmp

s位和t位大小写的区别 

小写的话就表示 有x执行权限
大写的话就表示 没有x执行权限 

3. 隐藏属性

lsattr --查看隐藏属性
chattr --修改隐藏属性

# lsattr 1.txt
-------------e- 1.txt

# chattr +A 1.txt --这个属性让文件的access time访问后也不会变化,节省了IO(IO优化);默认情况下rhel5,访问一次atime就会跟着变一次,rhel6下只有当atime等于或早于mtime和ctime之一时,才会访问跟着变,否则不会变。(原因我们在后面讲mount参数时再补充)

# lsattr 1.txt
-------A-----e- 1.txt

# stat 1.txt |tail -3 --用cat命令访问这个文件,再用此命令查看access time,会发现不再变化
Access: 2014-07-17 11:12:58.589838878 +0800
Modify: 2014-07-17 11:12:58.589838878 +0800
Change: 2014-07-17 11:13:15.405701371 +0800

# chattr +a 1.txt

一个文件加了a属性,重定向覆盖以前的内容不允许,也不可修改和删除,不可重命名,不可硬链接,可以软链接,但追加内容是可以的
# lsattr 1.txt
-----a-------e- 1.txt

# echo 456 > 1.txt
bash: 1.txt: Operation not permitted
# echo 456 >> 1.txt

# chattr -a 1.txt
# chattr +i 1.txt  --加了i属性,此文件不可被修改,不可重命名,不可删除,不可做硬链接,可以软链接,只可以看内容
普通用户使用隐藏属性,可以添加A位,不能添加a和i位,也不能删除a和i位

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: