在介绍这三个命令之前,首先要知道linux下文件属性与权限的相关知识。
当我们使用ls -l
命令的时候,可以看到如下信息:
[test@localhost ~]$ ls -l
总用量 0
drwxrwxr-x. 2 test test 6 11月 8 21:29 test
-rw-rw-r--. 1 test test 0 11月 8 21:29 testfile
它由七部分组成:
-rwxrw-r--
这里,第一个-
处代表类型,可能的值有
值 | 意义 |
---|---|
- | 文件 |
d | 目录 |
l | 连结档(link file) |
b | 接口设备 |
c | 串行端口设备 |
后面的rwx
分别代表读、写、执行,顺序固定。共有三组,从前往后依次代表文件所有者的权限,文件所在组的权限,其它用户权限。
以drwxrwxr-x. 2 test test 6 11月 8 21:29 test
为例, 最前面的d
代表这是一个目录,其后的rwx
代表所有者具有读写和执行的权限(对文件夹来说是进入该文件夹),在后面的rwx
代表所在组具有上述权限,最后的r-x
代表其他用户(others)只有读和执行的权限。
chgrp
chown
chmod
三个命令就是分别更改文件或目录的所在组、所有者、权限等信息的。
chgrp
chgrp
即change group
的缩写,使用起来也非常简单:
chgrp [-R] groupname filename
-R (迭代)是可选的,代表对该目录下的所有文件及目录也进行相应操作。
# ----------------执行前----------------
[test@localhost ~]$ ls -l
总用量 0
drwxrwxr-x. 2 test test 6 11月 8 21:29 test
# ----------------执行----------------
[root@localhost test]# chgrp root test
# ----------------执行后----------------
[root@localhost test]# ls -l
总用量 0
drwxrwxr-x. 2 test root 6 11月 8 21:29 test
执行该命令时可能权限不顾,用具有权限的用户操作就好。
chown
同样chown
是change owner
的缩写,可以更改文件的所有者,也可以在更改所有者的同时更改组,命令格式如下:
chown [-R] user filename # 更改user为相应文件或目录的owner
chown [-R] user:group filename # 更改user为owner的同时更改group为其所在组
chown [-R] user.group filename # 同上
如:现有目录如下:
drwxr-xr-x. 3 test test 16 11月 8 23:52 t1
drwxr-xr-x. 2 test test 6 11月 8 23:52 t2
-rw-r--r--. 1 test test 0 11月 8 23:52 t3
- 只改变所有者
[root@localhost test]# chown root t1
[root@localhost test]# ls -l
总用量 0
drwxr-xr-x. 3 root test 16 11月 8 23:52 t1
- 改变所有者和所在组
使用user:group
:
[root@localhost test]# chown root:root t2
[root@localhost test]# ls -l
总用量 0
drwxr-xr-x. 3 root test 16 11月 8 23:52 t1
drwxr-xr-x. 2 root root 6 11月 8 23:52 t2
-rw-r--r--. 1 test test 0 11月 8 23:52 t3
使用`user.group``:
[root@localhost test]# chown root.root t3
[root@localhost test]# ls -l
总用量 0
drwxr-xr-x. 3 root test 16 11月 8 23:52 t1
drwxr-xr-x. 2 root root 6 11月 8 23:52 t2
-rw-r--r--. 1 root root 0 11月 8 23:52 t3
- 迭代更新:
chown -R root test
chmod
- 使用
+
-
=
进行权限操作
+
即增加相应权限,-
即减去相应权限,=
为设置,加减的内容为rwx,格式为
[augo] = [rwx]
[augo] + [rwx]
[augo] + [rwx] - [rwx]
这里的a表示全部用户(ugo),u表示owner,g表示group,o表示others,[]表示选其中的一个或多个,上述加减号皆可互换,如:
a-rw # 对所有用户减去rw权限
g+rw # 对所在组增加rw权限
ug-rw # 对所有者和所在组减去rw权限
o+r-w # 对其他用户增加r权限并减去w权限
u=rwx,g=rw,o=r # 给所有者设置rwx权限,所在组设置rw权限,其它用户设置r权限
u=rwx,g=rw,o=r
逗号两侧没有空格
读者可自行尝试。如:
# d---------. 2 root root 6 11月 8 23:52 t2
[root@localhost test]# chmod a+rw t2
[root@localhost test]# ls -l
drw-rw-rw-. 2 root root 6 11月 8 23:52 t2
# d-wx--x--x. 3 root test 16 11月 8 23:52 t1
[root@localhost test]# chmod u+r t1
[root@localhost test]# ls -l
总用量 0
drwx--x--x. 3 root test 16 11月 8 23:52 t1
- 使用数字
由于rwx的位置时固定的,可以当作二进制,有相应权限即为1,没有为0,如rwx为111,即十进制7,rw- 即6(110),-w-即2(010), 由此,改变权限的命令可为
chmod 764 t2 # 更改t2的权限为 rwxrw-r--