当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 21 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 也说说ACL
帖子发表于 : 2008-07-21 17:12 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
在 Unix/Linux 系统上沿用了多年的权限机制,由于欠缺灵活性,在现今的信息系统上显得落后和不敷应用。然而一个新的权限机制标准已经诞生出来,本文将会为大家介绍这个新机制在Linux上的操作方式。

传统上,在 Linux系统中每个档案和目录都设有权限 (permission) 来决定那些人能够使用这个档案。


权限分为三组,分别为:拥有者 (file owner),群组 (group),及 其它 (other).每组中再设有属性。属性亦分为三种,分别为:读取 (read),写入 (write),及执行(executable)。

我们可以用 "ls -l" 来检视档案的权限:

-rwxrw-r-- 1 adam mis 272401 May 10 2003 report.doc

在上面的例子,档案 report.doc 的拥有者为 "adam" 而 adam 可以读取,写入和执行这个档案,另外 report.doc 的群组为 "mis",在系统中所有属于 mis 群组的使用者皆可读取和写入这个档案,而其它的使用者只能够读取这个档案。

如果我们想 report.doc 的内容只能给 mis 群组的使用者读取,我们可以用 "chmod 640 report.doc" 这个指令更改其权限。

-rw-r----- 1 adam mis 272401 May 10 2003 report.doc

要是 report.doc 这个档案同时要给 mis 和 hr 两个群组的使用者读取,现有的权限机制已不能够让我们简易地设定。我们得要劳烦系统管理员为我们加入一个新的群组 (i.e. mishr), 并把所有mis 和hr中的使用者加进 mishr 群组中。然后我们要用 "chgrp mishr report.doc" 把群组设为 mishr。

-rw-r----- 1 adam mishr 272401 May 10 2003 report.doc

假若,我们的要求再复杂一点:要让使用者 adam 和 eva 能读取和写入,群组 mis和hr 只能读取。那么,任我们再多加新的群组亦没办法得到这样的权限设定。要得到以上的权限设定,我们须要一个新的权限机制。而这个机制名为存取控制清单 (Access Control List, 简称 ACL)。ACL 实为现有权限机制的延伸,在三个基本设定 (拥有者,群组及其它) 外,允许我们加入对某指定使用者或群组的存取权限设定。

为针对 Unix 系统先天的不足,一个名为 POSIX ACL 的权限机制标准便诞生出来。其目的是为各 Unix 系统之间制定一个兼容的 ACL 标准,使各用家能在各系统之间使用统一的接口。

这个 POSIX ACL 的功能在 Linux kernel 2.6 上被正式支持,之后又被 back-port 到2.4 kernel 上。大家常用的档案系统,如:ext3,xfs,jfs,和 ReiserFS,都能使用ACL。当然,大家须要在编译 kernel 时启动 ACL。

相关的 kernel option:

CONFIG_FS_POSIX_ACL

CONFIG_EXT3_FS_POSIX_ACL

CONFIG_EXT2_FS_POSIX_ACL

挂上档案系统

虽然在 kernel 中已加进了 POSIX ACL 的支持,但是并不会自动启用的。我们必须在挂上档案系统时指明要使用 ACL。例如:

mount -t ext3 -o acl /dev/sda1 /home

当中 “-o acl” 便是在 /dev/sda1 上启用 ACL 的选项。

我们亦可以在 /etc/fstab 中加入选项:

/dev/sda1 /home ext3 acl 1 2

要检视一个档案或目录的 ACL,便要使用 “getfacl” 指令:

[adam@www adam]$ getfacl report.doc

# file: report.doc

# owner: adam

# group: mis

user::rw-

group::rw-

other::r--

以上的例子列出了一个基本的 ACL (Minimum ACL)。头三行为档案数据,当中包括了档案的拥有者和所属群组。之后的便是 ACL 中的每一条的规则。

在这个基本的 ACL 中:

user::rw- 拥有者 adam 能读取和写入

group::rw- 属于 mis 群组的使用者能读取和写入

other::r-- 其它的使用者只能读取

更改 ACL

“setfacl” 指令能更改一个档案或目录的 ACL。其用法如下:

setfacl option rules files

option:

-m 用来新增或修改 ACL 中的规则

-x 用来移除 ACL 中的规则

rules:

