52

Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限...

 6 years ago
source link: http://blog.51cto.com/13569831/2067102
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、chmod

chmod 命令用于修改文件或者文件夹的权限,

之前学习过

ls -l
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
如图,第一位-之前已经学习过,代指这是一个文本
之后的 rw-r--r--是文件的权限
前三位rw-是文件所有者的权限
中间三位r-- 是文件所属组的权限
后三位r--是其他用户的权限
文件的权限有三种:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限;对目录来说,具有新建,删除,修改,移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录来说该用户具有进入目录的权限。
权限拥有权限值,r=4 ,w=2 ,x=1,
上图中rw-r--r-- 就可以用644表示
将此文件的权限修改为700
chmod 700  /tmp/chen1/123.txt
ls -l /tmp/chen1/
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
可以发现123.txt的权限变成了rwx------
也可以使用
chmod  g+r,o+w /tmp/chen1/123.txt

此时文件权限变为rwxr---w- 即742

Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
g就是group用户组
o就是other其他用户,
还有个u是指文件所有者,这种方法可以明确的修改文件的权限,比起用权限值修改略麻烦;
接下来修改文件夹的权限
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
ls -ld /tmp/chen1/

文件权限为rwxr-xr-x 755

chmod 700 /tmp/chen1/
ls -l /tmp/chen1/
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
可以发现123.txt文件权限并没有改变,也就是说chmod命令只是修改了文件夹本身的权限,并没有修改文件夹内部文件的权限
如果要修改文件夹和文件夹内部文件的权限,则使用下面的命令
chmod -R 741 /tmp/chen1/

可以发现文件夹/tmp/chen1/与文件/tmp/chen1/123.txt的权限都变为了741;

二、chown

change owner 修改文件所属用户

cat /etc/passwd
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
可以看到最后两个是我之前增加的用户chen1和user1
接着我来修改文件/tmp/chen1/123.txt的用户
ls -l /tmp/chen1/123.txt
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
可以看到文件的用户和用户组都是root
修改所属用户
chown chen1 /tmp/chen1/123.txt
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
查看
ls -l /tmp/chen1/123.txt

修改所属组

chgrp user1 /tmp/chen1/123.txt
ls -l /tmp/chen1/123.txt

也可以使用

chown user1:chen1  /tmp/chen1/123.txt

同时修改用户组和用户,用冒号分隔即可,

ls -l /tmp/chen1/123.txt

单独修改用户组也可以

chown :user1  /tmp/chen1/123.txt
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限

三、umask

umask 用来改变新建文件和新建文件夹的默认权限

文件夹默认所有的权限值777,文件666

Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
umask 默认为0022
umask 第一位的0可以先省略
所以新建文件夹默认权限为 777-022 = 755
新建文本默认权限为 666-002=644 ;
如果将umask修改为0003
umask 0003

则新创建的文件夹权限变为 777-003=774
而新建文本权限为 664 而并不是663
这是因为,文本所有权限为664(rw-rw-rw-) 003 (-------wx)
由于664权限中已经没有x权限,所以现在权限为(rw-rw-rw-)- (-------wx) =(rw-rw-r--)

四、chattr

使用
man chattr 可以查看具体用法

chattr +i /tmp/chen1/123.txt
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
则文件/tmp/chen1/123.txt无法修改、删除
使用
lsattr /tmp/chen1/123.txt 

可以看到有i权限

chattr -i /tmp/chen1/123.txt 

就可以删除i权限;

chattr +a /tmp/chen1/123.txt
Linux学习笔记(八)文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限
则文件/tmp/chen1/123.txt只可以追加,无法进行删除等其他操作
并且只可以使用echo asaddasd >> /tmp/chen1/123.txt这种方式追加,无法用vi编辑追加
chattr -a /tmp/chen1/123.txt  

删除a权限;

当文件夹拥有i权限时,文件夹内文件可以追加,也可以可以用vi追加或修改文件,但是不可以删除文件,无法创建新文件;
当文件夹拥有a权限时,文件夹内文件可以追加,也可以可以用vi追加或修改文件,可以新建文件,但是不可以删除文件;

lsattr -R /tmp/chen1/
可以查看文件内所有子文件隐藏权限。

对于这部分,可以去下面这个帖子查看详细介绍
http://blog.lishiming.net/?p=487


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK