更改文件的权限,也就是更改所属主、所属组以及他们对应的读写执行权限。

1)更改所属组 chgrp

语法:chgrp [组名] [文件名]

 

这里用到了groupadd 命令,其含义即增加一个用户组。该命令在以后章节中做详细介绍,你只要知道它是用来增加用户组的即可。

 

2)更改文件的所属主 chown

语法:chown [ -R ] 账户名文件名

chown [ -R ] 账户名:组名文件名

这里的-R选项只作用于目录,作用是级联更改,即不仅更改当前目录,连目录里的目录或者文件全部更改。

 

 

useradd 是增加一个账户,以后会详细介绍。

上例中,首先建立一个目录test,然后在test目录下创建一个普通文件test2,因为是以root的身份创建的目录和文件,所以所属主以及所属组都是rootchown user1 test 这使test的目录所属主由root变为了user1

然后test目录下的test2文件所属主以及所属组还是root。接着 chown –R user1:testgroup test 这样把test连同test目录下的test2 的所属主以及所属组都改变了。

 

3)改变用户对文件的读写执行权限 chmod

linux中为了方便更改这些权限,linux使用数字去代替rwx ,具体规则为r: 4 w:2 x:1 -:0 举个例子,-rwxrwx---用数字表示就是 770,具体是这样来的:

rwx = 4+2+1=7; rwx= 4+2+1=7; --- = 0+0+0=0

chmod 语法:chmod [-R] xyz 文件名(这里的xyz,表示数字)

-R 选项作用同chown,级联更改。

值得提一下的是,在linux系统中,默认一个目录的权限为 755,而一个文件的默认权限为644.

 

 

如果你创建了一个目录,而该目录不想让其他人看到内容,则只需设置成 rwxr----- (740) 即可。

chmod 还支持使用rwx的方式来设置权限。!从之前的介绍中我们可以发现,基本上就九个属性分别是(1)user (2)group (3)others 三群啦!那么我们就可以藉由 u, g, o 来代表三群的属性!此外, a 则代表 all 亦即全部的三群!那么读写的属性就可以写成了 r, w, x!也就是可以使用底下的方式来看:

 

 

现在我想把一个文件设置成这样的权限 rwxr-xr-x (755),使用这种方式改变权限的命令为

 

另外还可以针对u, g, o, a增加或者减少某个权限(读,写,执行),例如

 

 

另外linux下还有两个比较特殊的权限st,请点击linux下文件的特殊权限st

 

 

 

umask

上边也提到了默认情况下,目录权限值为766,普通文件权限值为644。那么这个值是由谁规定呢?追究其原因就涉及到了umask

umask语法:umask xxx (这里的xxx代表三个数字)

查看umask值只要输入umask然后回车。umask预设是0022,其代表什么含义?先看一下下面的规则:

1)若用户建立为普通文件,则预设“没有可执行权限”,只有rw两个权限。最大为666-rw-rw-rw-

2)若用户建立为目录,则预设所有权限均开放,即777drwxrwxrwx

umask数值代表的含义为,上边两条规则中的默认值(文件为666,目录为777)需要减掉的权限。所以目录的权限为(rwxrwxrwx)(----w--w-) = (rwxr-xr-x),普通文件的权限为(rw-rw-rw-)(----w--w-) = (rw-r--r--)。umask的值是可以自定义的,比如设定umask  002,你再创建目录或者文件时,默认权限分别为(rwxrwxrwx)(-------w-) = (rwxrwxr-x)和(rw-rw-rw-)(-------w-) = (rw-rw-r--)。

 

 

 

umask 可以在/etc/bashrc里面更改,预设情况下,rootumask022,而一般使用者则为002,因为可写的权限非常重要,因此预设会去掉写权限。

chattr 修改文件的特殊属性

语法:chattr [+-=][ASaci [文件或者目录名]

+-= :分别为增加、减少、设定

A:增加该属性后,文件或目录的atime将不可被修改;

S:增加该属性后,会将数据同步写入磁盘中;

a:增加该属性后,只能追加不能删除,非root用户不能设定该属性;

c:自动压缩该文件,读取时会自动解压;

i:增加后,使文件不能被删除、重命名、设定连接、写入、新增数据;

 

 

增加i属性后不能在该目录中建立文件。

 

 

增加a属性后,只能追加不能删除。

lsattr 列出文件/目录的特殊属性

语法:lsattr [-aR] [文件/目录名]

-a:类似与ls -a 选项,即连同隐藏文件一同列出;

-R:连同子目录的数据一同列出

 

 

在上例中,test4是在test3目录增加a属性后建立的,所以test4也有a属性,通过这个例子可以看出,chattr 的属性是级联生效的,不仅对当前目录生效而且会对目录下的文件同样生效。