3

2.3 Linux下改变文件权限

Posted by 撒得一地 on 2015年9月23日 in Linux教程

文件权限对于一个系统的安全性非常重要了,文件的权限和使用者与群组息息相关。那么如何修改文件权限,下面是几个常用于群组、拥有者、各种身份的权限修改指令:

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

改变所属群组, chgrp 
顾名思义,就是将文件赋给其它群组。chgrp就是change group的缩写。改变这个文件的群组,要注意的是这个组名必须要在/etc/group文件内存在才行,否则就会显示错误。

[root@lmode ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录都更新成为这个群组之意。常常用在改变某一目录内所有的文件这种情况。
范例:
[root@lmode~]# ll
total 20
drwx------ 2 psz psz  4096 Jul  1 15:52 ceshi
[root@lmode ~]# chgrp root ceshi //将ceshi群组由psz改为root
[root@lmode ~]# ls -ld
total 20
drwx------ 2 psz  root  4096 Jul  1 15:52 ceshi
[root@lmode ~]# chgrp testing ceshi
chgrp: invalid group name `testing' <== 提示出错,因为找不到testing这个群组名~

改变文件拥有者, chown
顾名思义,它就是将一个文件的拥有者改成另一个拥有者。chown是change onwer的缩写。要改变文件拥有者,要注意的是, 用户必须是已经存在系统中的账号,也就是在/etc/passwd 这个文件中有记录的用户名称才有效。
此外,如果要连目录下的所有次目录或文件同时更改文件拥有者的话,要加上 -R 这个选项!

[root@lmode ~]# chown [-R] 账号名称 文件或目录
[root@lmode ~]# chown [-R] 账号名称:组名 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更
范例:将ceshi的拥有者改为root这个账号:
[root@lmode ~]# chown root ceshi
[root@lmode ~]# ls -ld
drw-r--r-- 1 root root 68495 Jun 25 08:53 ceshi
范例:将ceshi的拥有者与群组改回为psz:
[root@lmode ~]# chown psz:psz ceshi
[root@lmode ~]# ls -ld
drwx------ 2 psz psz 4096 Jul  1 15:52 ceshi
事实上,chown也可以使用『chown user.group file』,亦即在拥有者与群组间加上小数点『.』也行!  
不过建议使用冒号『:』来隔开拥有者与群组!这样比较清晰不容易犯错。
此外,chown也能单纯的修改所属群组。 例如『chown .root ceshi』就是修改群组~看到了吗?就是那个小数点的用途!

改变权限, chmod
这个命令可以增加会减少文件的权限。权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。
数字类型改变文件权限
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是: owner = rwx = 4+2+1 = 7,group = rwx = 4+2+1 = 7,others= — = 0+0+0 = 0

[root@lmode ~]# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
[root@lmode ~]# ls -ld ceshi/
drwx------ 2 psz psz 4096 Jul  1 15:52 ceshi/
[root@lmode ~]# chmod 777 ceshi
[root@lmode ~]# ls -ld ceshi/
drwxrwxrwx 2 psz psz 4096 Jul  1 15:52 ceshi/

那如果要将权限变成『 -rwxr-xr– 』呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754 !
所以你需要下达『 chmod 754 filename』。 另外,在实际的系统运作中最常发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件后,他的权限通常是 -rw-rw-r– 也就是664, 如果要将该文件变成可执行文件,并且不要让其他人修改此一文件的话, 那么就需要-rwxr-xr-x这样的权限,此时就得要下达:『 chmod 755 test.sh 』的指令!
另外,如果有些文件你不希望被其他人看到,那么应该将文件的权限设定为例如:『-rwxr—-』,那就下达『 chmod 740 filename 』吧! 

例题:
将刚刚你的ceshi这个文件的权限修改回-rw-r--r--的情况!
答:
-rw-r--r--的分数是644,所以指令为:
chmod 644 ceshi

符号类型改变文件权限
基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以借由u, g, o来代表三种身份的权限!
此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x.

假如我们要『设定』一个文件的权限成为『-rwxr-xr-x』时,基本上就是:

user (u):具有可读、可写、可执行的权限;
group 与 others (g/o):具有可读与执行的权限。

[root@lmode ~]# chmod  u=rwx,go=rx  ceshi
那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格.
[root@lmode ~]# ls -dl ceshi
drwxr-xr-x  1 root root 395 Jul 4 15:55 ceshi

假如是『 -rwxr-xr– 』这样的权限呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』来设定。此外,如果我不知道原先的文件属性,而我只想要增加ceshi这个文件的每个人均可写入的权限, 那么我就可以使用:

[root@lmode ~]# ls -dl ceshi
drwxr-xr-x  1 root root 395 Jul  4 15:55 ceshi
[root@lmode ~]# chmod  a+w  ceshi
[root@lmode ~]# ls -dl ceshi
drwxrwxrwx  1 root root 395 Jul  4 11:45 ceshi

而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

[root@lmode ~]# chmod  a-x  ceshi
[root@lmode ~]# ls -dl ceshi
drw-rw-rw-  1 root root 395 Jul  4 11:45 ceshi

标签:,

上一篇:

下一篇:

相关推荐

3 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

2 + 5 = ?

网站地图|XML地图

Copyright © 2015-2018 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.