Linux系统文件高级权限设置
1.文件隐藏属性
chattr
chattr [+-=] [ASacdi] 文件名或目录
+:增加某一个特殊参数,其他原本存在参数不动
-:删除某一个特殊参数,其他原本存在参数不动
=:设置固定参数
A:读写文件或目录时,他的服务时间atime不变,可以避免I/O较慢的机器过度读写磁盘。
S:当修改文件或目录是自动同步写入磁盘中
a:被设置的文件只能写入,对文件不能删除也不能修
改数据,只有root能设置
c:自动压缩,读取时自动解压缩
d:当dump备份时,设置为d的文件或目录不会被dump
i:让一个文件不能删除、改名、设定连接、写入,只有root能用
注意最常用的是a、i。root用户经常使用保护系统
如:禁止在系统中新建、删除用户,同被设置的文件不能被删除
chattr +i /etc/passwd /etc/shadow
如果想取消:
chattr -i /etc/passwd /etc/shadow
如果要保护日志文件防止清空日志
chattr +a /var/log/messages
lsattr:查看隐藏权限
chattr +ai /tmp/test
lsattr /tmp
当然chattr可以使用-R递归设置
lsattr使用-R连同子目录的数据也列出
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------
2.文件的访问控制列表(acl),这个有点类似于NTFS系统的acl,这对于给特定用设置特定的权限非常有用
定义文件的acl使用setfacl
查看文件的acl使用getfacl
如:想给特定用户u01设置读写执行的权限
setfacl -m user:u01:rwx /etc/yum.repos.d/
查看使用
getfacl /etc/yum.repos.d/
删除权限(注意不用指明权限列表)
setfacl -x user:u01 /etc/yum.repos.d/
3.Set UID
SUID的限制与功能:
1)SUID权限仅仅对二进制(binary program)有效
2)执行者对于该程序有x权限
3)该权限仅仅在执行该程序是有效(run-time)
4)执行者将被赋予owner的权限
举个例子,这就像皇帝的尚方宝剑、执剑者有皇帝的权利,但是这仅仅是尚方宝剑在他手里的时间里。
linux中的passwd就是最好的例子,它被设置了SUID、普通用户也可以改密码。
注意在设置时如果该文件有x
使用ls -l查看在owner的权限为上为小写的s
如果没有,则为S。
设置的方法:
chmod u+s 文件
4.SGID
与suid不同,SGID可以对目录或文件设置:
如果是对文件设置SGID他的功能和限制如下,
1)SGID权限对二进制(binary program)有效
2)执行者对于该程序有x权限
3)该权限仅仅在执行该程序是有效(run-time)
4)执行者将被赋予group的权限
/usr/bin/locate就是个例子
如果是对目录设置SGID他的工能和限制如下、
1)用户若对此目录具有r与x的权限是,该用户能够进入目录
2)用户在此目录下的有效组(effective group)将会变成改目录的group
3)用途:若用户在此目录下具有w权限,则使用者所新建的文件其group将变成该目录的group
4)SGID对于团队项目开发来说是非常有用的设置的方法:
chmod g+s
5.Sticky Bit
SBIT目前只对目录有效,对文件无效。他的作用:
当多个用户对于此目录具有w、x权限,用户新建的文件或目录只有root有权利删除,即,其他用户只能对自己的文件进行del、rename、move等动作,而无法删除其他人的文件。
系统中的/tmp就是这样一个目录
设置的方法:
chmod o+t