文件的特殊权限

命令 : chattr

语法: chattr  [+-=][ASaci [文件或者目录名]

‘+-=’ : 分别为增加、减少、设定
‘A’ : 增加该属性后,文件或目录的atime将不可被修改;
‘S’ : 增加该属性后,会将数据同步写入磁盘中;
‘a’ : 增加该属性后,只能追加不能删除,非root用户不能设定该属性;
‘c’ : 自动压缩该文件,读取时会自动解压;
‘i’ : 增加后,使文件不能被删除、重命名、设定链接接、写入、新增数据;
# chattr +i test2
# touch test2/test1
touch: 无法创建'test2/test1': 权限不够

# chattr -i test2
# touch test2/test1
# chattr +i test2
# rm -f test2/test1
rm: 无法删除'test2/test1': 权限不够
对 ‘test2’ 目录增加 ‘i’ 权限后,即使是root账户也不能在 ‘test2’ 里创建或删除test1文件。

# chattr -i test2
# touch test2/test3
# ls test2
test1  test3
# chattr +a test2
# rm -f test2/test1
rm: 无法删除 'test2/test1': 不允许的操作
# touch test2/test4
# ls test2
test1  test3  test4
test2目录增加 ‘a’ 权限后,只可以在里面创建文件,而不能删除文件。文件同样可以适用这些权限。

# chattr +a test2/test1
# echo '11111' > test2/test1
-bash: test2/test1: 不允许的操作
# echo '11111' >> test2/test1
# cat test2/test1
11111
# chattr +i test2/test3
# echo '11111' >> test2/test3
-bash: test2/test3: 权限不够
# echo '11111' > test2/test3
-bash: test2/test3: 权限不够
# rm -f test2/test3
rm: 无法删除'test2/test3': 权限不够


命令 : lsattr
该命令用来读取文件或者目录的特殊权限,语法为 lsattr  [-aR] [文件/目录名]
‘-a’ : 类似与ls 的-a 选项,即连同隐藏文件一同列出;
‘-R’ : 连同子目录的数据一同列出

# lsattr test2
-----a-------e- test2/test1
----i--------e- test2/test3
-------------e- test2/test4
# lsattr -aR test2
----i--------e- test2/.
-----a-------e- test2/test1
-------------e- test2/..
----i--------e- test2/test3
-------------e- test2/test4

set uid 和set gid 和 sticky bit

set uid :该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。比如 passwd 这个命令就具有该权限。当普通用户执行 passwd 命令时,可以临时获得 root 权限,从而可以更改密码。

set gid:该权限针对目录。目录被设置这个权限后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。

sticky bit:可以理解为放删除位。一个文件是否可以被某用户删除,主要取决于该文件所在目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。如果希望用户能够添加文件但不删除该目录下其他用户的文件,则可以对父目录增加该权限。设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。

例如,passwd 命令设置了一个 set uid 权限,而/tmp 目录则设置了一个 sticky bit 权限。查看一下它们的权限:

# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月  22 2012 /usr/bin/passwd

# ls -ld /tmp/
drwxrwxrwt. 5 root root 4096 10月 31 14:13 /tmp/

从上面你会发现:passwd 显示的是 rws 而非传统的 rwx ,用数字表示为 4755 。/tmp/显示的 rwt 而非rwx ,用数字表示为1777。那么这个4和1是如何计算出来的呢?当有特殊权限时,第一位数字可以是0   1(--t)   2(-s-)   3(-st)   4(s--)   5(s-t)   6(ss-)   7(sst)。

再回过头来看passwd ,它是s--,所以是4;而/tmp/是--t ,所以是1;


配置这些特殊权限的方法和之前一样。比如我想给一个文件增加一个set uid 权限,那么命令为" chmod u+s filename ",而去掉这个权限的命令则为" chmod u-s filename "。同理,想设置一个set gid 权限的命令为为 " chmod g+s dirname ",设置一个stick bit 权限的命令为 " chmod o+t dirname "。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值