2.14 文件和目录权限chmod
2.15 更改所有者和所属组chown
2.16 umask
2.17 隐藏权限lsattr/chattr
2.14 文件或目录权限chmod
#ls-l 查看文件的详细属性
~#ls-l -rw-r--r-- root root 2.txt
此处分为十个字符,
第一个字符代表文件的类型,
r 可读 w 可写 x 可执行
rw-文件所有者权限
可读可写不可执行
r--文件所属组权限
可读不可写不可执行
r--其他用户权限
第二位到第十位 是权限分界,这9个字符分为3段,每3段分一个权限界别 第一段是所有者权限,第二段是所属组权限,第三段是其他用户权限。
权限可以用数字显示,例如
r=4,w=2,x=1,那么rwx=4+2+1=7
rw-=4+2=6 --x=1
rw-r--r--=644
#chmod 更改文件权限
chmod=change mode(mode权限意解) 缩写
将2.txt的文件属性改成rwx------
用法
#chmod 700 2.txt #ls -l 2.txt -rwx------ 2.txt
举例
-rwx------.中的“.”是什么意思?
“.”的意思是 这个文件受制于selinux
如果开启了selinux,第一列创建的文件都会有“.”。如果想取消“.”,需要关闭防火墙,创建文件,才会被取消。(修改防火墙禁用,需要#vi /etc/selinux/config,此处只做了解,不用太详细)
#chmod -R 对目录本身及其子文件的权限产生改变。(批量更改权限) #cd /tmp/ #ls -l drwxr-xr-x /aming2
目录aming2变成了777权限,发现/aming2的子文件没被更改权限。
#chmod 777 aming2 #ls -lh #drwxrwxrwx/aming2 #cd /aming2 #ls - lh -rw-r--r-- 1.txt
更改/aming2目录本身以及文件权限,
#chmod -R 777 aming2 #ls -lh
两者均为777权限。
其他用法
#chmod u=rwx,g=r,o=r aming2
各种用户都取消各种权限用法
ugo解释:
u=user
g=group
o=others
#chmod a-x aming2 a=all,所有权限,-代表减去、撤走权限。此用法是,所有权限(所有者,所属组,其他用户),撤去x权限。 #chmod u-x aming2 撤销所有者的x权限 #chmod o+x aming2 撤销其他用户的x权限
2.15 更改所有者和所属组chown
chown =change owner 改变所有者,所属组,其他人
#cat /etc/passwd 进去 查看用户(root,bin....用户,系统自带创建)
可以看到最后2个是自创的用户,aming及user1用户
#ls /tmp/ aming2/yum.log #ls -l /tmp/yum.log -rw---yum.log
用法
#chown aming /tmp/yum.log #!ls ls -l /tmp/yum.log -rw------. 1 aming root/tmp/yum.log
修改成功
chgrp= change group
用法
修改所属组为user1,修改成功
#chgrp user1 /tmp/yum.log #!ls
此命令也可以修改组名
#chown user1:aming /tmp/yum.log
同样,只修改所属组名用法
#chown :root /tmp/yum.log
#chown -R #chown -R user1:aming /tmp/aming2 #ls -l /tmp/aming2/
#ls -ld /tmp/aming2
drw-r--r-- user1 aming/tmp/aming2
总结,
#chown -R username:group filename
更改所有者与所属组
#chown -R username filename
更改所有者
2.16 umask
umask决定默认的文件和目录的权限。
(umask值技巧记法,首先要了解rwx对应的数值,r=4,w=2,x=1。还有umask=002分析,002代表所属主(0),所属组(0),其他用户(2)的组合。
例如:umask=003 那么3=2+1,那就是umask为003的值等于wx权限,
umask=002 那么2=2+0,那就是w权限)
为什么创建文件就是644,创建目录就是755?
#touch 11.txt #ls-l -rw-r--r-- (644权限) #mkdir123 #ls -ld 123 drwxr-xr-x (755)
#umask 0022
因为linux系统root用户的umask值,所以创建文件就是644,创建目录就是755
#umask 002 (002等于=0002,此处一共四位,第一位0一般忽略) #mkdir 234 #ls -ld 234 drwxrwxr-x 234(775) #touch 3.txt #ls -l 3.txt -rw-rw-r-- 3.txt (664)
默认值022 644 755
修改后002 664 775
那我们可以按照这样算,
默认Umask算法
777-022=755
666-022=644
所以修改002后的算法是,
777-002=775
666-002=664
目录必须要有x权限,否则没办法浏览,没办法进入。
为了证明以上说法,举例测试
#umask 003 #rm -rf 11.txt 2.txt 3.txt #touch 1.txt #ls -l 1.txt
-rw-rw-r-- 权限变成664了,
[如果#666-003=663,可表示成666=(rw-rw-rw-)-(--------wx)=rw-rw-r--=664]
[777-003=(rwxrwxrwx)- (-------wx) = rwxrwxr--=774]
创建目录,看看到底目录权限是不是774
#mkdir 111 #ls -ld 111 drwxrwxr-- 111
此处证明创建目录默认权限是774,
归纳,
其实umask的值等于多少,就是减去什么权限。
例如umask等于022,022分三段组(所有者,所属组,其他用户),
那么,0是所有者的值,2是所属组的值,2是其他用户的值。
通过umask怎么能够判断默认权限是多少?
用减法,用9位权限位对应相减。
*归纳
原始权限
但umask=022
目录权限最大值为777,777=drwxrwxrwx,那么使用umask值后的初始权限,
应该是(drwxrwxrwx)-(----w--w-)=drwxr-xr-x,对应数字应该是777-022=755,而755是drwxr-xr-x,
则目录被创建初的始权限是drwxr-xr-x。
而文件权限的最大值是666,666=rw-rw-rw-,666-022=644,
所以文件被创建的初始权限是644=rw-r--r--
2.17 隐藏权限lsattr/chattr
#chattr 隐藏权限
设置隐藏权限i
#chattr +i 1.txt #vi 1.txt #head -n2 /etc/passwd>1.txt -bash:1.txt:权限不够 #ls -l 1.txt 发现查不出权限 #lsattr 1.txt 查看隐藏权限,有“i”权限。 ----i------
新建文件,查看权限,
#touch 2.txt
#lsattr 2.txt 没有任何权限 ---------- 2.txt
~的解说
#ls -l 1.txt 1.txt~
在做vi 1.txt的操作时候,会自动创建缓存文件,这个缓冲文件,当保存退出的时候会把写入的东西覆盖原来的文件,然后~文件才会被删除,如果加了特殊权限(隐藏权限i也是),这个文件就删除不到,保存不到,所以~一直会存在。
lsattr 1.txt 是有i权限的。
不能mv,rm,touch.
i是一个非常严谨的权限,什么都不能改。
减掉i权限。
#chattr -i 1.txt
减掉后vi,mv,rm,touch都可以
#chattr +a 只能追加,不能删除,只能在文件的末尾一点点追加。
#chattr +a 1.txt #rm 1.txt 失败 #vi 1.txt 失败
尝试追加
#head -n2 /etc/passwd > 1.txt
追加失败,尝试末尾追加。
#head -n2 /etc/passwd >> 1.txt #cat 1.txt
有数据显示,追加成功,此处证明可以在末尾追加。
尝试touch
#touch 1.txt 可以touch. #chattr -a 1.txt 把a权限去掉。
a权限,可以追加信息,可以touch,可以更改时间信息,但
是不能够vi,mv,rm。
#chattr -a 1.txt 把a权限去掉。
更改目录信息
#mkdir 111/222 #chattr +i 111 #lattr -d 111 ----i------------111 #rm -r 111 rm:是否进入目录“111”? y rm:是否删除目录“111/222”? y rm:无法删除“111/222”:权限不够 #mv 111 1212 移动,不允许操作 #touch 111/12.txt 无法创建,权限不够
发现给目录添加隐藏权限跟给文件添加隐藏权限一样。
#chattr -i 111
#chattr +a 111 #touch 111/12.txt #vi 111/12.txt #cat 111/12.txt slfdjkew #head -n2 /etc/passwd > 111/12.txt #cat !$ 结果追加成功。
此处证明给目录添加a权限,可以根据目录下的文件内容。
#chattr -a 111 #chattr +i 111 #head -n2 /etc/passwd > 111/12.txt
同样 i也可以。
#lasttr -R 111
可以查看 111下面的子目录,及子目录的文件的权限。
#lasttr 111
只可以查看111的一层目录及文件。
总结
#chattr +i +a -i -a #lasttr -R -a(被隐藏都可以查出) -d(目录本身)