Chinaunix首页 | 论坛 | 博客
  • 博客访问: 222694
  • 博文数量: 36
  • 博客积分: 3044
  • 博客等级: 中校
  • 技术积分: 356
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-20 18:31
文章分类

全部博文(36)

文章存档

2010年(36)

分类: LINUX

2010-04-06 11:37:56

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任.http://U16.cublog.cn 
 
   传统的Linux文件系统的权限控制是通过user、group、other与r(读)、w(写)、x(执行)的不同组合来实现的。随着应用的发展,这些权限组合已不能适应现时复杂的文件系统权限控制要求。例如,我们可能需把一个文件的读权限和写权限分别赋予两个不同的用户或一个用户和一个组这样的组合。传统的权限管理设置起来就力不从心了。为了解决这些问题,Linux开发出了一套新的文件系统权限管理方法,叫文件访问控制列表(Access Control Lists,ACL)。
 
  要启用ACL,需内核提供ACL支持和安装ACL管理工具。现在的2.6内核都提供ACL支持,在编译内核时只要在file systems分支下,把Ext2 POSIX Access Control Lists或Ext3 POSIX Access Control Lists选中就可以了。用以下命令挂接硬盘启用文件系统ACL。

  我们可把选项写到/etc/fstab文件中,在需启用acl的分区选项包含acl参数.
 
  ACL有两种,一种是存取ACL(access ACLs),针对文件和目录设置访问控制列表。一种是默认ACL(default ACLs),只能针对目录设置。如果目录中的文件没有设置ACL,它就会使用该目录的默认ACL。要设置ACL,首先要安装管理工具,它们分别是getfacl和setfacl,在debian中只要安装acl软件包即可。
 
setfacl工具可为文件和目录ACL,命令格式如下:
#setfacl    -m     
#getfacl          filename -->可查看文件的属性.
#getfacl    -d    filename  -->可查看文件属主,属组.
#setfacl    -m    u:redhat:rw   filename -->设置文件redhat用户可读写.
#setfacl    -m    g:groupname:rwx  filename -->设置组对文件的权限.
#setfacl    -x    g:groupname   filename  -->取消这个组对此文件的所有权限.
#setfacl    -R                                    递归.
#setfacl    -m  m:groupname:rx  filename -->收回组的某些权限.

下面我们举例来说明...
在要使用分区的defaults后面加上acl,用逗号隔开,保存退出.
[root@station197 ~]# mount -o remount  /home -->重新挂载一次.
[root@station197 ~]# useradd   sandy
[root@station197 home]# cd  /home;touch   test.txt;ls   -l
-rw-r--r-- 1 root    root        0 Apr  6 10:22   test.txt
[root@station197 home]#getfacl   test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
可以看到test.txt文件其他人具备只读的权限,不可修改.如果我们想让其他人修改可以使用chmod命令,这样的话所有的人都可以修改此文件,但是我们只想让sandy修改此文件,这时就要使用文件访问控制了...

[root@station197 home ]## su   -   sandy
[sandy@station197 ~]$ cd   /home;vim   test.txt -->发现你写入的数据根本无法保存,下面警告,warning: changing  a  readonly  file,文件只读的,无法写入...
$ su  -
[root@station197 ~]# setfacl   -m   u:sandy:rw  /home/test.txt
[root@station197 home]# getfacl    test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:sandy:rw-
group::r--
mask::rw-
other::r--
[root@station197 home]# su  -  sandy
[sandy@station197 ~]$ cd  /home;ls  -l   test.txt
 -rw-rw-r--+ 1 root    root        8 Apr  6 10:48 test.txt
会发现文件权限上带个"+"这是setfacl特有是性质,凡是文件权限上带着这个符号的证明此文件使用过setfacl命令设置过.

[sandy@station197 home]$ vim  test.txt -->发现sandy可以修改里面的数据了...而其他用户无法修改数据.这个我测试过,大家可以去试试...

如果不想让sandy用户修改文件了,我们也可以取消他的权限,使用-x选项...
[root@station197 ~]# setfacl   -x  u:sandy  test.txt -->取消sandy用户对其文件的权限.当再次切换到sandy用户时,发现不能再往此文件中写入数据了.但是文件的权限上还保留有"+"这个符号...

  我们也可以对组来进行文件访问控制,和用户文件设置步骤差不多,这儿就不再演示了,大家可以模仿着做下,如有疑问可给我留言,欢迎交流...
阅读(1943) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~