修改Linux文件的权限与隐藏属性
可以说Linux系统就是一个管理文件的系统。因此文件的权限显得尤为重要。那么如何才能设置文件的权限呢?
1. 文件的权限
Linux文件的权限有什么呢?
终端输入
ls -[a]l filename
就可以查看文件具有的权限。
整体上文件权限可分为三部分,即档案的所有者、档案所属的群组和其他人的权限三个部分。每个部分又可分为三个权限rwx。
r:read读权限。是否可以读此档案
w:write写权限。是否可以修改此档案
x:execute可执行权限。是否可执行
每个部分都是三个字符的组合[rwx],如何没有权限,则对应位置为[-],三个字符的顺序是不会改变的。
若一个文件的类型与权限数据为
[-rwxr-xr--]
则说明其权限为
[-][rwx][r-x][r--]
第一个横线代表这个文件名为目录还是文件,当为[-]时为文件。
第二个[rwx]代表拥有者(owner)的权利,可读可写可执行。
第三个代表通群组用户(group)的权利,可读可执行,但不可写。
第四个代表其他用户的权利,只可读。
2. 修改文件权限
修改文件权限的指令有很多,先介绍几个常用于群组、拥有者以及各种身份的权限修改的指令。
- chgrp:改变文件所属群组
- chown:改变文件拥有者
- chmod:改变文件的权限,SUID,SGIP,SBIT等等的属性。
改变群组
$:chgrp [-R] 群组名称 文件或目录
其中[-R]参数为进行递归的持续变更,亦及联通次目录下的所有文件、目录都更新成为这个群组之意。
改变文件拥有者
$:chown [-R] 账号名称 文件或目录
改变权限
$:chmod [-R] xyz 文件或目录
其中xyz即为上边提到的文件的全新[-rwxrwxrwx],这九个权限是三个三个一组,我们可以用数字来代表各个权限。
r:4 w:2 x:1
如 rwx=4+2+1=7,—=0+0+0=0
此外还有一种修改权限的方法。即用u,g,o分别代表三种身份的权限。+代表加入权限,-代表除去权限,=代表设定权限。另外a代表全部身份。
如
$: chmod u=rwx,go=rx 文件名或文件夹
意即将文件设定为[-rwxr-xr-x]权限。
3.文件的隐藏属性
接下来介绍一下问价你的隐藏属性。文件的隐藏属性用在系统安全方面有很大的用途。
$: chattr [+-=][ASacdistu] 文件或目录名称
选项于参数:
- + :增加一个特殊的参数,其他原本存在的参数则不动。
- - : 移除一个特殊的参数,其他原本存在的参数不动。
- = :设定一个参数。
- A : 当设定时,存取此文件或目录时,他的访问时间atime不会被修改,可避免I/O较慢的机器过度的存取硬盘。
- S : 一般的文件时异步写入磁盘的,当加上这个参数时,会同步写入磁盘。
- a :设定此参数时,文件只会增加数据,不能删除也不能修改。
- c :设定后,将自动将文件压缩,读取时会自动解压缩。对大文件有用。
- d : 当dump程序被修改时,设定d属性将可使该文件不会被dump备份。
- i : 可以使该文件不能被删除、修改包括改名,写入或新增数据,对于系统性有很大帮助。
- s : 设定时,如果文件被删除,将会被完全移除出这个硬盘空间。
- u : 与s相反,当使用u配置时,如果文件被删除,其数据依旧保存在硬盘空间。
- 注意:属性设定常见的是a和i,而且很多属性要root才能设定。
显示隐藏属性
$: lsattr [-adR] 文件或目录
- -a : 将隐藏文件的属性要展示出来
- -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名。
- -R :连同子目录的数据也一并列出来。