其中,username为修改后的用户名,groupname为修改后的组名,source为文件或目录的路径名称,-R表示级联修改目录下面的子目录和文件的所在组。这里的用户和组没有必然联系,即username不一定要属于groupname的那个组。
权限
1.文件和目录的权限简介
在目录和文件管理一节中我们了解到,用ls -l命令可以以列表形式展示当前目录下的子目录和文件。但是这个列表到底展示了哪些信息,上一节并未详细介绍。下面以一个例子来说明:
家目录下有一个animal/目录,还有一个description.txt文件,下面用不同颜色来划分列表字段。
drwxr-xr-x. 3 dubhlinn engineer 47 6月 19 22:26 animal
-rw-r--r--. 1 dubhlinn police 52 6月 19 22:25 description.txt
(1) 第一组只有1个字符,表示条目的类型:
-:普通文件
d:目录
l:软链接
c:字符设备,例如键盘、鼠标
b:块文件,例如硬盘;
(2) 第二组有9个字符,每3个表达一个意思:
第1-3个表示文件所有者的权限,
第4-6个表示文件所在组的用户的权限,
第7-9个表示文件其他组的权限。
那么这些字符代表什么意思呢?总的来说,r表示可读,w表示可写,x表示可执行,但是对于文件和目录,表达的意思又不尽相同,下面分别描述。
文件 目录- 无权限 无权限
r 可以用cat、more、less等命令查看文件内容 可以用ls命令查看目录下的内容
w 可以用vi、vim编辑器修改文件,但不代表可删除 可以在目录内增加、删除、重命名文件或子目录
x 可执行 可以用cd命令进入该目录
(3) 第三组是一个数字,对于文件来说是硬链接数,通常是1,对于目录是其下的子目录数量(包含隐藏子目录)。
(4) 第四组表示文件的所有者。
(5) 第五组表示文件的所在组。
(6) 第六组是一个数字,表示其大小(KB)。
(7) 第七组是日期时间,表示文件或目录的最后修改时间。
(8) 第八组是文件名或目录的名字。
根据上这些理论知识,我们再来看上面的示例
drwxr-xr-x. 3 dubhlinn engineer 47 6月 19 22:26 animal
这是一个名为animal的目录;其所有者有读、写、执行的权限,其所在组的用户有读、执行的权限,其他组有读、执行的权限;它下面有3个子目录;其所有者是dubhlinn,所在组是engineer;其大小为47KB,最后编辑时间是6月19日22:26。
2.修改文件或目录的权限
(1) 使用权限代码赋值
chmod role1=auth source
其中,role为角色代码,可以设置其中的一个或多个,多个角色之间用逗号(,)分隔且不能有空格,其取值范围如下:
u-文件或目录的所有者;
g-文件或目录所在组的用户;
o-其他用户;
a-所有用户,包含u、g、o,只能单独使用。
auth为权限码组合,例如读写执行权限为rwx,读和执行权限为rx,写权限为w,根据需要选择。
source为文件或目录的路径名称。
下面是几个实例:
chmod u=rwx,g=rx,o=rx /home/dubhlinn
chmod o=r /home/dubhlinn/description.txt
chmod a=rwx /home/public
(2) 使用加减号添加或减少权限
chmod role+auth source
chmod role-auth source
role、auth、source的含义同上,同样可以设置一个或多个角色,以下是几个实例:
chmod u-x,g+rw /home/dubhlinn/description.txt
chmod a+w /home/public
chmod u+rwx,g-x,o-x /home/dubhlinn
(3) 使用数字赋值
chmod xyz source
其中,x、y、z是三个数字,分别表示文件或目录的所有者、所在组的用户、其他组的用户的"权限值"。
权限值是这样计算的:
r=4
w=2
x=1
将这个用户的权限代码对应的数字加起来就是"权限值",所以其取值范围可能是0、1、2、3、4、5、6、7。
例如,chmod 754 /home/void 等价于 chmod u=rwx,g=rx,o=r /home/void。