码迷,mamicode.com
首页 > 其他好文 > 详细

文件目录权限chmon\更改所有者和所属组chown\umask\隐藏权限lsattr-chattr

时间:2017-12-20 15:10:47      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:linux

2.14文件或者目录权限chmon

2.14.1

[root@MOMOCO-02 ~]# ls -l

总用量 4

-rw-r--r--. 1 root root    0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

【之前我们用ls -l的时候会详细的显示一个文件或者目录,红色标记的就是一个文件或者目录的权限,×××是所属主,紫色是所属组。他一共有9个权限(rwxrwxrwx:r代表可读,w代表可写,x代表可执行,-代表不可以读、写或者执行)位前三个是所有者权限。后面的那个点他是受制于selinux,如果你把selinux关闭了再创建目录或者文件就不会有这个点了,中间三个是所组权限,最后面的三个是其他用户权限】

2.14.2权限用数字表示

r:我们用r=4表示

w:我们用w=2表示

x:我们用x=1表示

-:我们用-=0表示

例如下面

三个权限位一段表示方法:rwx=7 rw-=6 r-x=5 r--=4 -wx=3 -w-=2 --x=1

九个权限位三段表示方法:rw-r--r--=644 rwx------=700 rwx-w-r-x=725

2.14.3 chomd 全称:change mode

[root@MOMOCO-02 ~]# chmod 700 2.txt

【更改一个目录的权限的命令,我们把2.txt改成了所有者可读可写可执行,所属组和其他用户不可读不可写不可执行。之前我们介绍密钥的时候用到了一个】

[root@MOMOCO-02 ~]# !l

ls -l

总用量 4

-rwx------. 1 root root    0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# chmod 700 /root/.ssh

[root@MOMOCO-02 ~]# ls -ld !$

drwx------. 2 root root 80 12月 14 17:41 /root/.ssh

[root@MOMOCO-02 ~]# getenforce

Enforcing

【查看selinux的状态】

[root@MOMOCO-02 ~]# setenforce 0

【临时关闭selinux,创建目录或者文件还是会有点的】

[root@MOMOCO-02 ~]# getenforce

Permissive


[root@MOMOCO-02 ~]# ls -l

总用量 4

drwxr-xr-x. 3 root root   28 12月 20 11:03 2

-rwx------. 1 root root    0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# chmod 777 2

[root@MOMOCO-02 ~]# !l

ls -l

总用量 4

drwxrwxrwx. 3 root root   28 12月 20 11:03 2

-rwx------. 1 root root    0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# ls -l 2/

总用量 0

-rw-r--r--. 1 root root  0 12月 20 11:02 2.txt

drwxr-xr-x. 2 root root 19 12月 20 11:03 3

【上面的紫色部分我们直接用chmod改目录的权限的时候,目录下面的子目录或者子文件的权限是不发生变化的。如果想子目录或者子文件一起跟着改可以用相面×××的命令,再看下面的紫色部分就生效了】

[root@MOMOCO-02 ~]# chmod -R 777 2

[root@MOMOCO-02 ~]# ls -l 

总用量 4

drwxrwxrwx. 3 root root   28 12月 20 11:03 2

-rwx------. 1 root root    0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# ls -l 2/

总用量 0

-rwxrwxrwx. 1 root root  0 12月 20 11:02 2.txt

drwxrwxrwx. 2 root root 19 12月 20 11:03 

2.14.4 用字母表示更改权限

[root@MOMOCO-02 ~]# chmod u=rwx,g=r,o=rx 2

【u代表所有者,g代表所属组,o代表其他用户,a代表ugo全部。建议使用数字代表】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chmod a-r 2

[root@MOMOCO-02 ~]# ls -ld 2

d-wx-----x. 3 root root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chmod a+r 2

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2


2.15更改所有者和所属组chown

2.15.1 chown 全称:chown owner 格式:[root@MOMOCO-02 ~]#chown -R username:group filename

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chown GYB:gyb 2

【更改所有者和所属组的命令】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB gyb 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chown :root 2

【只更改所属组】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chown root 2

【只更改所有者】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2

我们也可以用另外的一个命令更改所属组如下:

[root@MOMOCO-02 ~]# chgrp GYB 2

【更改所属组】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root GYB 28 12月 20 11:03 2

2.15.2

如果想把目录下的子目录或者子文件一起更改了我们可以用-R选项

[root@MOMOCO-02 ~]# chown GYB:GYB 2

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB GYB 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# ls -l 2

总用量 0

-rwxrwxrwx. 1 root root  0 12月 20 11:02 2.txt

drwxrwxrwx. 2 root root 19 12月 20 11:03 3

[root@MOMOCO-02 ~]# chown -R GYB:gyb 2

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB gyb 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# ls -l 2

总用量 0

