一天一点学习Linux之权限的设置

来源:岁月联盟 编辑:exp 时间:2011-10-13

上面两节我们讲了
Linux文件与目录权限的基本概念与Linux文件类型和后缀名。下面,我们就来看看如何来修改这些权限。

修改权限的几个命令
chgrp :改变文件所属用户组
chown :改变文件所属用户
chmod :改变文件的权限

chgrp :(change group)改变文件所属用户组

 
要使用这个命令,后面接的用户组必需要在你的/etc/group文件内才可以,否则会报错。
重要参数:-R(recursive)递归处理,他会连目录里面的目录一同处理掉。也就是目录里面包含的全部文件都更改。

看个例子
[root@yufei ~]# ls -l install.log
-rw-r–r–. 1 root root 31537 Dec 15 22:43 install.log
这里的install.log是属于root用户组
[root@yufei ~]# chgrp yufei install.log
[root@yufei ~]# ls -l install.log
-rw-r–r–. 1 root yufei 31537 Dec 15 22:43 install.log
我们已经把install.log这个文件的用户组改成了yufei

再来看看这个-R参数
[root@yufei ~]# mkdir testdir
[root@yufei ~]# touch testdir/testfile
[root@yufei ~]# ls -ld testdir/ ; ls -l testdir/testfile
drwxr-xr-x. 2 root root 4096 Jan 20 02:01 testdir/
-rw-r–r–. 1 root root 0 Jan 20 02:01 testdir/testfile
我们看到testdir这个目录和testdir/testfile文件都是属于root用户组的。
[root@yufei ~]# chgrp yufei testdir/
[root@yufei ~]# ls -ld testdir/ ; ls -l testdir/testfile
drwxr-xr-x. 2 root yufei 4096 Jan 20 02:01 testdir/
-rw-r–r–. 1 root root 0 Jan 20 02:01 testdir/testfile
只有testdir/这个目录的所属用户组改成了yufei,而里面的文件没有改变。我们再加上-R参数来看看效果。
[root@yufei ~]# chgrp -R yufei testdir/
[root@yufei ~]# ls -ld testdir/ ; ls -l testdir/testfile
drwxr-xr-x. 2 root yufei 4096 Jan 20 02:01 testdir/
-rw-r–r–. 1 root yufei 0 Jan 20 02:01 testdir/testfile
两个都改变了。

chown :(change owner)改变文件所属用户
这个命令后面接的用户也必需是在/etc/passwd中的才能改变。
这里也有个-R参数,和上面一样的道理。
看例子
[root@yufei ~]# ls -l install.log
-rw-r–r–. 1 root yufei 31537 Dec 15 22:43 install.log
[root@yufei ~]# chown yufei install.log
[root@yufei ~]# ls -l install.log
-rw-r–r–. 1 yufei yufei 31537 Dec 15 22:43 install.log
这里还有一个应用,就是可以用户和用户组同时更改
[root@yufei ~]# chown root:root install.log
[root@yufei ~]# ls -l install.log
-rw-r–r–. 1 root root 31537 Dec 15 22:43 install.log
看到了吧,这个命令也可以用来更改用户组
[root@yufei ~]# chown :yufei install.log
[root@yufei ~]# ls -l install.log
-rw-r–r–. 1 root yufei 31537 Dec 15 22:43 install.log
关于-R的参数这里就不举例了,和上面的一样。

注:chown user:usergroup file这个格式中“:”前面是用户,后面是用户组,不更改的话就留空。这个方式使用的机率稍大。

chmod :(change mode)改变文件的权限
改变文件的权限,我们可以用两种方式来表示,一种是以rwx方式 ,另外一种就是数字方式。

第一种是以数字方式来表示

r:读取:4
w:写入:2
x:执行:1
我们前面也讲过,每三个是为一组,共owner/group/others三组,为了大家更容易理解,我们来看个例子。
[root@yufei ~]# ls -l install.log
-rw-r–r–. 1 root yufei 31537 Dec 15 22:43 install.log
第一个“-”表示的是普通文件
第一组:rw-=4+2+0=6
第二组:r–=4+0+0=4
第三组:r–=4+0+0=4
最后一点:表示SELinux安全上下文件
那我们来改变一下这个权限
[root@yufei ~]# chmod 666 install.log
[root@yufei ~]# ls -l install.log
-rw-rw-rw-. 1 root yufei 31537 Dec 15 22:43 install.log
这还是比较简单的,关键是要多操作,多领会,关于这些权限所代表的意思,可以参考Linux文件与目录权限的基本概念。同样,也有一个-R参数,效果也是一样的。

第二种以rwx方式表示

在开始前,我们来介绍一下user/group/others。这三个我们可以用u,g,o来分别表示,用a来表示所有。
如果想更改相应的权限,我们可以用下面的方式来更改。

 chmod 


还是来具体的看例子
[root@yufei ~]# ls -l install.log
-rw-rw-rw-. 1 root yufei 31537 Dec 15 22:43 install.log
我们把这个文件的权限改为-rwxr-xr-x.我们就可以这样来设置
[root@yufei ~]# chmod u+x,g=r-x,o=r-x install.log
[root@yufei ~]# ls -l install.log
-rwxr-xr-x. 1 root yufei 31537 Dec 15 22:43 install.log
这样就实现了我们想要的效果

注:
1、u,g,o之间用英文的“,”来分隔
2、如果没有权限,我们可以不用“-”来代替,直接略过。如g=r-x,o=r-x可以写成g=rx,o=rx,效果是一样的。

rwx对文件与目录的意义
其实这个权限的设置还是比较容易掌握的,关键是我们要深刻理解rwx对文件与目录的意义是什么,这个并不是每个人都能理解和掌握的,所以,我们在这里,再做个总结,来方便大家学习掌握。

rwx对文件的意义
r (read):可读取此文件里面的内容;
w (write):可以编辑、增加、删除或修改文件里面的内容(但这个文件能否被你删除,取决于你对这个目录的权限是什么);
x (eXecute):文件具有可以被系统执行的权限(如一些脚本文件)。

 

rwx对目录的意义
r(read contents in directory):读取目录里面的内容。
所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件。所以我们就可以利用ls这个指令将该目录的内容列表显示出来。
w(modify contents of directory):编辑目录里面的内容。
主要包括
1、创建新的文件与目录
2、删除目录下面的文件与目录(无论该文件的权限是什么,这一点很重要)
3、对目录里面的文件与目录重命名
4、移动目录里面的文件与目录的位置
x(access directory):代表的是用户能否进入该目录成为工作目录。
这个也就是用cd命令能否进入某个目录

下面是一张图,希望对大家的理解能带来些帮助

rwx 

 

希望各位能够多动手来实践,特别是要掌握这个rwx对目录的意义

摘自:羽飞博客