Linux - 安全 - 权限管理

Linux 权限管理

文件属性

属性命令 ls -l

drwxr-xr-x.   2 root root   15 6月  13 16:23 wuhd
-rwsr-xr--+ 1 root root 27832 6月  10 2014 /usr/bin/passwd
lrwxrwxrwx.   1 root root    8 5月  20 00:29 sbin -> usr/sbin
brw-rw----. 1 root disk      8,   0 6月  13 06:54 sda
crw-rw-rw-. 1 root root      1,   5 6月  13 06:54 zero

说明:
第1列第1个字符分别有b、c、d、-、l,分别代表
[b] 表示装置文件里面的可供储存的接口设备;
[c] 表示装置文件里面的串行端口设备;
[d] 表示目录;
[-] 表示文件;
[l] 表示链接文件;
第2-4列三个位表示属主权限标记;
第5-7列三个位表示组权限标记;
第8-10列三个位表示其他用户权限标记;
第11列表示特殊权限位,+表示存在ACL权限;
[r] 表示读,用数字4标记;
[w] 表示写,包括创建、删除,用数字2标记;
[x] 表示执行,用数字1标记;

更改操作权限

文字设定法 chmod

格式:chmod ugoa[rwx] <文件名或目录名>
[u] 属主(user)
[g] 属组用户(group)
[o] 其他用户(other)
[a] 所有用户(all)
[+] 添加权限
[-] 删除权限
[=] 替换原有权限
[r] 允许读取
[w] 允许写入、创建、删除
[x] 允许执行

# 对属主用户添加执行权限,对其他用户删除读取权限,针对文件text.txt
chmod u+x,o-r text.txt
# 分配权限=的写法
chmod u=rwx,g=rw,o=rx text.txt

数字设定法 chmod

格式:chmod n1n2n3 <文件名或目录名>
n1 属主权限
n2 组用户权限
n3 其他用户权限
数字分别按r=4、w=2、x=1进行相加组合而成。

# 对文件text.txt赋予最高权限
chmod 777 text.txt;

更改属主和组

命令 chown

格式:chown [-R] <用户[:组]> <文件名或目录名>

# 将www目录的属主和组由root:root改为wuhd:wuhd
chown wuhd:wuhd www;
# 加-R表示将www目录及其子目录下的所有文件的属主和组都修改为wuhd:wuhd
chown -R wuhd:wuhd www;

设置权限掩码

命令 umask

权限掩码是告诉系统当创建文件或目录时不应该赋予的权限。
格式:umask [-S] [u0u1u2u3]
[u0] 表示特使权限,0为不设置,4为SUID权限,2为SGID权限,1为sticky-bit权限
[u1] 不允许属主有的权限,0为拥有全部权限
[u2] 不允许同组人有的权限,0为拥有全部权限
[u3] 不允许其他人有的权限,0为拥有全部权限

# 查看当前的权限掩码,root用户输出0022,普通用户输出0002
umask;
# 权限掩码的文字表达,表示实际赋予的权限,输出u=rwx,g=rx,o=rx
umask -S;
# 将普通用户的掩码设置成root用户的权限掩码
umask 0022;

设置特殊权限

文字设定法 chmod

# 为文件 /usr/bin/passwd 添加SUID权限
chmod u+s /usr/bin/passwd;
# 为文件 /usr/bin/passwd 添加SGID权限
chmod g+s /usr/bin/passwd;
# 为文件 /usr/bin/passwd 添加sticky-bit权限
chmod o+t /usr/bin/passwd;

设置ACL权限

命令 setfacl

格式:setfacl [-R] {-m|-x} <u:用户名:{r|w|x}> <文件名或目录名>
[-R] 递归目录
[-m] 修改ACL权限
[-x] 删除ACL权限

[root@master ~]# ll /usr/bin/passwd
-rwsr-xr--+ 1 root root 27832 6月  10 2014 /usr/bin/passwd
# 第11位为+号表示已设置ACL权限
# 设置所有普通用户不能修改密码
chmod o-x /usr/bin/passwd;
# 单独给普通用户wuhd赋予修改密码的权限
setfacl -m u:wuhd:x /usr/bin/passwd;
# 删除文件 /usr/bin/passwd 所有ACL权限
setfacl -b /usr/bin/passwd;
# 单独删除某个用户的ACL权限
setfacl -x u:wuhd /usr/bin/passwd;

命令 getfacl

# 查看ACL权限
getfacl /usr/bin/passwd;

输出:

# file: usr/bin/passwd
# owner: root
# group: root
# flags: s--
user::rwx
user:wuhd:--x
group::r-x
mask::r-x
other::r--

设置文件属性

安装 e2fsprogs

# 安装
yum install -y e2fsprogs;

命令 lsattr

# 查看文件的属性
lsattr fluent.conf;

命令 chattr

a:让文件或目录仅供附加用途;
i:不得任意更动文件或目录;

[-R]:递归处理,将指令目录下的所有文件及子目录一并处理;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性;

# 设置任何用户(包括root用户)只读且不可删除
chattr +i fluent.conf;
# 取消任何用户(包括root用户)只读且不可删除
chattr -i fluent.conf;
# 设置任何用户(包括root用户)只能追加内容且不可删除
chattr +a fluent.conf;
# 取消任何用户(包括root用户)只能追加内容且不可删除
chattr -a fluent.conf;

相关推荐