转自: http://hi.baidu.com/zfxwyh1985/blog/item/e5473aecc87b082c63d09f69.html/cmtid/20b2bb347bfb8b365ab5f563
samba+chmod+setfacl组合设置目录权限问题!

用了一个下午时间,测试+总结,终于完成了!

1: 建目录  /rich/teacher
/rich/teacher/t1  > u1--u3
/rich/teacher/t2  > u4--u6       
/rich/teacher/t3  > u7--u9

2:建用户  useradd  u1--u9,  t1--t3,  -g  g1

3: vim /etc/samba/smb.conf
[teacher]
comment = one class
path = /rich/teacher
writable = yes
valid users = @g1,u1,u2,u3,u4,u5,u6,u7,u8,u9,t1,t2,t3
# 或者把用户建到组g1

4: vim /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/rich             /rich                   ext3    defaults,acl    1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
/dev/hdc                /mnt/cdrom                iso9660 defaults        0 0       

5:开始设置权限

从内向外依次设置
1:  chown -R u1 u1                                       
chown -R u2 u2                                       
....u9


2:  chmod 700 u1 u1
chmod 700 u2 u2
....u9     # 将所有学生文件夹权限归属到对应的每个学生下“u1 》 u1文件夹”
----------------------------------------------------------
3:   setfacl -m u:t1:rwx  u1
setfacl -m u:t1:rwx  u2
setfacl -m u:t1:rwx  u3        # t1老师对其下面的3个学生文件夹有完全控制权限

setfacl -m u:t2:rwx  u4
setfacl -m u:t2:rwx  u5
setfacl -m u:t2:rwx  u6        # t2老师对其下面的3个学生文件夹有完全控制权限

setfacl -m u:t3:rwx  u7
setfacl -m u:t3:rwx  u8
setfacl -m u:t3:rwx  u9        # t3老师对其下面的3个学生文件夹有完全控制权限

--------------------------------------------------------------------------------------------------

4:  setfacl -m        u:u1:r-x  t1
setfacl -m        u:u2:r-x  t1
setfacl -m        u:u3:r-x  t1    # u1,u2,u3对t1目录必需有读取的权限,不然无法进入到t1下面所对应的自己的目录

setfacl -m        u:u4:r-x  t2
setfacl -m        u:u5:r-x  t2
setfacl -m        u:u6:r-x  t2    # u4,u5,u6对t2目录必需有读取的权限,不然无法进入到t1下面所对应的自己的目录

setfacl -m        u:u7:r-x  t3
setfacl -m        u:u8:r-x  t3
setfacl -m        u:u9:r-x  t3    # u7,u8,u9对t3目录必需有读取的权限,不然无法进入到t1下面所对应的自己的目录



--------------------------------------------------------------------------------------------------
5:学生与学生“u1--u3”“u4--u6”“u7--u8”之间的如果可以互访则

setfacl  -m  u:u1:r-x u2   #设置u1可以访问u2的目录
-----------------------------------------------------------------------------------------------------

6:如果    u1访问u4   或   u5访问u8  则需要更改第4部如下:
u1 > u4  :  setfacl  -m  u:u1:r-x  t2
setfacl  -m  u:u1:r-x  u4

u5 > u8  :   setfacl  -m  u:u5:r-x  t2
setfacl  -m  u:u5:r-x  u8

及时修改,今天早上发现一个问题,“u1用户在自己的目录u1目录下新建的文档file1,t1老师可以将file1删除,但不能修改文件file1”
因此做了如下修改,今天生产环境中做了n多的测试后,最终修改为:

1: 建目录  /rich/teacher
/rich/teacher/t1  > u1--u3
/rich/teacher/t2  > u4--u6       
/rich/teacher/t3  > u7--u9

2:建用户  useradd  u1--u9,  t1--t3,  -g  g1

3: vim /etc/samba/smb.conf
[teacher]
comment = one class
path = /rich/teacher
writable = yes
valid users = @g1,u1,u2,u3,u4,u5,u6,u7,u8,u9,t1,t2,t3
# 或者把用户建到组g1

4: vim /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/rich             /rich                   ext3    defaults,acl    1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
/dev/hdc                /mnt/cdrom                iso9660 defaults        0 0       

5:开始设置权限

从内向外依次设置
1:  chown -R u1 u1                                       
chown -R u2 u2                                       
....u9


2:  chmod –R 700 u1 u1
chmod –R 700 u2 u2
....u9     # 将所有学生文件夹权限归属到对应的每个学生下“u1 》 u1文件夹”
----------------------------------------------------------
3:   setfacl -m u:t1:rwx  u1
setfacl –d --set u:t1:rwx,u:u1:rwx u1
setfacl -m u:t1:rwx  u2
setfacl –d --set u:t1:rwx,u:u2:rwx u2
setfacl -m u:t1:rwx  u3       
setfacl –d --set u:t1:rwx,u:u2:rwx u2
# t1老师对其下面的3个学生文件夹有完全控制权限

setfacl -m u:t2:rwx  u4
setfacl –d --set u:t2:rwx,u:u4:rwx u4
setfacl -m u:t2:rwx  u5
setfacl –d --set u:t2:rwx,u:u5:rwx u5
setfacl -m u:t2:rwx  u6       
setfacl –d --set u:t2:rwx,u:u6:rwx u6
# t2老师对其下面的3个学生文件夹有完全控制权限

setfacl -m u:t3:rwx  u3
setfacl –d --set u:t3:rwx,u:u7:rwx u7
setfacl -m u:t3:rwx  u7
setfacl –d --set u:t3:rwx,u:u7:rwx u7
setfacl -m u:t3:rwx  u3       
setfacl –d --set u:t3:rwx,u:u7:rwx u7
# t3老师对其下面的3个学生文件夹有完全控制权限
----------------------------------------------------------
4:  setfacl -m        u:u1:r-x,u:u2:r-x,u:u3:r-x  t1
# u1,u2,u3对t1目录必需有读取的权限,不然无法进入到t1下面所对应的自己的目录
setfacl -m           u:u4:r-x,u:u5:r-x,u:u6:r-x  t2   
# u4,u5,u6对t2目录必需有读取的权限,不然无法进入到t2下面所对应的自己的目录
setfacl -m                u:u7:r-x,u:u8:r-x,u:u9:r-x  t3
# u7,u8,u9对t3目录必需有读取的权限,不然无法进入到t3下面所对应的自己的目录
----------------------------------------------------------
5:学生与学生“u1--u3”“u4--u6”“u7--u8”之间的如果可以互访则
setfacl  -m  u:u1:r-x u2   #设置u1可以访问u2的目录
----------------------------------------------------------

6:如果    u1访问u4   或   u5访问u8  则需要更改第4部如下:
u1 > u4  :  setfacl  -m  u:u1:r-x  t2
setfacl  -m  u:u1:r-x  u4

u5 > u8  :   setfacl  -m  u:u5:r-x  t2
setfacl  -m  u:u5:r-x  u8