一、chmod

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

之前学习过

ls -l

如图,第一位-之前已经学习过,代指这是一个文本 之后的 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/

可以发现123.txt的权限变成了rwx------ 也可以使用

chmod  g+r,o+w /tmp/chen1/123.txt

此时文件权限变为rwxr---w- 即742 g就是group用户组 o就是other其他用户, 还有个u是指文件所有者,这种方法可以明确的修改文件的权限,比起用权限值修改略麻烦; 接下来修改文件夹的权限

ls -ld /tmp/chen1/

文件权限为rwxr-xr-x 755

chmod 700 /tmp/chen1/
ls -l /tmp/chen1/

可以发现123.txt文件权限并没有改变,也就是说chmod命令只是修改了文件夹本身的权限,并没有修改文件夹内部文件的权限 如果要修改文件夹和文件夹内部文件的权限,则使用下面的命令

chmod -R 741 /tmp/chen1/

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

二、chown

change owner 修改文件所属用户

cat /etc/passwd

可以看到最后两个是我之前增加的用户chen1和user1 接着我来修改文件/tmp/chen1/123.txt的用户

ls -l /tmp/chen1/123.txt

可以看到文件的用户和用户组都是root 修改所属用户

chown chen1 /tmp/chen1/123.txt

查看

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

三、umask

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

文件夹默认所有的权限值777,文件666 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

则文件/tmp/chen1/123.txt无法修改、删除 使用

lsattr /tmp/chen1/123.txt 

可以看到有i权限

chattr -i /tmp/chen1/123.txt 

就可以删除i权限;

chattr +a /tmp/chen1/123.txt

则文件/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