文件和目录权限命令chmod、更改所有者和所属组chown、命令umask、隐藏权限lsattr/chattr

1.命令chown

chown (change owner的简写)命令可以更改文件的所有者,其格式为:chwn [-R] 账户名 文件名或者hown (-R)账户名:组名 文件名。

-R:只适用于目录,作用是级联更改,即不仅更改当前目录,连目录里的目录或者文件也全部更改。示例命令如下:

2..命令chmod

命令chmod(change mode的简写)用于改变用户对文件/目录的读写执行权限,其格式为:chmod [-R] xyz文件名(这里的xyz表示数字)。

-R=chown -R 表示级联更改。目录的默认权限为755,文件的的默认权限为644.举例如下:

创建目录其他人看不到,权限设置成rwxr-----(740)。

使用u、g、o来分别表示user、group和others的属性,用a代表all(全部)。举例如下:

这样可以把dir3/test3的文件权限修改为rwxr-xr-x.可以针对u、g、o和a,增加或者减少它们的某个权限(读、写或执行)。

2.命令umask

命令umask用于改变文件的默认权限,其格式为:umask xxx (这里的xxx代表3个数字)。

这里umask的预设值是0022.

两条规则:

若用户建立普通文件,则预设没有可执行权限,只有r、w两个权限,最大值为666(-rw-rw-rw-)。

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

umask数值代表的含义为以上两条规则中的默认值(文件666,目录777)需要减掉的权限,所以:

目录的权限为rwxrwxrwx- ----w--w-=rwxr-xr-x

普通文件的权限为rw-rw-rw- - ----w--w=rw-r--r--

umak的值是可以自定义的,比如设定为002,你再创建目录或者文件时,默认权限分别为:

rwxrwxrwx- -------w-=rwxr-xr-x(目录的权限)

rw-rw-rw- -------w-=rwxr-xr-x(文件的权限)

示例命令如下:

这里我们可以看到创建的目录权限变为775,而文件的默认权限为664.把umask改回来,具体方法如下:

3.命令chattr

命令chattr(change attribute)的格式为:chattr [+==] [ASaci] [文件或者目录名],其中,+、-和=分别表示增加、减少、和设定。各个选项的含义如下。

A:增加改属性后,表示文件或目录的atime将不可修改。

s:增加改属性后,会将数据同步写入磁盘中。

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

c:增加改属性后,表示自动压缩该文件,读取时会自动解压。

i:增加改属性后,表示文件不能删除、重命名、设定链接、写入以及新增数据。

常用的选项为a和i这两个选项。

上例中,给dir2目录增加i权限后,即使是root账户,也不能在dir2目录中创建或删除test5文件。

a权限的作用,示例命令如下:

上例中,dir2目录增加a权限后,只可以在里面创建文件,而不能删除文件。

文件同样适用以上权限,示例命令如下:

4.命令lsattr

lsattr(list attribute),该命令用于读取文件或者目录的特殊权限,其格式为:lsattr [-aR] [文件/目录名]。

-a:类似于ls的-a选项,即连同隐藏文件一同列出。

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

5.set uid、set gid和sticky bit

set uid :该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。比如,passwd这个命令就具有该权限。当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码。

set gid:该权限可以作用在文件上(二进制可执行文件),也可以作用在目录上。当作用在文件上时,其功能和set uid一样,它会使文件在执行阶段具有文件所属组的权限。目录被设置这个权限后,任何用户在目录下创建的文件都具有和改目录所属的组相同的组。

sticky bit:可以理解为防删除位。文件是否可以被某用户删除,主要取决于该文件所在的目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能删除,同时也不能添加新的文件。如果希望用户能添加文件但不能删除该目录下其他用户的文件,则可以对父目录增加该权限。设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。

例如,passwd命令设置了set uid权限,而/tmp/目录则设置了sticky bit权限。下面我们来看看它们的权限,示例命令如下:

可以发现,passwd命令显示的是rws而非传统的rwx,用数字表示为4755.、/tmp/显示的rwt而非rwx,用数字表示为1777。那么,这个4和1是如何计算出来的呢?当有特殊权限时,第一位数字可以是0、1(--t)、2(-s-)、3(-st)、4(s--)、5(s-t)、6(ss-)或7(sst)。再回过头来看passwd,它是s--,所以是4;而/tmp/是--t,所以是1.

配置这些特殊权限的方法和之前一样。比如,我想给一个文件增加set uid权限,那么命令为chmod u+s filename,而去掉这个权限的命令为chmod u-s filename。同理,想设置set gid权限的命令为chmod g+s dirname,设置sticky bit权限的命令为chmod 0+t dirname。

set_uid上的权限为大写的S,而不是小写s,比如rwS,这是因为该文件没有x权限所致,不管是大写的S还是小写的s,都表示它存在set_uid或者set_gid权限,同理sticky bit也一样。

猜你喜欢

转载自my.oschina.net/u/3866192/blog/1825443
今日推荐