(零).文件的所有者和所属组管理:
1.查看文件的所有者和所属组组:
准备:#mkdir /loring && cd /loring
#cp /etc/passwd /loring
#ls /loring/passwd
-rw-r--r--. 1 root root 1668 Mar 20 19:32 /loring/passwd
2.修改文件的所有者:chown --> change owner
#chown用户名 文件名
#chown loring /loring/passwd修改所有者
#ls -l /loring/passwd验证
3.修改文件的所属组: chgrp --> change group
#chgrp用户组 文件名
#chgrp group1 /loring/passwd修改
#ls -l /loring/passwd验证
4.使用chown命令,修改文件的所属组:
#chown .用户组 文件名
#chown :用户组 文件名
#chown .group2 /loring/passwd
#ls -l /loring/passwd
#chown :group11 /loring/passwd
#ls -l /loring/passwd
5.同时修改文件的所有者和所属组:
#chown用户名.组名 文件名
#chown用户名:组名 文件名
#chown tom.group2 /loring/passwd
#ls -l /loring/passwd
6.文件使用者分类:
三类:
文件的所有者:owner --> u
文件的所属组:group --> g
文件的其他人:other --> o
代表三类用户:all --> a
(一)基本权限
1.基本权限的分类:
将基本权限分为了三类:r w x
r: 读权限
w:写权限
x:执行权限
2.权限的分配:
基本权限使用ls -l查看出的,前2-10位,一共9个位置:
又将这9个位置分为3段:
第1段: 给文件的所有者的权限
第2段: 给文件所属组的权限
第3段: 给文件其他人的权限
注意:在每一段中,权限的排列,只能是rwx;每个位置只能出现对应的权限,或者不出现,但不能出现其他权限
3.修改文件的基本权限: chmod --> change mode
基本权限在有些地方,也被描述成ugo权限: u:所有者 g:所属组 o:其他人
3.1直接修改: =
#chmod [ugoa]=权限 文件名
注意:[]中可以任选一个,或者多个
3.1.1修改某一类用户的基本权限:
#chmod u=rwx /loring/passwd
代表修改所有者的权限为rwx
#ls -l /loring/passwd验证
3.1.2同时修改两类用户的权限:两类用户权限一样
#chmod ug=w /loring/passwd
3.1.3同时修改两类用户的权限: 两类用户的权限不一样
#chmod u=rx,g=rwx /loring/passwd
所有者的权限改为rx;所属组的权限改为rwx
3.1.4同时修改所有人的权限:权限是一样的
#chmod a=r /loring/passwd
三类用户的权限,都会被修改成为只读
3.2加减权限: + -
3.2.1给某一类用户增加或者减少权限:
#chmod u+x /loring/passwd
#ls -l /loring/passwd
#chmod u-rw /loring/passwd
#ls -l
3.2.2同时给多个人增加、减少权限:
#chmod ug+rw /loring/passwd
3.2.3同时修改多个人的权限,修改的权限不一致:
#chmod u+x,g-rw /loring/passwd
3.2.4同时修改所有人的权限:
#chmod a+x /loring/passwd
#chmod +x /loring/passwd等同于上一条
注意: 增加权限,不管以前有没有,增加后一定是有的;减少一个权限,不管有没有,减少后一定是没有的
3.3数值的方式:*****
例子: 所有者权限位来描述,占3位 r w x
如果权限位出现了权限,用1表示;如果没有出现权限,用0表示
r=4 w=2 x=1
rw-r--rx
第1段: 4+2+0=6
第2段: 4+0+0=4
第3段: 4+0+1=5
用3个八进制数表示: 645
#chmod数值 文件名
#chmod 631 /loring/passwd
rw--wx--x
#ls -l
4.基本权限的作用:
4.1针对于普通文件
权限的描述:
r:能够查看文件里面的内容,可以cat等命令查看
w:可以修改和编辑文件中的内容
x:能够运行文件中的代码(内容)
权限的作用: 用户具备了某些权限,能做什么事情
r:能查看文件内容;不能修改;也不能执行
w:不能查看;只能强制写入,但是会覆盖原文件内容;不能执行
x:毫无意义
rw:可以查看文件内容;可以修改文件内容;不能执行
rx:可以查看文件内容;不可以修改文件内容;可以执行
wx:跟单独具有w权限一样;不能查看;能强制写入;不能执行
rwx:可以查看;可以修改;可以执行
实验:
# chmod o=r passwd
每执行一次修改权限,都切换到普通用户进行验证
第二个终端:用普通用户登录,进行验证
# chmod o=w passwd
# chmod o=x passwd
# chmod o=rw passwd
# chmod o=rx passwd
# chmod o=wx passwd
# chmod o=rwx passwd
#
4.2针对于普通目录
权限的描述:
r:可以查看目录下有哪些文件,例如ls去查看
w:可以在目录下创建和删除文件
x:能够进入到目录中,cd
权限的作用:
r:只能查看一级子目录,而且会报错;不能创建或者删除文件;不能进入到目录
w:毫无意义
x:不能查看目录下文件;不能创建和删除;能进入,但是进入后也不能查看、创建、删除
注意:如果对子目录有权限,则对子目录的操作不受影响
rw:只能查看一级子目录,也会报错;不能创建和删除;也不能进入;同单独具有r权限
rx:可以正常查看;不能创建和删除;可以进入目录
wx:不能查看;能创建文件,能删除文件;能进入到目录
注意: 可以删除文件,但是在文件名使用中,不再支持通配符(* ?) *代表了任意 ?任意单个字符
rwx:可以查看;可以修改和删除;也可以进入目录
扩展实验:
1.创建一个目录: /haha
2.目录/haha的权限位777
3.在目录下创建一个文件: hello.txt
4.设定hello.txt文件的权限为444
5.用普通用户loring去编辑hello.txt,看是否可以强制保存退出
5.创建文件和目录的默认权限:
反向掩码:决定了用户创建文件的默认权限
普通文件:666 - 反向掩码 = 默认权限
注意:默认创建普通文件,绝对不会给文件执行权限
目录:777 - 反向掩码 = 默认权限
查看:
#umask
022
#su - loring
$umask
002
修改: 临时修改,只对当前终端有效
#umask反向掩码
#umask 025
创建文件:
#touch a.txt
#ll
-rw-r--r--. 1 root root 0 Mar 24 22:54 a.txt
默认root用户创建文件的权限位644
#su - loring
$touch aa.txt bb.txt
$ll
-rw-rw-r--. 1 loring loring 0 Mar 24 22:56 aa.txt
默认普通用户创建文件的权限位664
例:
#umask 025
666 - 025 = 641 --> rw-r----x
#touch aaaa.txt
#ls -l
rw-r---w-发现权限不是计算出的
注意: 一旦计算出某个用户具有执行权限,会自动进位
创建目录:
#mkdir abc bcd
rwxr-xr-x
#umask
022
777 - 022 = 755 --> rwxr-xr-x
#su - loring
$mkdir aaa bbb
$ll
rwxrwxr-x 775
注意: 反向掩码是如果分配,每个用户登录到系统后,都会有个默认的反向掩码
由/etc/profile文件决定:
#cat /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
注释: 一旦用户的uid大于199,而且用户名和主要组的名一样,那么用户的umask就为002;否则用户的umask就为022
(二)特殊权限:
suid:一旦一个文件具有了该权限,那么在文件执行的时候,会以文件的所有者身份去运行
例:passwd命令,普通用户使用只能修改自己的密码;修改完的密码,要保存在/etc/shadow中
#ls -l /etc/shadow
----------. 1 root root 1566 Mar 24 22:03 /etc/shadow
#which passwd查看命令的绝对路径
/usr/bin/passwd
#su - loring
$passwd
别改完
另打开一个标签:
#ps -eo ruser,euser,comm | grep passwd
loring root passwd
注释:ruser--> 真实用户
euser-->有效用户
comm -->执行的命令
#chmod u-s /usr/bin/passwd
再使用普通用户修改密码就不可以了
给文件增加或者减少suid权限:
增加:
#chmod u+s文件名
减少:
#chmod u-s文件名
注意:suid会占用所有者基本权限位的x位置;
如果所有者具有x权限,那么s就是小写的;
如果所有者没有x权限,那么S就是大写的
实验:
#echo hello loring > hello.txt
#chmod 000 hello.txt
#su - loring
$cat hello.txt
$which cat
/bin/cat
使用root用户:
#chmod u+s /bin/cat
$cat hello.txt
通常suid都是给命令文件设定的
注意:在某种层次上,suid可以当作临时提权;使用情况不多,以后提权都用sudo
sgid:一旦一个目录具有该权限,那么将来在目录下创建的任何目录和文件,都会继承父母录的所属组
增加 、减少sgid权限:
增加:
#chmod g+s目录名
减少:
#chmod g-s目录名
实验:
#mkdir /haha
#chown .loring /haha
#chmod g+s /haha
#ll -d /haha
#su - tom
$touch /haha/tom.txt
$ll /haha/tom.txt
所属组为loring
#su - jerry
$mkdir -p /haha/a/b/c
$ls -R -l /haha
发现a、b、c的所属组都为loring
sticky:一旦一个目录具有了该权限,那么将来在目录下创建的任何文件,都只有文件的所有者和root有权限删除
增加 、减少sticky权限:
增加:
#chmod o+t目录名
减少:
#chmod o-t目录名
#mkdir /haha
#chmod 777 /haha
#chmod o+t /haha
#su - loring
$touch /haha/loring.txt
#su - tom
$rm -rf /haha/loring.txt
发现tom用户,再也没有权限删除loring创建的文件了
#su - loring
$rm -rf /haha/loring.txt
(三)acl访问控制 决定用户的身份和基本权限
查看acl访问控制:
#getfacl文件名(目录)
#getfacl /etc/passwd
# file: passwd文件名
# owner: root文件的所有者
# group: root文件的所属组
user::rw-所有者的权限
group::r--所属组的权限
other::r--其他人的权限
将来任何一个用户,来访问该文件,都要遵循访问控制列表
例如用户tom用户访问该文件,那么tom应该有什么权限??
设定acl访问控制:
#setfacl选项 权限列表 文件名
#setfacl -m u:tom:rwx /etc/passwd
删除:
#setfacl -x u:用户名 /etc/passwd
注意:这是单独删除某个用户的列表
#setfacl -x u:tom /etc/passwd
清空acl设定:
#setfacl -b文件名
#setfacl -b /etc/passwd
设定默认acl访问控制:
#setfacl -m d:u:用户名:权限 目录
#setfacl -m d:u:tom:rw /loring/abc
注意:会让子目录和文件,继承父目录的acl访问控制列表
清除默认acl:
#setfacl -x d:u:tom abc
设定默认acl:
#setfacl -d -m u::rwx abc
注意:-m必须放在所有选项最后
清空默认acl:
#setfacl -k abc
(四)attr系统权限
注意:attr的系统权限,对root用户依然生效
查看attr权限:
#lsattr文件名
#lsattr a.txt
修改权限:
#chattr [+-]权限 文件名
#man chattr
常用选项:a i A
a:只能向文件中追加,不能修改文件属性,也不能删除
i:只能查看,不能追加,不能修改文件属性,也不能删除
A:会锁定文件的访问时间
#chattr +a a.txt增加一个a权限
验证:
#vim a.txt发现文件没法写入
#rm -rf a.txt发现也不能删除
#echo haha > a.txt不能覆盖写入
#echo haha >> a.txt只能追加写入
#chattr +i a.txt增加一个a权限
验证:
#vim a.txt发现文件没法写入
#rm -rf a.txt发现也不能删除
#echo haha > a.txt不能覆盖写入
#echo haha >> a.txt不能追加写入
#chattr +A a.txt
#cat a.txt
#head a.txt
发现访问时间,始终没有变化
#vim a.txt修改文件内容
#stat a.txt发现时间变化
注意: 通过编辑器,修改了文件中的内容,访问时间依然会变化