-rwxrwxrwx. 1 GYB gyb  0 12月 20 11:02 2.txt

drwxrwxrwx. 2 GYB gyb 19 12月 20 11:03 3


2.16umask

2.16.1

[root@MOMOCO-02 ~]# touch 3.txt

[root@MOMOCO-02 ~]# ls -ld 3.txt

-rw-r--r--. 1 root root 0 12月 20 11:48 3.txt

[root@MOMOCO-02 ~]# mkdir 3

[root@MOMOCO-02 ~]# ls -ld 3

drwxr-xr-x. 2 root root 6 12月 20 11:49 3

【为什么我们创建的文件权限是644,创建的目录权限是755。他是有系统的umask值确定的】

[root@MOMOCO-02 ~]# umask

0022

【查看umask的值】

[root@MOMOCO-02 ~]# umask 002

【更改umask的值,你也可以写成0002】

[root@MOMOCO-02 ~]# umask

0002

我们再次创建目录和文件

[root@MOMOCO-02 ~]# touch 4.txt

[root@MOMOCO-02 ~]# ls -ld 4.txt

-rw-rw-r--. 1 root root 0 12月 20 11:54 4.txt

[root@MOMOCO-02 ~]# mkdir 4

[root@MOMOCO-02 ~]# ls -ld 4

drwxrwxr-x. 2 root root 6 12月 20 11:54 4

【文件的权限变成了664,目录的权限变成了775】

我们来总结一下:

umask       文件      目录

002            644       755

002            664       775

【你可能会认为文件的权限等于666-umask,文件的权限等于777-umask。这样理解不完全是对的,你可以试试umask等于3时。】


[root@MOMOCO-02 ~]# umask 003

[root@MOMOCO-02 ~]# touch 5.txt

[root@MOMOCO-02 ~]# ls -ld 5.txt

-rw-rw-r--. 1 root root 0 12月 20 12:09 5.txt

[root@MOMOCO-02 ~]# mkdir 5

[root@MOMOCO-02 ~]# ls -ld 5

drwxrwxr--. 2 root root 6 12月 20 12:09 5

【可以看到文件的权限是664,我们要是用666-003该是663的。目录的权限是774这里是对的。为什么会这样那其实真正的算法是这样的】

文件:666=(rw-rw-rw-)-003=(-------wx)=(rw-rw-r--)004

【最后的x权限本来就没有你减了还是没有,--x=-】

目录:777=(rwxrwxrwx)-003=(-------wx)=(rwxrwxr--)774


2.17隐藏权限lsattr-chattr

2.17.1 文件

[root@MOMOCO-02 ~]# chattr +i 3.txt

【给一个文件加上i权限】

[root@MOMOCO-02 ~]# vi 3.txt

技术分享图片

显示不可以编辑

技术分享图片

编辑了不能保存

技术分享图片

:wq 强制保存还是没有用,我们有:q! 退出来

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd > 3.txt

-bash: 3.txt: 权限不够

[root@MOMOCO-02 ~]# ls -l 3.txt

-rw-r--r--. 1 root root 0 12月 20 11:48 3.txt

【我们查看的权限是可以写的为什么不可以写,那这个时候我们就看看是不是有什么特殊权限】

[root@MOMOCO-02 ~]# lsattr 3.txt

----i----------- 3.txt

【查看一个文件或是不是有特殊权限,可以看到这个文件是有的,没有的如下。】

[root@MOMOCO-02 ~]# lsattr 4.txt

---------------- 4.txt

[root@MOMOCO-02 ~]# mv 3.txt 33.txt

mv: 无法将"3.txt" 移动至"33.txt": 不允许的操作

[root@MOMOCO-02 ~]# rm 3.txt

rm:是否删除普通空文件 "3.txt"?y

rm: 无法删除"3.txt": 不允许的操作

【可以看到加上i权限你不可以写文件、不可以删除、不可以改名字、也不可以touch。如果我们使用a权限只可以在文件的末尾追加内容和touch。】

[root@MOMOCO-02 ~]# chattr -i 3.txt

【删除i权限】

[root@MOMOCO-02 ~]# lsattr 3.txt

---------------- 3.txt

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd > 3.txt

[root@MOMOCO-02 ~]# chattr +a 3.txt

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd > 3.txt

-bash: 3.txt: 不允许的操作

【>重定向】

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd >> 3.txt

【>>追加】

[root@MOMOCO-02 ~]# cat 3.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

[root@MOMOCO-02 ~]# touch 3.txt

[root@MOMOCO-02 ~]# cat 3.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

[root@MOMOCO-02 ~]# ls -l 3.txt

-rw-r--r--. 1 root root 130 12月 20 13:00 3.txt

【更改时间信息】

[root@MOMOCO-02 ~]# chattr -a 3.txt

