基本属性
在Linux中一切皆文件,也就是目录、设备标识等等都是以文件进行表示的。
在使用ls -l查看命令时会看到-rwxr-xr--``drwxr-xr-x 这样的标识,其中第一个字符如果是-代表的是普通文件,如果是d代表的是一个文件夹。-: 代表是文件d: 代表是目录l: 代表是链接,类似Windows的快捷方式c: 代表的是串行端口设备,例如鼠标、键盘等b: 代表的是可供存储的设备,例如硬盘
每个文件的类型由最左边的10个字符来确定
从上面可以看到由两列是 shum 和staff,这代表着这个文件的所有者(shum)和所属用户组(staff)
修改所属信息
修改所属组chgrp
语法是:chgrp [-R] <属组名> <文件名>
其中 -R是可选参数,如果有此参数则代表的是递归修改
示例:chgrp staff test.txtchgrp -R staff /tmp/test/
修改所属用户chown
语法是:chown [-R] <用户名> <文件名> 或者 chown [-R] <用户名>:<属组名> <文件名>
第一种写法只是修改所属用户,第二种写法可以同时修改所属组
示例:chown shum test.txtchown shum:staff test.txtchown -R shum:staff /tmp/test/
修改文件权限 chmod
从上面的图可以看到文件的基本权限有 r``w``x三种,如果没有对应的权限,则对应位置使用-来表示。
在Linux里rwx还可以使用数字表示,其中r代表4,w代表2,x代表1,所以rwx同时存在则表示7,即4+2+1。如果是-则表示0,所以r-x代表的是5。
又因为一个文件的权限分为三部分,即所属用户、所属组、其他用户/组,每一部分又分为rwx三个权限位。所以修改权限时需要同时修改三部分或者指定修改某一部分。
同时修改三部分:chmod [-R] <权限数字:如755、0755> <文件名>
这里的0755和755意思是一样的,都表示rwxr-xr-x,也就是只有所有者才有写的权限,其他只有读和运行的权限。
如果是 777或者 0777则表示rwxrwxrwx,也就是任何人都有读、写、执行的权限。
指定修改某一部分:chmod [-R] <[ugo][+-=][rwx]> <文件名>
其中 u代表所有者,g代表所属组,o代表其他,+代表增加权限,-代表移除权限,=则表示直接设定权限
示例:chmod u-x test.sh 意思就是test.sh的文件所有者移除可执行权限chmod og+wx test.sh 这个意思test.sh文件的所属组以及其他用户增加写权限和可执行权限chmod u=rwx,g=rx,o=r test.sh 这个意思就是 test.sh的所有者设置权限为可读、可写、可执行,所属组可读和可执行,而其他人则只有读的权限
其他
除了常见的rwx权限外,可能在有些时候看到某个文件当前用户是有权限操作的,但是却无法删除或修改。
这可能是因为文件被加了其他保护。我们可以使用lsattr <文件名>来查看是否有其他属性保护。
这里可以看到有一个 i标识,这个标识的意思是禁止文件或目录发生更改,所以在删除或修改时会提示错误。
类似的标识还有一下几种:a: 让文件或目录仅供附加用途,也就是只能追加,例如echo 'test' >> test.txt,注意是>>代表是追加,>代表覆盖,而这里是只能使用>>。同样也无法使用文本编辑器打开文件进行修改内容。b:不能更新文件或目录的最后存取时间c:将文件或目录压缩后存放d:当系统备份时,dump程序会忽略此文件i:不能随意更改、删除文件或目录s:保密性删除文件或目录S:及时更新文件或目录u:防止意外删除
我们可以使用chattr [-R] [+-=][abcdisSu] <文件名>来增加或移除特殊属性。
示例:chattr +a test.txt 意思是让test.txt只能追加内容chattr -a test.txt 意思是移除 a只能追加的属性chattr +i test.txt 让文件变为只读文件,防止被修改或被删除chattr -i test.txt 移除只读属性
