linux权限管理
一、文件基本权限
1.基本权限的修改
ls -l 可查看权限
-rw-r--r-- #10位长度
第1位 - #文件类型(-普通文件 d目录 |软连接文件)
第2-4位 rw- #u所有者权限
第5-7位 r-- #g所属组权限
第8-10 r-- #o其他人权限
r 读 w 写 x 执行
chmod [选项] 模式 文件名
选项:
-R 递归
模式:
[guoa] [+-=][rwx]
[mode = 421]
例:
chmod u+x test.log
chmod g+w,o+w abc.log
chmod g-w,o-w abc.log
chmod g=rw,u=rwx abc.log
chmod a=rw abc.log
权限的数字表示
r --- 4
w --- 2
x --- 1
-rwxr-xr-x 755权限
常用权限 777 644 755
例:chmod 755 abc.log
2.权限的作用
相对文件
r:读取文件内容(cat more head tail)
w:编辑、修改、新增文件的内容(vi echo)
- 写权限不能删除文件
x:可执行
相对目录
r: 可以查询目录下文件名(ls)
w: 具有修改目录结构的权限。(新建文件和目录,
删除此目录下的文件和目录,重命名此目录下
文件和目录,剪切 touch rm mv cp)
x: 可以进入目录
总结:对文件来讲,最高权限是x执行。
对目录来讲,最高权限是w写
chown 用户名 文件名
例: chown user 123
chgrp 组名 123
例: chgrp user 123
二、文件的默认权限
1.查看默认权限
umask 查看
0022
- 第一位0:文件特殊权限
- 022 :文件默认权限
umask 权限值 #可修改默认权限
2.文件默认不能建立执行文件,必须手工赋予执行权限
所以文件默认权限最大为666
默认全系需要换算成字母再相减(-rw-rw-rw 减去 -----w--w- 等于 -rw-r--r-)
建立文件之后的默认权限,为666减去umask值()
3.目录的默认权限最大为777
默认权限需要换算成字母再相减法
建立文件之后的默认权限为777减去umask值
例如:
- 目录默认的最大权限为777 umask值为022
- -rwxrexrex 减去 -----w--w- 等于 -rwxr-xr-x
临时修改umask值
- umask 0002
永久修改umask值
- vi /etc/profile
三、linux权限管理之ACL权限
1、ACL权限
权限不够时,需开启ACL权限
dumpe2fs -h /dev/sda5 #查看指定分区详情文件系统信息的
-h 仅显示超级块中的信息,而不显示磁盘快组的详细信息
df #查看分区情况
2.临时开启分区ACL权限
mount -o remount,acl / #重新挂载根分区,并挂载加入acl权限
3.永久开启分区ACL权限
vi /etc/fstab
#修改下面一行 添加acl,然后重启(一点不能写错,否则系统不能重启)
- UUID=c234244-3455-344f-ffff-fdr75857888 / ext4 defaults,asl 11
4.查看ACL命令
getfacl 文件名
ll 可看到+号 -rwxrw-rw-+
getfacl av
5.设定ACL权限的命令
setfacl 选项 文件名
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
例: useradd user1
groupadd group1
mkdir /av
chown user1:group1 /av
chmod 770 /av
useradd ouser
setfacl -m u:ouser:rx /av
#给用户赋予权限,使用"u:用户名:权限" 格式
6.最大权限mask
mask是用来指定最大有效权限的。如果我们给用户赋予了ACL权限,是
需要和mask的权限"相与"才能得到用户的真正权限
7.删除ACL权限
setfacl -x u:用户名 文件名 #删除指定用户的ACL权限
setfacl -x g:组名 文件名 #删除指定用户组的ACL权限
setfacl -b 文件名 #会删除文件的所有的ACL权限
8.递归权限和默认权限
递归权限父目录在设定ACL权限时,所有的子文件和子目录 也会拥有相同的ACL权限
格式:setfacl -m u:用户名:权限 -R 文件名
默认ACL权限的作用是如果给父目录设定默认ACL权限,那么
父目录中所有新建的子文件都会继承父目录的ACL权限。
格式: setfacl -m d:u:用户名:权限 文件名
四、sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行。
sudo的操作对象是系统命令
visudo命令 #实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
#%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
例: su - user
sudo -l
sudo /sbin/shutdow -r now
例:visudo
配置以下
- user1 ALL=/usr/sbin/useradd
- user1 All=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
su - user1
sudo -l
sudo /usr/sbin/useradd user2
sudo /usr/bin/passwd user2
五、文件特殊权限
1. SetUID
只有可以执行的二进制程序才能设置SetUID权限
命令的执行者对对该程序拥有x(执行)权限
命令只想着在执行该程序时获得该程序文件属主的身份(灵魂附体,所以极其危险)
SetUID权限只在改程序执行过程中有效,是说身份改变只在程序执行过程中有效
setUID的方法
4代表SUID
- chmod 4755 文件名
- chmod u+s 文件名
- chmod u-s 文件名
注意:1.绝不允许给系统目录设置SetUID权限。比如"/"、"/usr"等
2.对系统中默认应该具有SetUID权限的文件做一
列表,定时检查有没有这之外的文件被设置
了SetUID权限。(可用shell脚本实现)
例:find /-perm -4000 -o -perm -2000 > /tmp/setUid.log
#把系统中所有SetUID和SetGID权限的列表记录在一个log文件中
2. SetGID
- chmod g+s 文件名
- chmod g-s 文件名
3. Sticky BIT
- chmod o+s 文件名
注意:没特殊需求,尽量不去修改特殊权限
六、不可改变位权限
chattr权限
格式:chattr [+ - =] [选项] 文件或目录名
+ 增加权限
- 删除权限
= 等于某权限
选项:
-a append
-i insert
i:如果对文件设置了i属性,那么不允许对文件进行删除、改名、也不能添加和修改数据;
如果对目录设置了i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
a:如果对文件设置a属性,那么只能在文件中增加数据,不能删除也不能修改数据;
如果对目录设置a属性,那么只允许在目录中建立和修改文件,但不允许删除
一、文件基本权限
1.基本权限的修改
ls -l 可查看权限
-rw-r--r-- #10位长度
第1位 - #文件类型(-普通文件 d目录 |软连接文件)
第2-4位 rw- #u所有者权限
第5-7位 r-- #g所属组权限
第8-10 r-- #o其他人权限
r 读 w 写 x 执行
chmod [选项] 模式 文件名
选项:
-R 递归
模式:
[guoa] [+-=][rwx]
[mode = 421]
例:
chmod u+x test.log
chmod g+w,o+w abc.log
chmod g-w,o-w abc.log
chmod g=rw,u=rwx abc.log
chmod a=rw abc.log
权限的数字表示
r --- 4
w --- 2
x --- 1
-rwxr-xr-x 755权限
常用权限 777 644 755
例:chmod 755 abc.log
2.权限的作用
相对文件
r:读取文件内容(cat more head tail)
w:编辑、修改、新增文件的内容(vi echo)
- 写权限不能删除文件
x:可执行
相对目录
r: 可以查询目录下文件名(ls)
w: 具有修改目录结构的权限。(新建文件和目录,
删除此目录下的文件和目录,重命名此目录下
文件和目录,剪切 touch rm mv cp)
x: 可以进入目录
总结:对文件来讲,最高权限是x执行。
对目录来讲,最高权限是w写
chown 用户名 文件名
例: chown user 123
chgrp 组名 123
例: chgrp user 123
二、文件的默认权限
1.查看默认权限
umask 查看
0022
- 第一位0:文件特殊权限
- 022 :文件默认权限
umask 权限值 #可修改默认权限
2.文件默认不能建立执行文件,必须手工赋予执行权限
所以文件默认权限最大为666
默认全系需要换算成字母再相减(-rw-rw-rw 减去 -----w--w- 等于 -rw-r--r-)
建立文件之后的默认权限,为666减去umask值()
3.目录的默认权限最大为777
默认权限需要换算成字母再相减法
建立文件之后的默认权限为777减去umask值
例如:
- 目录默认的最大权限为777 umask值为022
- -rwxrexrex 减去 -----w--w- 等于 -rwxr-xr-x
临时修改umask值
- umask 0002
永久修改umask值
- vi /etc/profile
三、linux权限管理之ACL权限
1、ACL权限
权限不够时,需开启ACL权限
dumpe2fs -h /dev/sda5 #查看指定分区详情文件系统信息的
-h 仅显示超级块中的信息,而不显示磁盘快组的详细信息
df #查看分区情况
2.临时开启分区ACL权限
mount -o remount,acl / #重新挂载根分区,并挂载加入acl权限
3.永久开启分区ACL权限
vi /etc/fstab
#修改下面一行 添加acl,然后重启(一点不能写错,否则系统不能重启)
- UUID=c234244-3455-344f-ffff-fdr75857888 / ext4 defaults,asl 11
4.查看ACL命令
getfacl 文件名
ll 可看到+号 -rwxrw-rw-+
getfacl av
5.设定ACL权限的命令
setfacl 选项 文件名
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限
例: useradd user1
groupadd group1
mkdir /av
chown user1:group1 /av
chmod 770 /av
useradd ouser
setfacl -m u:ouser:rx /av
#给用户赋予权限,使用"u:用户名:权限" 格式
6.最大权限mask
mask是用来指定最大有效权限的。如果我们给用户赋予了ACL权限,是
需要和mask的权限"相与"才能得到用户的真正权限
7.删除ACL权限
setfacl -x u:用户名 文件名 #删除指定用户的ACL权限
setfacl -x g:组名 文件名 #删除指定用户组的ACL权限
setfacl -b 文件名 #会删除文件的所有的ACL权限
8.递归权限和默认权限
递归权限父目录在设定ACL权限时,所有的子文件和子目录 也会拥有相同的ACL权限
格式:setfacl -m u:用户名:权限 -R 文件名
默认ACL权限的作用是如果给父目录设定默认ACL权限,那么
父目录中所有新建的子文件都会继承父目录的ACL权限。
格式: setfacl -m d:u:用户名:权限 文件名
四、sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行。
sudo的操作对象是系统命令
visudo命令 #实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
#%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
例: su - user
sudo -l
sudo /sbin/shutdow -r now
例:visudo
配置以下
- user1 ALL=/usr/sbin/useradd
- user1 All=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
su - user1
sudo -l
sudo /usr/sbin/useradd user2
sudo /usr/bin/passwd user2
五、文件特殊权限
1. SetUID
只有可以执行的二进制程序才能设置SetUID权限
命令的执行者对对该程序拥有x(执行)权限
命令只想着在执行该程序时获得该程序文件属主的身份(灵魂附体,所以极其危险)
SetUID权限只在改程序执行过程中有效,是说身份改变只在程序执行过程中有效
setUID的方法
4代表SUID
- chmod 4755 文件名
- chmod u+s 文件名
- chmod u-s 文件名
注意:1.绝不允许给系统目录设置SetUID权限。比如"/"、"/usr"等
2.对系统中默认应该具有SetUID权限的文件做一
列表,定时检查有没有这之外的文件被设置
了SetUID权限。(可用shell脚本实现)
例:find /-perm -4000 -o -perm -2000 > /tmp/setUid.log
#把系统中所有SetUID和SetGID权限的列表记录在一个log文件中
2. SetGID
- chmod g+s 文件名
- chmod g-s 文件名
3. Sticky BIT
- chmod o+s 文件名
注意:没特殊需求,尽量不去修改特殊权限
六、不可改变位权限
chattr权限
格式:chattr [+ - =] [选项] 文件或目录名
+ 增加权限
- 删除权限
= 等于某权限
选项:
-a append
-i insert
i:如果对文件设置了i属性,那么不允许对文件进行删除、改名、也不能添加和修改数据;
如果对目录设置了i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
a:如果对文件设置a属性,那么只能在文件中增加数据,不能删除也不能修改数据;
如果对目录设置a属性,那么只允许在目录中建立和修改文件,但不允许删除