[root@MOMOCO-02 ~]# lsattr 3.txt

---------------- 3.txt

【去掉a权限】

技术分享图片

1.17.2 目录

[root@MOMOCO-02 ~]# tree 2

2

├── 3

└── 3.txt


1 directory, 1 file

[root@MOMOCO-02 ~]# chattr +i 2

【给目录加上i权限】

[root@MOMOCO-02 ~]# lsattr 2

---------------- 2/3

---------------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -d 2

----i----------- 2

【不加-d选项他会查看该目录下的子目录或者子文件有没有i权限】

[root@MOMOCO-02 ~]# rm -rf 2

rm: 无法删除"2/3": 权限不够

【不可以删除】

[root@MOMOCO-02 ~]# mv 2 3

mv: 无法将"2" 移动至"3": 不允许的操作

【不可以改名字】

[root@MOMOCO-02 ~]# touch 2/2.txt

touch: 无法创建"2/2.txt": 权限不够

【不可以touch该目录下的子文件】

[root@MOMOCO-02 ~]# head -n2 /etc/passwd > 2/3.txt

[root@MOMOCO-02 ~]# cat 2/3.txt 

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

【可以更改该目录下的子文件】

[root@MOMOCO-02 ~]# rm 2/3.txt

rm:是否删除普通文件 "2/3.txt"?y

rm: 无法删除"2/3.txt": 权限不够

【不可以删除该目录下的子文件】

[root@MOMOCO-02 ~]# rm -r 2/3

rm:是否删除目录 "2/3"?y

rm: 无法删除"2/3": 权限不够

【不可以删除该目录下的子目录】


[root@MOMOCO-02 ~]# chattr +a 2

【给目录加上a权限】

[root@MOMOCO-02 ~]# lsattr 2

---------------- 2/3

---------------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -d 2

-----a---------- 2

【不加-d选项他会查看该目录下的子目录或者子文件有没有a权限】

[root@MOMOCO-02 ~]# head -n2 /etc/passwd > 2/3.txt

[root@MOMOCO-02 ~]# cat 2/3.txt 

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

【可以更改该目录下的子文件】

[root@MOMOCO-02 ~]# mv 2 3

mv: 无法将"2" 移动至"3": 不允许的操作

【不可以改名字】

[root@MOMOCO-02 ~]# rm -r 2

rm:是否进入目录"2"? y

rm:是否进入目录"2/3"? y

rm:是否进入目录"2/3/4"? y

rm:是否删除普通空文件 "2/3/4/3.txt"?y

rm:是否删除目录 "2/3/4"?y

【可以删除该目录下的子目录或者子文件的子目录或子文件】

rm:是否删除目录 "2/3"?y

rm: 无法删除"2/3": 不允许的操作

【不可以删除该目录下的子目录或者子文件】

rm:是否删除普通文件 "2/3.txt"?y

rm: 无法删除"2/3.txt": 不允许的操作

[root@MOMOCO-02 ~]# rm 2/3.txt 

rm:是否删除普通文件 "2/3.txt"?y

rm: 无法删除"2/3.txt": 不允许的操作

[root@MOMOCO-02 ~]# rm -r 2/3

rm:是否删除目录 "2/3"?y

rm: 无法删除"2/3": 不允许的操作

【不可以删除该目录下的子目录或者子文件】

[root@MOMOCO-02 ~]# touch 2/3.txt 

[root@MOMOCO-02 ~]# ls -l 2/3.txt 

-rw-rw-r--. 1 root root 65 12月 20 13:36 2/3.txt

【可以touch该目录下的子文件】


小知识:

当我们chattr -R +-i/+-a filaname 的时候他会级联的把目录下的所以子目录或者子文件都加上i或a权限.

当我们lsattr -R filaname 的时候他会显示该目录下所有的子目录或者子文件有什么权限,不加-R只会显示两层。

[root@MOMOCO-02 ~]# chattr -R +i 2

[root@MOMOCO-02 ~]# lsattr 2

----i----------- 2/3

----i----------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -R 2

----i----------- 2/3


2/3:


----i----------- 2/3.txt

[root@MOMOCO-02 ~]# chattr -R -i 2

[root@MOMOCO-02 ~]# lsattr -R 2

---------------- 2/3


2/3:


---------------- 2/3.txt

[root@MOMOCO-02 ~]# chattr -R +a 2

[root@MOMOCO-02 ~]# lsattr 2

-----a---------- 2/3

-----a---------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -R 2

-----a---------- 2/3


2/3:


-----a---------- 2/3.txt

[root@MOMOCO-02 ~]# chattr -R -a 2


阿铭linux





文件目录权限chmon\更改所有者和所属组chown\umask\隐藏权限lsattr-chattr

标签:linux

原文地址:http://blog.51cto.com/13518197/2052459

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!