文件安全策略

Linux系统中文件的权限

文件或目录的访问权限分为只读、只写、和可执行三种。

有三种类型的用户客队文件目录访问:文件所有者,同组用户、其他用户

每一文件或目录的访问权限都有三组,每组用三位标识,分别为

文件属主 -- 读、写和执行权限;

与属主同组的用户 -- 读、写和执行权限;

系统中其他用户 -- 读、写和执行权限。

linux可以利用chmod命令来重新设定不同的访问权限

利用chown命令来更改某个文件或目录的所有者

利用chgrp命令来更改某个文件或目录的用户组

chmod -R 777 test
# -R 递归权限变更
# 777 分别给文件所有者/文件所属组/其他用户设置权限
chown -R admin test
chown -R admin:users test
# -R 递归更改所有者
chgrp -R users test
# -R 递归更改所属组

Suid,Sgid和粘滞位

Suid介绍:

如果一个文件有suid位,则执行这个文件的时候,系统将忽视当前用户的权限,而直接以文件本身的owner身份来执行

Sgid介绍:

如果一个文件有Sgid位,则无论是那个用户在此文件夹下创建了文件,文件的所属组都跟文件夹的所属组一样。

粘滞位sticky bit

如果一个文件夹设置了粘滞位,则其中的文件只有文件的owner或root才能删除,粘滞位会自动屏蔽文件夹的写入权限。

chmod 7777 test
# 4 为 SUID 2 为 SGID 1 为 SBIT

 

使用find -perm命令查找以上属性

# 查找suid程序
    find / -perm -4000 -ls
# 查找Sgid程序
    find / -perm -2000 -ls

setfacl与getfacl

getfacl:取得某个文件/目录的ACL设定项目

setfacl:设定某个文件/目录的ACL规范

setfacl -m u::rwx acl_test1
setfacl -m g:mygroup1:rx acl_test1
getfacl acl_test1

# setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名
# 设定规范:『 u:[使用者账号列表]:[rwx] 』
选项与参数:
-m :设定后续的 acl 参数给文件使用,不可与 -x 合用;
-x :删除后续的 acl 参数,不可与 -m 合用;
-b :移除『所有的』 ACL 设定参数;
-k :移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍;
-R :递归设定 acl ,亦即包括次目录都会被设定起来;
-d :设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值

文件扩展属性工具

chattr(change file attribute)和Lsattr(list file attribute)

# 用chattr命令防止系统中某个关键文件被修改
    chattr +i test.txt
# 让某个文件只能往里面追加内容,不能删除,一些日志文件使用这种操作。
    chattr +a test.txt