2.14 文件和目录权限chmod
文件类型和文件权限
见下图列表第1组的内容
以“drwxr-xr-x”为例说明。这10个字符,由两部分组成:
- 第1列,表示文件类型(目录或文件夹)。
- 从第2列开始的剩余部分, 表示文件权限。权限每3位为一组,分别表示:
- 文件所有者(user)的权限
- 文件所属组((group)的权限
- 其他非本群组用户(others)的权限。
1)第1列的文件类型,大体分为如下几类:
- d:目录
- -:普通文件(文本文档、二进位字符串)
- l:链接文件(link file),重定向
- s:socket,通信设备
- p:named pipe
- b:block device,块设备
- c:字符串设备
2)文件权限:
- r:Read,可读
- w:Write,可写
- x:eXecute,可执行
- -:无权限
解读drwxr-xr-x,则拆分为4部分,各部分分别表示:
- d:文件为目录
- rwx:文件所有者(user)可读、可写、可执行
- r-x:文件所属组(group)可读、不可写、可执行
- r-x:其他非本群组用户(others)可读、不可写、可执行
chmod命令(change mode)
- Linux中可以用数字代替rwx来更改权限,具体规则:r=4,w=2,x=1,-=0
- e.g:‘-rwxrwxrw-’用数字表示就是776,计算规则:rwx=4+2+1=7,rwx=4+2+1=7,rw-=4+2+0=6。
语法:chmod [-R] xyz [filename] (-R 参数用于级联更改。xyz代表数字)
-
在Linux系统中,root用户默认一个目录的权限为755,而一个文件的权限为644。
-
chmod支持使用rwx的方式来设置权限。3组(3位1组)文件权限分别所属于user,group,others。可以使用u,g,o来代表各自属性。此外,a则代表all,即全部。
这个方式容易混淆,不及数字方式表示快速、准确。平时不建议使用此方式。
e.g1,在下图的例子中,chmod命令的另一种表现方式:
- chmod u=rwx,g=rx,o=r 1.txt && 各组分别赋予某类权限
- chmod u-x,g-x 1.txt && 各组分别去掉某类权限
e.g2,chmod命令,-R参数的用法
2.15 更改所有者和所属组chown
chown命令(change owner)
- 更改目录或文件的所有者以及所属组。
- 语法:
- chown [-R] 账户名 filename 更改文件的所有者
- chown [-R] 账户名:组名 filename 更改所属组(-R的作用是级联更改)
chgrp命令(change group)
- 更改文件或目录的所属组。
- 语法:chgrp [-R] [组名] filename (-R表示级联更改,只针对目录文件)
e.g1:更改文件的所属组
e.g2:更改目录的所属组
e.g3:更改目录及其目录下的文件的所属组
注:由于chgrp命令仅限于修改所属组(group),而不更改所有者(user),因此,及chown命令效率高。建议用chown命令代替chgrp命令。
2.16 umask
- 语法:umask xx(这里的xxx代表三个数字)
- 数值定义的规则:
- 用户建立普通文件,则预设没有可执行权限只有rw(可读、可写)两个权限。最大数值为666(-rw-rw-rw-)。
- 用户建立为目录,则预设所有权限均开放,最大为777(drwxrwxrwx)。
-
umask数值代表的含义为,上述两条规则中的默认值(文件为666,目录为777)需要减去的权限。
-
目录权限:umask的实际数值=rwx rwx rwx ---- -w- -w- = rwx r-x r-x
- 普通文件:umask的实际数值=rw- rw- rw- ---- -w- -w- = rw- r-- r--
umask的值是可以自定义的。如果自定义为某个数值,则将此值换算为rwx的表现方式,套用到上面的两个公式中,就可以计算出在umask重新赋值后,新建目录或新建的普通文件,系统所给予的权限值是多少。
注意:
- umask的计算,不建议转换成数字的方式。有时候会出现问题。用rwx的方式即可。
- umask可以在/etc/bashrc里面更改。预设情况下,root的umask为022,而一般使用者则为002。因为可写的权限非常重要,因此,预设会去掉写权限。
- 系统里的umask是4位数的,最前面还有一个0。这个0加与不加没有影响,它表示umask数值是八进制的。
2.17 隐藏权限lsattr/chattr
只有超级权限的用户才具有使用该命令的权限,这项指令可改变存放在ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs等文件系统上的文件或目录属性。
chattr命令(change attribute)
- 语法:chattr [+ - =][选项] [文件或者目录名],其中,+、-、=:分别表示增加、减少、设定 -选项:
- [ ] A:增加该属性后,文件或目录的atime将不可修改
- [ ] s:增加该属性后,会将数据同步写入磁盘中
- [ ] a:增加该属性后,只能追加不能删除,非root用户不能设定该属性。
e.g1:针对文件,增加(+a)选项的实验:
结果显示:该文件不能被删除、重命名、修改原内容。但可以新增(追加)内容、可以通过touch修改文件的编辑时间。
e.g2:针对目录,增加(+a)选项的实验:
结果显示:该目录中所有已生成的文件或目录,均不能被删除、重命名,但可以生成新文件和新目录。也可以对其目录中存在的文件,编辑内容或追加内容。
- [ ] c:自动压缩该文件,读取时会自动解压
- [ ] i:增加该属性后,使文件不能被删除、重命名、设定链接、写入、新增数据
e.g1:针对文件,增加(+i)选项的实验:
结果显示:不能对该文件进行删除、重命名、新增数据的操作。
e.g2:针对目录,增加(+i)选项的实验:
结果显示:不能对该目录进行删除、重命名、新增文件的操作。但可以对目录下原有的文件的内容,进行追加(如用head命令)操作。
lsattr命令(list attribute)
该命令用来读取文件或者目录的特殊权限。
- 语法:lsattr [-aR] [文件/目录名]
- 选项:
- [ ] -a:all,连同隐藏文件一同列出
- [ ] -R:连同子目录的数据一同列出
- [ ] -d:仅列出目录自身的数据