Linux--档案/目录 权限及修改

首先所有权限对于三类用户分别设定: User(所有者) / Group(组群) / Others(其他)。

 

 

权限也是有三种:Read / Write / eXecute,这三种权限对于文档和目录有不同的意义。

1. 对于文档:

Read:可以查看文档的内容

Write:可以修改文档的内容,添加、删除、修改内容等

eXecute:文档可执行

需要注意:对于文档,权限指的是对于文档内容的权限而不是对于文档本身的权限。举个例子就是说即使有对文档的read,write,execute全部的权限,也不能决定是否删除移动文档本身,这些权限是由目录权限规定的。

 

2. 对于文件夹:

Read: 可以查看文件夹下文件/目录列表

Write:可以在目录下添加、删除文件/目录,当然还有修改文件名/目录名

eXecute: 是否可以作为工作目录,即是否可以cd进来

注意:对于文件夹,没有execute权限的话,Read write功能都不能被正常使用

 


 

修改权限的命令:chown,chgrp,chmod, 

chown:

$sudo chown 账号名 文件名/目录名  #只改拥有者

$sudo chown 账号名:组群 文件名/目录名 #改拥有者和组群

$sudo chown 账号名.组群 文件名/目录名 #同上

$sudo chown .组群 文件名/目录名 #只改组群

chgrp:

$sudo chgrp 组名 文件名/目录名

chmod:修改权限的时候并不是每次都要写9个权限的,太长了

每个权限有对应的整数值,read(4),write(2),execute(1), 用他们的和就可代表一类权限。

$sudo chmod 744 文件名/目录名 

 

虽然这样已经将参数从9减至3了,但依然不够简便。可以利用+/-/=来增加/删除/设定权限。其中用u/g/o/a分别表示拥有者/群组/其他用户/全部。

$sudo chmod u+x,go-w 文件名/目录名 #给拥有者增加execute权限,其他用户撤销write权限。

 

p.s.  上述的命令用语文件夹时可以加上选项 -R 表示对文件夹的所有目录递归使用。

 

 


 

2010.12.7日补充:

 

除了普通的r,w,x等权限,文档/目录还有默认权限,隐藏权限和特殊权限,下面分别介绍。

默认权限:

 

umask:新建档案或目录的默认属性,新建档案没有execute权限,新建目录有execute权限

$umask -S

u=rwx,g=rx,o=rx

$umask

0022

注意,以数字显示权限中,数字表示的是该默认值需要减掉到权限,如2,表示没有w=2权限

 

隐藏权限:lsattr,chattr,只有在ext2/ext3/ext4下面有效,其他文件系统下显示“lsattr: 对设备不适当的 ioctl 操作 While reading flags on ...”错,需要用到的请man

 

特殊权限:SUID, SGID, SBIT

我们已经知道了文档/目录有r,w,x三个权限,但是有时还会有s,t权限,比如passwd,/tmp,等的权限如下所示:

-rwsr-xr-x 1 root root 37140 2010-01-27 01:09 /usr/bin/passwd*

drwxrwxrwt 13 root root 4096 2010-12-07 09:58 ./

s对应于文档所有者的权限时对应SUID(Set User ID)权限。SUID权限只存在于二进制程序,是指一般用户执行此二进制程序时获得root权限(要求一般用户对文档有x权限噢)。注意对目录和非二进制程序到文档不存在这样到权限。

s对应与文档所属群组到权限时对应SGID(Set Group ID)权限。SGID权限对二进制程序文档和目录均有效:对于二进制程序文档,一般用户执行时获得文档所在群组到权限(要求一般用户对文档有x权限);对于目录,一般用户进入此目录时有目录所属群组的权限,当用户在此目录中新建文档/目录时,新建文档/目录到所属群为当前目录的所属群。

t对应于目录权限时对应SBIT(Sticky BIT),在该目录下新创建到的文档和目录只有所有者和root可以删除(可以创建是要求有w,x权限)。 

 

如何设定特殊权限呢? 我们知道一般可以用744这个三个数字代表所有者,所在群组和其他用户的权限。在这三个数前面再加上一个数则代表特殊权限,其中SUID(4),SGID(2),SBIT(1).

liyx@liyx-ubuntu:~$ ll special

-rw-r--r-- 1 liyx liyx 0 2010-12-07 11:15 special

liyx@liyx-ubuntu:~$ chmod 4755 special

liyx@liyx-ubuntu:~$ ll special

-rwsr-xr-x 1 liyx liyx 0 2010-12-07 11:15 special*

当然也可以用$chmod o+s special 的方式修改特殊权限。

 


参考:《鸟哥的Linux私房菜基础篇》

 

posted @ 2010-11-30 21:56  liyuxia713  阅读(252)  评论(0编辑  收藏  举报