Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1765159
  • 博文数量: 184
  • 博客积分: 10122
  • 博客等级: 上将
  • 技术积分: 5566
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-08 12:32
文章存档

2011年(1)

2008年(183)

我的朋友

分类: LINUX

2008-03-04 00:48:10

#问题 :下面各种权限组合的结果

[答案]

       -1mask 高于 owner

              [root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rw-

group::r--

other::rw-

 

[root@mail tmp]# setfacl -m m:rwx file1

[root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rw-

group::r--

mask::rwx

other::rw-

 

[root@mail tmp]# ll file1

-rw-rwxrw-+ 1 root root 0 Nov 19 22:27 file1                  # 注释 :可以看到 group 变了有 excute 权限

[root@mail tmp]# ./file1

[root@mail tmp]#

换成 bob 用户测试

[bob@mail ~]$ /tmp/file1

-bash: /tmp/file1: Permission denied

[bob@mail ~]$ cd /tmp

[bob@mail tmp]$ ./file1

-bash: ./file1: Permission denied

[bob@mail tmp]$

换成 test 用户 test 用户就是 root 组的

[root@mail tmp]# id test

uid=501(test) gid=501(test) groups=501(test),0(root)       

[root@mail tmp]#

[test@mail ~]$ /tmp/file1

-bash: /tmp/file1: Permission denied

[test@mail ~]$

可以看到 owner 自动具有了 excute 权限,但 other 没有

 

       -2mask 高于 group

              [root@mail tmp]# setfacl -m m:rw file1

[root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rw-

group::r--

mask::rw-

other::rw-

 

[root@mail tmp]#    

[test@mail ~]$ id

uid=501(test) gid=501(test) groups=0(root),501(test) context=user_u:system_r:unconfined_t

[test@mail ~]$

[test@mail tmp]$ echo "date" >> file1

-bash: file1: Permission denied                     # 注释 :可以看到 test 用户虽然属于 root 组也不能写

[test@mail tmp]$

[test@mail tmp]$ newgrp root               # 注释 :切换 primary group roo

[test@mail tmp]$ id

uid=501(test) gid=0(root) groups=0(root),501(test) context=user_u:system_r:unconfined_t

[test@mail tmp]$ echo "ok" > file1

bash: file1: Permission denied                      # 注释 ;还是不允许写文件

[test@mail tmp]$    

 

       -3mask 高于 other

              [root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rw-

group::r--

mask::rw-

other::r--

 

[root@mail tmp]#

[bob@mail tmp]$ echo "ok" > file1

-bash: file1: Permission denied               # 注释 :同样是不具备 w 权限

[bob@mail tmp]$

       -4mask 小于 owner

              [root@mail tmp]# chmod 777 file1

[root@mail tmp]# ll file1

-rwxrwxrwx  1 root root 0 Nov 20 11:03 file1

[root@mail tmp]# setfacl -m m:rx file1

[root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rwx                                                                  # 注释 owner 不受影响

group::rwx                      #effective:r-x             # 注释 :但 group 变成了没有 w 权限

mask::r-x

other::rwx                                                                # 注释 :而 other 保留写权限

 

[root@mail tmp]#

现在由 test 用户(属于 root 组的)的进行写测试

[test@mail tmp]$ echo "ok" > file1

bash: file1: Permission denied                 # 注释 :的确不能写。

[test@mail tmp]$

再由 bob 用户(属于 other)的进行写测试

[bob@mail tmp]$ id

uid=500(bob) gid=500(bob) groups=500(bob) context=user_u:system_r:unconfined_t

[bob@mail tmp]$ echo "ok" > file1

[bob@mail tmp]$

[bob@mail tmp]$ cat file1

ok                                                     # 注释 :可以进行写操作

[bob@mail tmp]$

       -5mask 小于 group

           见上面

       -6mask 小于 other

           见上面

总结

-1、当 mask 高于 groupother 权限时,groupother 还是保持原来的权限,但 owner 可以获得和 mask 一样的权限

 

===============================================================================================

#问题 :同上,为什么 mask 不影响 other

[答案]

[root@mail tmp]# touch file1

[root@mail tmp]# chmod o+w file1

[root@mail tmp]# ll file1

-rw-r--rw-  1 root root 0 Nov 20 11:20 file1

[root@mail tmp]# setfacl -m m:r file1

[root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rw-

group::r--

mask::r--

other::rw-                                    # 注释 :并没有显示 effective

 

[root@mail tmp]#

[bob@mail tmp]$ echo "ok" > file1

[bob@mail tmp]$

bob 用户可以写文件

[test@mail tmp]$ echo "ok" > file1

bash: file1: Permission denied                 # 注释 :属于 root组的test用户不能写文件

[test@mail tmp]$

===============================================================================================

#问题 :如果用 chmod 修改了文件权限,acl 条目会自动变化吗?

[答案]

[root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rw-

group::r--

mask::r--

other::rw-

 

[root@mail tmp]# ll file1

-rw-r--rw-+ 1 root root 3 Nov 20 11:21 file1

[root@mail tmp]#

[root@mail tmp]# chmod 777 file1

[root@mail tmp]# getfacl file1

# file: file1

# owner: root

# group: root

user::rwx

group::r--              # 注释 :可看到 group 还是只有读权限而已

mask::rwx

other::rwx

 

[root@mail tmp]#

[root@mail tmp]# ll file1

-rwxrwxrwx+ 1 root root 3 Nov 20 11:21 file1       # 注释 :但这里显示 group 有写权限

[root@mail tmp]#

[test@mail tmp]$ id

uid=501(test) gid=0(root) groups=0(root),501(test) context=user_u:system_r:unconfined_t

[test@mail tmp]$ echo "ok" > file1

bash: file1: Permission denied                 # 注释 group 的确不能写文件

[test@mail tmp]$

other 可写

[bob@mail tmp]$ echo "ok" > file1

[bob@mail tmp]$

===============================================================================================

 #问题 setfacl -d 设置 default ACL

[答案]

[root@mail tmp]# setfacl --set d:u:bob:rw RPMS

[root@mail tmp]# getfacl RPMS

# file: RPMS

# owner: bob

# group: bob

user::rwx

group::r-x

other::r-x

default:user::rwx

default:user:bob:rw-

default:group::r-x

default:mask::rwx

default:other::r-x

 

[root@mail tmp]#

然后在 RPMS/ 下创建文件和子目录

[root@mail RPMS]# touch file1

[root@mail RPMS]# ll file1

-rw-rw-r--+ 1 root root 0 Nov 20 11:40 file1        # 注释 :可以看到有+

[root@mail RPMS]# getfacl file1

# file: file1

# owner: root

# group: root

user::rw-

user:bob:rw-                                                       # 注释 bob 默认就可以读/写文件

group::r-x                      #effective:r--        # 注释 :但 group 只有 r 权限,没有了 x 权限,因为这是文件,默认是没有 x 权限的。

mask::rw-                                                           # 注释 :注意到这个 default mask RPMS/ default mask 不同,这里没有 x 权限

other::r--                                                           

 

[root@mail RPMS]# mkdir subdir

[root@mail RPMS]# ll -d subdir

drwxrwxr-x+ 2 root root 4096 Nov 20 11:40 subdir

[root@mail RPMS]# getfacl subdir

# file: subdir

# owner: root

# group: root

user::rwx

user:bob:rw-

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:bob:rw-                                  # 注释 :对于子目录,bob 也默认有写权限

default:group::r-x                                      # 注释 :由于是目录,所以默认为 r-x

default:mask::rwx                                      # 注释 group other 都是等于 base groupbase other 权限

default:other::r-x                                     

 

[root@mail RPMS]#

===============================================================================================

 问题 setfacl -k 删除 default ACL 条目

[答案]

[root@mail tmp]# setfacl --test -k RPMS/

RPMS: *,

[root@mail tmp]#

[root@mail tmp]# setfacl --test -R -k RPMS/

RPMS: *,

RPMS/file1: *,*

RPMS/subdir: *,

[root@mail tmp]#

===============================================================================================

问题 setfacl -m -M 的操作是修改而不是覆盖。

[答案]

两者都是修改,而不是覆盖。

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:rw-

user:test:rwx

group::r--

mask::rwx

other::r--

 

[root@mail tmp]# setfacl -m u:bob:rx file

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:r-x

user:test:rwx

group::r--

mask::rwx

other::r--

 

[root@mail tmp]#

可以看到 test 条目不受影响。

-m -M 的差别在于,-M 是从文件读取操作,这个文件一般是 getfacl 的输出

[root@mail tmp]# getfacl RPMS/ >acl.file

[root@mail tmp]# setfacl -b RPMS/

[root@mail tmp]# setfacl -M acl.file RPMS/

[root@mail tmp]# getfacl RPMS/

 

===============================================================================================

#问题 setfacl -m --set 的区别

[答案]

-m 是修改,--set 是覆盖。

一般不建议使用 --set ,因为 --set 必须给出完整的定义,应该使用 --set-file

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:rw-

group::r--

group:test:rwx

mask::rwx

other::r--

 

[root@mail tmp]#

现在打算重新设置,bob 改为 rwx ,并去掉 test 组的权限

[root@mail tmp]# cat acl.file

# file: file

# owner: root

# group: root

user::rw-

user:bob:rwx

group::r--

mask::rwx

other::r--

 

[root@mail tmp]#

[root@mail tmp]# setfacl --set-file acl.file file

[root@mail tmp]#

[root@mail tmp]# getfacl file                   

# file: file

# owner: root

# group: root

user::rw-

user:bob:rwx

group::r--

mask::rwx

other::r--

 

[root@mail tmp]#

===============================================================================================

问题 setfacl --no-mask 禁止自动计算 mask

[答案]

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:rwx

group::r--

mask::rwx

other::r--

 

[root@mail tmp]# setfacl --no-mask -m u:bob:rx file

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:r-x

group::r--

mask::rwx              # 注释 ;默认 mask 应该变成 r-x

other::r--

 

[root@mail tmp]#

===============================================================================================

问题 :同上,现在重新计算 mask

[答案]

[root@mail tmp]# getfacl file > acl.file

[root@mail tmp]# setfacl  --set-file acl.file file     

[root@mail tmp]#

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:r-x

group::r--

mask::rwx                    # 注释 :可以看到 --no-mask 是永久起作用的,除非你使用了 --mask 才能再次启用,现在 mask 并没有自动更新

other::r--

 

[root@mail tmp]# setfacl  --mask --set-file acl.file file

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:r-x

group::r--

mask::r-x                     # 注释 :现在 mask 变成了 r-x

other::r--

 

[root@mail tmp]#

===============================================================================================

问题 setfacl -R 实现递归操作

[答案]

[root@mail tmp]# getfacl RPMS/

# file: RPMS

# owner: bob

# group: bob

user::rwx

group::r-x

other::r-x

 

[root@mail tmp]#

[root@mail tmp]# setfacl --test -R -m u:bob:rw RPMS

RPMS: u::rwx,u:bob:rw-,g::r-x,m::rwx,o::r-x,*

RPMS/file1: u::rw-,u:bob:rw-,g::r--,m::rw-,o::r--,*

RPMS/subdir: u::rwx,u:bob:rw-,g::r-x,m::rwx,o::r-x,*

RPMS/subdir/file2: u::rw-,u:bob:rw-,g::r--,m::rw-,o::r--,*

RPMS/subdir/file3: u::rw-,u:bob:rw-,g::r--,m::rw-,o::r--,*

[root@mail tmp]#

===============================================================================================

问题 setfacl 默认是如何处理 symbolic link 的?

[答案]

默认是作用于 target

[root@mail tmp]# ll

total 120

-rw-r--r--  1 root root    97 Nov 22 21:55 acl.file

-rw-r--r--  1 root root     0 Nov 22 22:04 file

lrwxrwxrwx  1 root root     4 Nov 22 22:05 link -> file

[root@mail tmp]# setfacl --set-file acl.file link     

[root@mail tmp]#

[root@mail tmp]# ll

total 120

-rw-r--r--  1 root root    97 Nov 22 21:55 acl.file

-rw-rwxr--+ 1 root root     0 Nov 22 22:04 file

lrwxrwxrwx  1 root root     4 Nov 22 22:05 link -> file

[root@mail tmp]#

===============================================================================================

#问题 setfacl --logical --physical 的作用

[答案]

--logical 是默认操作,见上面。--physical 则是跳过 symbolic link target ,不做任何操作

[root@mail tmp]# setfacl --physical --set-file acl.file link  

[root@mail tmp]#

[root@mail tmp]# ll

total 120

-rw-r--r--  1 root root    97 Nov 22 21:55 acl.file

-rw-r--r--  1 root root     0 Nov 22 22:04 file

lrwxrwxrwx  1 root root     4 Nov 22 22:05 link -> file

[root@mail tmp]#

可以看到 link file 都没有变化

===============================================================================================

问题 setfacl -x -X的用法

[答案]

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

user:bob:r-x

group::r--

group:test:rwx

mask::rwx

other::r--

 

[root@mail tmp]# setfacl -x u:bob file

[root@mail tmp]# getfacl file

# file: file

# owner: root

# group: root

user::rw-

group::r--

group:test:rwx

mask::rwx

other::r--

 

[root@mail tmp]#

可以看到 bob 条目不见了

===============================================================================================

 问题 setfacl --restore 的用法

[答案]

--restore --set-file 不同,它不用指定要设置的文件,因为这些信息在文件中已经包含了

[root@mail tmp]# getfacl -R file RPMS/ > acl.file           # 注释 :递归获得多个文件的信息

[root@mail tmp]# setfacl -b -R file RPMS/

[root@mail tmp]#

[root@mail tmp]# ll -d file RPMS/

-rw-r--r--  1 root root     0 Nov 22 22:04 file

drwxr-xr-x  3 bob  bob  73728 Nov 22 10:37 RPMS/

[root@mail tmp]#

[root@mail tmp]# setfacl --restore acl.file

[root@mail tmp]# ll -d file RPMS/

-rw-rwxr--+ 1 root root     0 Nov 22 22:04 file

drwxrwxr-x+ 3 bob  bob  73728 Nov 22 10:37 RPMS/

[root@mail tmp]#

可以看到 file RPMS/ 目录的 acl 设置又恢复了

===============================================================================================
阅读(1430) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~