user:(uid/name):(perms) 指定某位使用者的权限

group:(gid/name):(perms) 指定某一群组的权限

other::(perms) 指定其它使用者的权限

mask::(perms) 设定有效的权限屏蔽

(perms) 为传统的 r(读取), w(写入) 及 x(执行)

如果想让 hr 群组的使用者能读取 “report.doc”而其它的人不能读取的话。我们可以用以下的指令达成:

setfacl -m group:hr:r,other::- report.doc

以 getfacl 检视新的 ACL:

[adam@www adam]$ getfacl report.doc

# file: report.doc

# owner: adam

# group: mis

user::rw-

group::rw-

group:hr:r--

mask::rw-

other::---

回应本文开始时所要的权限: 要让使用者 adam 和 eva 能读取和写入,群组 mis 和hr 只能读取,其它人不能读取和写入。我们只须多加两个规则便能达成:

setfacl -m group::r,user:eva:rw report.doc

[adam@www adam]$ getfacl report.doc

# file: report.doc

# owner: adam

# group: mis

user::rw-

user:eva:rw-

group::r--

group:hr:r--

mask::rw-

other::---

ACL 的种类

ACL 有两种:分别为存取型 『ACL』(Access ACL) 和『预设型 ACL』(Default ACL)。 我们之前所介绍便是存取型ACL可用于档案或目录,它决定了该档案或目录本身的使用权限。

而预设型 ACL 只可用于目录, 它决定了该目录下新建立的档案或目录的 ACL。

[adam@www adam]$ getfacl /home/adam

getfacl: Removing leading '/' from absolute path names

# file: home/adam

# owner: adam

# group: adam

user::rwx

group::---

other::---

要设定预设型 ACL, 同样使用“setfacl”。所不同的是,在每个规则前加上“default:”,例如:

setfacl -m default:user::rw /home/adam

如果觉得指令太长的话我们可以使用简略字符:

长写 简写

user: u:
group: g:
other: o:
mask: m:
default: d:

例如,要设定 /home/adam 的预设型ACL为使用者adam和eva能读取和写入, 群组只能读取 :

setfacl -m d:u::rw,d:u:eva:rw,d:g::r,d:o::- /home/adam

[adam@www adam]$ getfacl /home/adam

getfacl: Removing leading '/' from absolute path names

# file: home/adam

# owner: adam

# group: adam

user::rwx

group::---

other::---

default:user::rw-

default:user:eva:rw-

default:group::r--

default:mask::rw-

default:other::---


建立新的档案并检视其存取型ACL:

[adam@www adam]$ touch newfile

[adam@www adam]$ getfacl newfile

# file: newfile

# owner: adam

# group: mis

user::rw-

user:eva:rw-

group::r--

mask::rw-

other::---

具体应用实例可参考我的博客的samba篇


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-07-22 1:05 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
samba+ACL,可实现强大的权限控制功能


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-07-24 0:18 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
每天看一次,争取背下来


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-07-24 0:23 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
不错,给精华...


_________________
关注我的blog: ε==3


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-07-24 0:30 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
暂时没觉得有必要


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-07-24 0:40 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
eexpress 写道:
暂时没觉得有必要

夜猫子依依


_________________
关注我的blog: ε==3


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-07-24 22:25 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
回EE,这个是在工作中有现实应用价值的,我认为,只要存在就有价值


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-07-24 22:27 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
ACL 是个好东西, EE妖怪不识货


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-07-24 22:45 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
不发表观点,持中立,防止被人骂


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-07-25 15:51 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
今天又看了一次


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-07-31 21:11 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
windows看效果不如在U下看,汗:(


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-07-31 21:21 
头像

注册: 2007-09-29 3:09
帖子: 5773
送出感谢: 0 次
接收感谢: 3
不错的东东...个人用户...当作普及知识 :lol:


_________________
HUNT Unfortunately No Talent...


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-08-01 17:24 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
呵呵,确实.


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-08-04 11:13 
头像

注册: 2007-03-13 17:26
帖子: 2254
送出感谢: 0 次
接收感谢: 1
好强


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-08-04 19:39 

注册: 2008-05-25 21:11
帖子: 587
送出感谢: 0 次
接收感谢: 0 次
:o :shock: 8)


_________________
抚琴煮酒个人主页非诚勿扰


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 21 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译