6.2 文件及目录所有者/拥有组/权限管理
新建立目录及文件时默认的所有者是当前用户,拥有组是当前用户的初始组,可以通过命令修改文件的所有者和拥有组。root用户可以修改任何文件的所有者和拥有组,一般用户只能修改所有者是自己的目录及文件的拥有组。
6.2.1 chgrp:更改目录或文件的拥有组
c hgrp命令用于更改目录或文件的拥有组,该命令语法如下。
chgrp [-fhRv][--help][--version][用户组] [--reference=<参考文件或目录>] 文件|目录...
常用指数:
常用选项:
● 文件|目录...:要更改拥有组的文件或目录。
● 用户组:更改以后的拥有组。
● -f:不显示错误信息。
● -h:更改遇到的符号链接的拥有组,而非符号链接指向的文件或目录的拥有组。当遇到符号链接而未指定“-h”选项时,会更改符号链接指向的文件或目录的拥有组,而非链接本身的拥有组。
● -R:递归处理,将指定目录下的所有文件及子目录一并处理。
● -v:显示命令执行过程。
● --reference=<参考文件或目录>:把指定文件或目录的拥有组更改成和参考文件或目录的拥有组相同。
在使用chgrp命令指定用户组时,可以使用组名称或GID。下面看几个chgrp命令的例子。
[root@srv tmp]# ll total 4 drwxr-xr-x 2 root root 4096 Feb 15 14:56 lost
● 将目录“lost”的拥有组修改为charles。
[root@srv tmp]# chgrp charles lost/ [root@srv tmp]# ll total 4 drwxr-xr-x 2 root charles 4096 Feb 15 14:56 lost
6.2.2 chown:更改目录或文件的所有者或拥有组
chown命令用于更改目录或文件的所有者和拥有组,该命令语法如下。
chown [-fhRv] [--reference=<参考文件或目录>] 所有者[:拥有组] 文件|目录...
常用指数:
常用选项:
● 文件|目录...:要更改拥有组的文件或目录。
● -f:不显示错误信息。
● -v:显示命令执行过程。
● -h:更改遇到的符号链接的所有者或拥有组,而非符号链接指向的文件或目录的所有者或拥有组。当遇到符号链接而未指定“-h”选项时,会更改符号链接指向的文件或目录的所有者或拥有组,而非链接本身的所有者或拥有组。
● -R:递归处理,将指定目录下的所有文件及子目录一并处理。
● --reference=<参考文件或目录>:把指定文件或目录的所有者和拥有组更改成和参考文件或目录的拥有组相同。
在使用chown命令指定用户或用户组时,可以使用名称或ID。下面看几个chown命令的例子。
● 当前目录目前情况。
[root@srv tmp]# ll total 12 drwxr-xr-x 2 root root 4096 Feb 15 15:14 fringe drwxr-xr-x 2 root root 4096 Feb 15 15:11 house drwxr-xr-x 2 root root 4096 Feb 15 15:11 lost
● 更改目录“house”的所有者为charles。
[root@srv tmp]# chown charles house/
● 更改目录“lost”的拥有组为charles。
[root@srv tmp]# chown :charles lost
● 更改目录“fringe”的所有者和拥有组为charles。
[root@srv tmp]# chown charles:charles fringe/
● 执行上述更改命令后当前目录的情况。
[root@srv tmp]# ll total 12 drwxr-xr-x 2 charles charles 4096 Feb 15 15:14 fringe drwxr-xr-x 2 charles root 4096 Feb 15 15:11 house drwxr-xr-x 2 root charles 4096 Feb 15 15:11 lost
6.2.3 chmod:更改目录或文件权限
在Linux中默认可以配置所有者、拥有组及其他用户对目录或文件的权限。可用的权限包括可读、可写入、可执行。
chmod命令用于更改目录或文件的权限。该命令有两种用法,一种是包含字母和操作符表达式的文字配置方法;另一种是包含数字的数字配置方法。该命令语法如下。
chmod [-fRv] [--reference=<参考文件或目录>] [u|g|o|a] [+|-|=] 权限字符 文件|目录... chmod [-fRv] 权限数字 文件|目录...
常用指数:
常用选项:
● 文件|目录...:要更改权限的文件或目录。
● --reference=<参考文件或目录>:把指定文件或目录的权限更改成和参考文件或目录的拥有组相同。
● -f:不显示错误信息。
● -v:显示命令执行过程。
● -R:递归处理,将指定目录下的所有文件及子目录一并处理。
● u:更改所有者的权限。
● g:更改拥有组的权限。
● o:更改其他用户的权限。
● a:同时更改所有者、拥有组其他用户的权限。
● +:在现有权限基础上增加新的权限。
● -:取消现有权限。
● =:将权限改为指定值。
● 权限字符:可读(r)、可写入(w)、可执行(x)三种中任意一种或多种。
● 权限数字:4表示可读权限、2表示可写入权限、1表示可执行权限。
chmod可以用于修改目录或文件的权限,下面看几个chmod命令的例子。
● 当前目录目前情况。
[root@srv tmp]# ll total 40 drwxr-xr-x 2 root root 4096 Feb 15 16:36 csi drwxr-xr-x 2 root root 4096 Feb 15 16:38 dexter drwxr-xr-x 2 root root 4096 Feb 15 16:38 everwood drwxr-xr-x 2 root root 4096 Feb 15 16:38 friends drwxr-xr-x 2 root root 4096 Feb 15 15:14 fringe drwxr-xr-x 2 root root 4096 Feb 15 15:11 house
● 将目录csi的权限修改为“777”,也就是说文件的所有者、拥有组、其他用户的权限都是可读(r=4)、可写入(w=2)、可执行(x=1)。
[root@srv tmp]# chmod 777 csi/
● 将目录dexter的权限修改为“644”,也就是说所有者权限是可读(r=4)、可写入(w=2);目录的拥有组权限是可读(r=4);其他用户的权限是可读(r=4)。
[root@srv tmp]# chmod 644 dexter/
● 将目录everwood的权限修改为文件的所有者、拥有组、其他用户的权限都是可读(r=4)、可写入(w=2)、可执行(x=1)。
[root@srv tmp]# chmod a=rwx everwood/
● 将目录friends拥有组现有权限减去只读权限。
[root@srv tmp]# chmod g-r friends/
● 将目录fringe其他用户权限在现有的基础上加入可读(r)、可写入(w)权限。
[root@srv tmp]# chmod o+rw fringe/
● 将目录house所有者权限更改为可读(r)、可写入(w)、可执行(x);拥有组权限可读(r)、可执行(x);其他用户权限更改为可执行(x)。
[root@srv tmp]# chmod u=rwx,g=rx,o=x house/
● 执行上述更改命令后当前目录的情况。
[root@srv tmp]# ll total 40 drwxrwxrwx 2 root root 4096 Feb 15 16:36 csi drw-r--r--2 root root 4096 Feb 15 16:38 dexter drwxrwxrwx 2 root root 4096 Feb 15 16:38 everwood drwx--xr-x 2 root root 4096 Feb 15 16:38 friends drwxr-xrwx 2 root root 4096 Feb 15 15:14 fringe drwxr-x--x 2 root root 4096 Feb 15 15:11 house drwxr-xr-x 2 root root 4096 Feb 15 16:37 hustle