2文件默认权限
文件默认权限是指建立文件后存在的权限,
文件不能建立为执行文件,必须手工赋予执行权限,所以文价默认权限最大为666,建立文件之后的默认权限,为666减去umask的值,
目录的默认权限最大为777,建立文件之后的默认权限,为777减去umask的值。
默认权限需要换算成字母再相减,。
umask:查看默认权限
0022:
第一位0:文件的特殊权限
022:文件默认权限
修改umask值
临时修改——umask 0002
永久修改——vi /etc/profile
usermod(选项)(参数):
参数若为两个,顺序一般为 usermod (选项) 目标参数 原始参数
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。
usermod -l viv vivek //vivek希望将他的login ID从vivek改为viv,
3 文件的特殊权限
3.1ACL权限
3.1.1ACL权限简介与开启
解决问题:属主权限、属组权限、其他用户权限过于简单,导致其他权限无法开启给某个用户,解决用户身份不足
#dumpe2fs -h /dev/sda5
//dumpe2fs命令是查询指定分区详细文件系统信息的命令,是否支持ACL
//选项-h 表示仅显示超级块中的信息,而不显示磁盘块组的详细信息
3.1.2 临时开启分区ACL权限
#mount -o remount,acl /
//重新挂载根分区,并挂载加入acl权限
3.1.3 永久开启分区ACL权限
#vi /etc/fstab
//写配置文件,加入acl
//UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults, acl 1 1
#mount -o remount /
//重新挂载文件系统或重新启动系统,使修改生效
3.1.4查看ACL权限
#getfacl 文件名
3.1.5设定ACL权限
#setfacl 选项 文件名
选项:
-m:设定ACL权限
-x:删除指定的ACL权限
-b:删除所有的ACL权限
-d:设定默认的ACL权限
-k:删除默认的ACL权限
-r:递归设定ACL权限
操作:
#useradd tony //添加用户
#groupadd stu //添加组
#mkdir /av //创建目录
#chown tony:stu /av
#chmod 770 /av
#useradd lw
#setfacl -m u:lw:rx /av //给用户stfuyu 分配r-x权限,使用“u:用户名:权限”格式
#groupadd tgroup
#gSetfacl -m g:tgroup:rwx /av //给组tgroup分配 rwx权限,使用“g:组名:权限”格式
ll //查看文件权限
#getfacl /av //查看某个文件的具体权限
输出结果:file:av
Owner:tony
Group:stu
User::rwx
User:lw:r-x //为lw赋予了权限
Group::rwx
Mask::rwx
Other::--
3.1.6 ACL最大有效权限
Mask是用来指定最大有效权限的,如果我给用户赋予了ACL权限,是需要和mask的权限相与操作才能得到用户的真正权限。
上述getfacl 输出结果中mask,就是最大有效权限
一般mask权限是最大的,但也可以修改
#setfacl -m m:rx /av //给mask分配 rx权限,使用“m:权限”格式
3.1.7删除ACL权限
#setfacl -x u:用户名 文件名 //删除指定用户的ACL权限
#setfacl -x g:组名 文件名 //删除指定用户组的ACL权限
#setfacl -b 文件名 //删除文件的所有ACL权限
3.1.8递归ACL权限
递归是父目录在设定ACL权限时,所有的已经存在的子文件和子目录也会拥有相同的ACL权限。注意在ACL权限之后建立的新文件不再具有父目录所设定的ACL权限
#setfacl -m u:用户名 -R 目录名
当使用递归时,给目录赋予执行权限,目录下的文件也会具有执行权限,造成权限溢出。
3.1.9默认ACL权限
默认ACL权限的作用是给父目录设定了默认ACL权限,那么父目录所有新建的子文件都会继承父目录的ACL权限
#setfacl -m d:u:用户名:权限 目录名
4 sudo权限
4.1作用
把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象是系统命令
4.2 sudo使用
命令: #vi sudo //实际修改的是/etc/sudoers文件
文件内容中:
Root ALL=(ALL) ALL
用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL
组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
可使用的身份可以省略,省略后默认是root权限
授权的命令越详细,普通用户所获得的权限越具体越小,授权的命令越简单,普通用户所获得的权限越大。
5 文件特殊权限
注意:特殊权限尽量少修改
5.1 SetUID
5.1.1 SetUID针对文件的作用
- 只有可执行的二进制程序才能设定SUID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行者在执行该程序时后的该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
- SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
5.1.2举例
passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件内容
ll /bin/cat
-rwxr-xr-x. 1 root root 47976 6月 22 2012 /bin/cat
5.1.3 设定SUID的方法
4代表SUID
#chmod 4755 文件名
#chmod u+s 文件名
5.1.4 取消SUID的方法
#chmod 0755 文件名
#chmod u-s 文件名
5.1.5 危险的SetUID
- 关键目录应严格控制写权限。比如“/”、“/usr”等
- 用户的密码设置要严格遵守密码三原则
- 对系统中默认应该具有SetUID权限的文件作一列表,定时检测有没有这之外的文件被设置了SetUID权限。
5.2 SetGID
5.2.1 SetGID针对文件的作用
- 只有可执行的二进制文件才能设置SGID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行者在执行该程序时,组身份升级为该程序文件的属组
- SetGID权限只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
5.2.2 SetGID针对目录的作用
- 普通用户对此目录拥有r和X权限,才能进入此目录
- 普通用户在此目录中的有效组会变成此目录的属组
- 若普通用户对此目录拥有W权限,新建的文件的默认属组是这个目录的属组。
5.2.3 设定SGID的方法
2代表SGID
#chmod 2755 文件名
#chmod g+s 文件名
5.2.4 取消SGID的方法
#chmod 0755 文件名
#chmod g-s 文件名
5.3 Sticky BIT
5.2.1 SBIT粘着位针对目录的作用
- 普通用户对此目录拥有W、R和X权限,最高权限7,即普通用户可以在此目录拥有写入权限。
- 如果没有粘着位,因为普通用户拥有W权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有W权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
5.3.2 设定 SBIT粘着位的方法
1代表 SBIT粘着位
#chmod 1755 目录名
#chmod g+t 目录名
5.3.3 取消 SBIT粘着位的方法
#chmod 0755 目录名
#chmod 0-t 目录名
6 不可改变位权限
6.1 Chattr命令格式
#chattr [ + - = ] [选项] 文件或目录名
+:增加权限
-:删除权限
=:赋予权限
选项
i(insert):
如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据(实际上文件被锁定);
如果对目录设置i属性,那么只能修改目录下文件数据,但不允许建立和删除文件。
a(append):
如果对文件设置a属性,那么只能对文件添加数据(只能用输出重定向echo命令,不可以用vi编辑文件),不能删除和修改数据;
如果对目录设置a属性,那么只能建立和修改目录下文件,但不允许删除文件。
6.2查看文件系统属性
#lsattr [选项] 文件名
选项
-a:显示所有文件和目录
-d:若目标是目录,仅列出目录本身属性名而不是子文件的