这篇文章讲了在 Linux 中怎样改变文件的属性与权限。
chgrp
chgrp改变文件所属用户组
chgrp即为change group的简写,如果要改变文件的用户组,要被改变的用户组必须要在/etc/group文件中存在才行,否则就会显示错误,可以进入这个目录查看文件内容,但建议使用cat命令,不要使用vi/vim,因为一旦不慎修改了此文件,系统文件出错后果是很严重的。
改变之前:
1 2
| yangs-MacBook-Air:code yang$ ls -al yangs-MacBook-Air:code yang$ -rw-r--r-- 1 yang staff 14 Jan 12 17:01 te1
|
执行命令:
1
| yangs-MacBook-Air:code yang$ chgrp everyone te1
|
让我们查看一下:
1 2
| yangs-MacBook-Air:code yang$ ls -al yangs-MacBook-Air:code yang$ -rw-r--r-- 1 yang everyone 14 Jan 12 17:04 te1
|
可以看到已经被修改了。
当所改用户组未在文件中时:
1 2
| yangs-MacBook-Air:code yang$ chgrp eve te1 chgrp: eve: illegal group name
|
这个命令还有一个可选参数 -R,即进行递归(recursive)的持续更改,即连同子目录下的所有文件目录都更新成为这个用户组,常用在更改某一目录内所有的文件情况。
chown
chown改变文件所有者
chown即为 change owner 的简写,同样的,所改变的用户也必须是在/etc/passwd这个文件中有记录的用户名才可以。
chown 也可以直接修改用户组的名称,如果要连目录内所有子目录和文件都同时修改的话,直接加上-R即可。
1 2 3
| yangs-MacBook-Air:code yang$ chown bin te1 // 下面这个是将 te1 的所有者与用户组都改为 root yangs-MacBook-Air:code yang$ chown root:root
|
可能你会有疑问,上述两个命令有什么用呢?最常见的例子就是复制文件给你之外的其他人时,比如使用cp命令:
1
| yangs-MacBook-Air:code yang$ cp 源文件 目标文件
|
由于复制行为(cp)会复制执行者的属性与权限,那么对于其他人可能仍是无法修改此文件的。
chmod
chmod改变文件权限
chmod 命令用来变更文件或目录的权限。
在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用 chmod 指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。
权限范围的表示法如下:
1 2 3 4 5 6 7
| - u User,即文件或目录的拥有者; - g Group,即文件或目录的所属群组; - o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围; - a All,即全部的用户,包含拥有者,所属群组以及其他用户; - r 读取权限,数字代号为“4”; w 写入权限,数字代号为“2”; - x 执行或切换权限,数字代号为“1”; - 不具任何权限,数字代号为“0”; - s 特殊功能说明:变更文件或目录的权限。
|
语法 chmod (选项) (参数)
选项
1 2 3 4 5 6 7 8
| - -c或——changes:效果类似“-v”参数,但仅回报更改的部分; - -f或--quiet或——silent:不显示错误信息; - -R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理; - -v或——verbose:显示指令执行过程; - --reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同; - <权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置; - <权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置; - <权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
|
参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| - 权限模式:指定文件的权限模式; - 文件:要改变权限的文件。 ``` --- 知识扩展: Linux 用户分为:拥有者、组群(Group)、其他(other),Linux 系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及 root 的相关信 息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內。 --- 例:rwx rw- r-- r 为读取属性 // 值=4 w 为写入属性 // 值=2 x 为执行属性 // 值=1 ```shell chmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限 chmod u=rwx,g=rw,o=r f01 chmod 764 f01 chmod a+x f01 //对文件f01的u,g,o都设置可执行属性 文件的属主和属组属性设置 chown user:market f01 //把文件f01给uesr,添加到market组 ll -d f1 查看目录f1的属性
|