文件或目录权限相关命令

文件或目录权限chmod

文件属性权限详解:

第一列第一位是 l,表示该文件为连接文件node

后边的 9 位,每三个为一组。均为 rwx 三个参数的组合。其中 r 表明可读, w 表明可写, x 表明可执行。前三位为全部者(user)的权限,中间三位为所属组(group)的权限,最后三位为其余非本群组(others)的权限。linux

第 2 列,表示为连接占用的节点(inode),若是是目录,那这个数值与该目录底下有多少一级子目录有关系。
第 3 列,表示该文件的全部者。
第 4 列,表示该文件的所属组。
第 5 列,表示该文件的大小。
第 6 列、第 7 列和第 8 列为该文件的最近的修改日期,分别为月份日期以及时间。
第 9 列,文件名安全

例子:bash

一个文件的属性为“-rwxr-xr–.”,它表明的意思是,该文件为普通文件,文件拥有者可读可写可执行,文件所属组对其可读不可写可执行,其余用户对其只可读。对于一个目录来说,打开这个目录即为执行这个目录,因此任何一个目录必需要有 x 权限才能打开并查看该目录。例如一个目录的属性为“drwxr–r–.”其全部者为 root,那么除了 root 外的其余用户是不能打开这个目录的。spa

关于第一列的最后一位的“.”要说一下。老版本 CentOS 5 是没有这个点的,这主要是由于新版本的 ls把 selinux 或者 acl 的属性加进来了,当文件或者目录只使用了 selinux context 的属性,这里是一个点。若是设置了 acl,后面将是一个加号“+”。关于 selinux 和 acl 了解便可。ci

Chmod:

在 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。test

 

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

-R 选项做用同 chown 的-R 选项,表示级联更改。(在 Linux 系统中, root 用户,默认一个目录的权限为 755,而一个文件的默认权限为644。)语法

若是你建立了一个目录,而该目录不想让其余人看到里面的内容,则只需设置成“rwxr-----”(740)便可。chmod 还支持使用 rwx 的方式来设置权限。从以前的介绍中咱们能够发现,基本上就九个属性分别是(1)user, (2)group, (3)others,咱们可使用 u,g,o 来表明它们三个的属性,此外, a 则表明 all 亦即所有。用法举例:

这样能够把“test/test2”文件权限修改成“rwxr-xr-x”。另外还能够针对 u、 g、 o、 a 增长或者减小某个权限(读,写,执行),例如:

 

更改全部者和所属组chown

 

文件的全部者以及所属组:

一个 linux 目录或者文件,都会有一个全部者和所属组。全部者,即文件的拥有者,而所属组,即该文件所属主所在的一个组。 Linux 这样设置文件属性的目的是为了文件的安全。例如, test 文件的所属主是user0 而 test1 文件的所属主是 user1,那么 user1 是不能查看 test 文件的,相应的 user0 也不能查看 test1 文件。有时咱们也会有这样的需求,让一个文件同时让 user0 和 user1 来查看,这怎么实现呢?

这时“所属组”就派上用场了。即,建立一个组 users,让 user0 和 user1 同属于 users 组,而后创建一个文件 test2,且其所属组为 users,那么 user0 和 user1 均可以访问 test2 文件。 Linux 文件属性不只规定了所属主和所属组,还规定了所属主(user)、所属组(group)以及其余用户(others)对该文件的权限。

更改文件的全部者 chownchange owner


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

chown [ -R ] 帐户名:组名 文件名
这里的-R 选项只做用于目录,做用是级联更改,即不只更改当前目录,连目录里的目录或者文件所有更改。

更改所属组 chgrpchange group


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

umask

在默认状况下,目录权限值为 755,普通文件权限值为 644,那么这个值是由谁规定呢?追究其缘由就涉及到了这个 umask。

umask 语法: umask xxx (这里的 xxx 表明三个数字)
查看 umask 值只要输入“umask”而后回车。

umask 预设是 0022,其表明什么含义?先看一下下面的规则:

(1)若用户创建为普通文件,则预设没有可执行权限,只有 rw 两个权限。最大为 666(-rw-rw-rw-)。
(2)若用户创建为目录,则预设全部权限均开放,即 777(drwxrwxrwx)。

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--”

能够看到建立的目录权限默认变为 775, 而文件默认权限变为 664. 而后再把 umask 改回来。

关于 umask 的计算,有的朋友喜欢把它换算成数字去作减法。好比“rwxrwxrwx”–“----w--w-”=777–022=755。乍一看好像是没有任何问题的,可是有时候会出错,好比当umask=033 时,若是使用单纯的减法,那么文件默认权限为 666–033=633。实际上的权限为“rw-rw-rw-”-“----wx-wx”=“rw-r—r--”= 644。

umask 能够在/etc/bashrc 里面更改,预设状况下, root 的 umask 为 022,而通常使用者则为 002,由于可写的权限很是重要,所以预设会去掉写权限。

隐藏权限lsattr_chattr

命令 : lsattr


该命令用来读取文件或者目录的特殊权限,语法为 lsattr [-aR] [文件/目录名]
-a: 相似与 ls 的-a 选项,即连同隐藏文件一同列出;
-R: 连同子目录的数据一同列出

-d:查看目录自己

命令 chattr

语法: chattr [+-=][Asaci] [文件或者目录名]
+ - =: 分别为增长、减小、设定
A: 增长该属性后,文件或目录的 atime(文件访问时间) 将不可被修改;
S: 增长该属性后,会将数据同步写入磁盘中;
a: 增长该属性后,只能追加不能删除,非 root 用户不能设定该属性;
c: 自动压缩该文件,读取时会自动解压;
i: 增长后,使文件不能被删除、重命名、设定连接、写入、新增数据;
其中经常使用的为 a 和 i 两个选项。

对 test2 目录增长 i 权限后,即便是 root 帐户也不能在 test2 目录中建立或删除 test1 文件:

test2 目录增长 a 权限后,只能够在里面建立文件,而不能删除文件:

文件一样能够适用这些权限:

只给目录加上i,a并不影响里面的已存在的文件,能够写入但不能建立与删除:

相关文章
相关标签/搜索