Linux基础知识:chmod chown chgrp 及档案权限杂记

仅以此零星的记录自己新掌握的知识,有些本来就懂的基础东西,我这里就不写了。

先以下面的文件来说明

[sunjiebin@rhel6 ~]$ ll 1.torrent
-rwxrw-r--. 1 sunjiebin sunjiebin 30870  9月 27 11:17 1.torrent
-rw-rw-r--第一个“-”指的是文件的类型。普通文件“-”。d代表目录,b代表可存储的设备,如硬盘。c代表一些串行的设备。也可以说是可插拔的设备吧。如键盘,鼠标,usb,打印机接口都是。例如:

[sunjiebin@rhel6 dev]$ ll -d  disk & ll sda1 & ll lp0
[1] 27782
[2] 27783
brw-rw----. 1 root disk 8, 1  9月 28 19:32 sda1
crw-rw----. 1 root lp 6, 0  9月 28 19:32 lp0
drwxr-xr-x. 5 root root 100  9月 28 19:32 disk
其中/dev/disk代表的是目录。前面是d。sda1代表的是硬盘分区,前面是b。lp0代表的是第1个打印机端口,前面是c。
 

后面的r代表可读,w代表可写,x代表可执行。这里主要针对x权限来说明下。

如果是文件,x权限即代表执行权限。如对于/bin/vi,我们可以用./vi来执行。

[sunjiebin@rhel6 ~]$ ./vi
[sunjiebin@rhel6 ~]$ ll vi
-rwxr-xr-x. 1 sunjiebin sunjiebin 721880  9月 30 23:45 vi
但当我们将权限中的x去掉进,再执行会发现权限不够。这便是x的作用。

[sunjiebin@rhel6 ~]$ ll vi
-rw-rw-rw-. 1 sunjiebin sunjiebin 721880  9月 30 23:45 vi
[sunjiebin@rhel6 ~]$ ./vi
-bash: ./vi: 权限不够
对于目录,x代表的可切换的意思。如果没有x权限,你就无法用cd切入目录。但可以用ls查看。如:

[sunjiebin@rhel6 ~]$ ls test/
aa
[sunjiebin@rhel6 ~]$ chmod 600 test/                                                                                  [sunjiebin@rhel6 ~]$ ll -d test
drw-------. 2 sunjiebin sunjiebin 4096 Sep 30 23:53 test
[sunjiebin@rhel6 ~]$ ll test/
ls: 无法访问test/aa: 权限不够
总用量 0
-????????? ? ? ? ?            ? aa
[sunjiebin@rhel6 ~]$ cd test/
-bash: cd: test/: 权限不够                                                                                                [sunjiebin@rhel6 ~]$ pwd
/home/sjb

由此可以看出,当文件夹没有x权限时,可以用ls来查看里面的文件列表,但是不能用cd切换进去!

chmod -R 表示递归传递权限。即文件夹下所有权限也跟着改变。如

[root@rhel6 sjb]# ll test/
总用量 4
-rw-rw-r--. 1 sunjiebin sunjiebin    0  9月 30 23:53 aa
-rw-r--r--. 1 root      root        0 10月  1 00:23 bb
drwxr-xr-x. 2 root      root      4096 10月  1 00:22 test2
[root@rhel6 sjb]# chown yy:yy test
[root@rhel6 sjb]# ll -d test & ll test
[1] 28253
总用量 4
drw-------. 3 yy yy 4096 10月  1 00:23 test
-rw-rw-r--. 1 sunjiebin sunjiebin    0  9月 30 23:53 aa
-rw-r--r--. 1 root      root        0 10月  1 00:23 bb
drwxr-xr-x. 2 root      root      4096 10月  1 00:22 test2
 

 可以看到,目录test变为了yy用户yy组。而目录下面的文件并没改变所属者。我们用-R试试。

[root@rhel6 sjb]# chown -R  yy:yy test
[root@rhel6 sjb]# ll -d test & ll test
[1] 28260
drw-------. 3 yy yy 4096 10月  1 00:23 test
总用量 4
-rw-rw-r--. 1 yy yy    0  9月 30 23:53 aa
-rw-r--r--. 1 yy yy    0 10月  1 00:23 bb
drwxr-xr-x. 2 yy yy 4096 10月  1 00:22 test2
这样就全部改变了。

同样的,对于chgrp,chmod这个参数也有效。

chmod中还可以用a,u,g,o来设置不同所有者的r,w,x权限。a代表所有用户,u代表所有者,g代表所属组,o代表其它用户。+代表添加权限,-代表删除权限,=代表替换权限。

如chmod a-x aa即代表除掉aa文件所有用户的执行权限。

[root@rhel6 test]# ll aa && chmod a-x aa && ll aa
-rwxrwxr-x. 1 yy yy 0  9月 30 23:53 aa
-rw-rw-r--. 1 yy yy 0  9月 30 23:53 aa


如 chmod a=x aa 即代表替换aa所有用户为只有执行权限

[root@rhel6 test]# ll aa && chmod a=x aa && ll aa
-rw-rw-r--. 1 yy yy 0  9月 30 23:53 aa
---x--x--x. 1 yy yy 0  9月 30 23:53 aa


如 chmod o-r aa 即表示去掉其它用户对aa的执行权限

[root@rhel6 test]# ll aa && chmod o-x aa && ll aa
---x--x--x. 1 yy yy 0  9月 30 23:53 aa
---x--x---. 1 yy yy 0  9月 30 23:53 aa

好了,今天学习需要注意的就是这些了。

相关推荐