![Rank: 5](images/default/star_level3.gif) ![Rank: 5](images/default/star_level1.gif)
- 帖子
- 209
- 积分
- 550
- 威望
- 886
- 金钱
- 697
- 在线时间
- 1 小时
![贡献奖 贡献奖](images/common/medal6.gif) ![灌水王 灌水王](images/common/medal8.gif)
|
[讨论]关于Linux系统的ACL权限问题
信息来源:www.eviloctal.com
文章作者:!angel
好久好久以前看了一篇文章《终于实现samba可写不可删除》,原始链接http://bbs.chinaunix.net/thread-847367-1-1.html。
复制内容到剪贴板
代码:
通过szxsztszk的提示
今天终于实现了linux可写不可删除的要求。
同时运用了POSIX ACL
我们公司的要求是这样的(我只做出我公司要求的步骤,不同的要求,稍加改正即可)
共享目录 To_manager 只有manager这个用户对此目录拥有完全权限。
其它用户对此目录只有:可向其内复制并新建文件的权限。但是不能删除文件不能copy出文件,不能读文件。
步骤:
1。更改smb.conf 如下
[To_manager]
comment=To_manager
path=/To_manager
writable=yes
create mask =1600
directory mask= 1600
2。让Linux支持POSIX ACL (这个 POSIX ACL 的功能在 Linux kernel 2.6 上被正式支持,之后又被 back-port
到 2.4 kernel 上。大家常用的档案系统,如:ext3,xfs,jfs,和 ReiserFS,都能使用
ACL。当然,大家须要在编译 kernel 时启动 ACL。)
我们亦可以在 /etc/fstab 中加入选项:
/dev/sda1 /home ext3 acl 1 2
如果对POSIX ACL 不熟悉请看http://bbs.chinaunix.net/viewthread.php?tid=760730&highlight=lovegqin
3。写个小脚本
#!/bin/bash
mkdir /To_manager
chmod 777 /To_manager
chown manager:manager/To_manager
chmod o+t /To_manager
setfacl -m d:u:manager:rwx /To_manager
最后运行脚本,重启smb即可.
异议一:文章中 /dev/sda1 /home ext3 acl 1 2 #在/home加入ACL支持 ,为什么建文件夹要放到/To_manager?
异议二:create mask =1600、directory mask= 1600在什么情况下可以建立出1600权限呢?可以吗?
异议三:文章提出的除manager用户其它用户真的不可以删除自己建立的文件吗?
很久以前就觉得这个文章有问题,快过年了,没事拿来实践一下。没想到真的有题,真没想到chinaunix这么大的站的版主也有这种贴子,更有甚者,网上转载的那都是。尤其赛迪X,天天打击盗用他们文章的人,而他们拿人家的文章用,直接就算原创,靠
以下是我实验的代码;
复制内容到剪贴板
代码:
#按文章所说的建立文件夹;
[root@rhel4 home]# mkdir to_manager
[root@rhel4 home]# chmod 777 to_manager/
[root@rhel4 home]# chown manager:manager to_manager/
[root@rhel4 home]# chmod o+t to_manager/
[root@rhel4 home]# ls -ld to_manager/
drwxrwxrwt 2 manager manager 4096 Feb 5 19:29 to_manager/
[root@rhel4 home]# setfacl -m d:u:manager:rwx to_manager/
#检验文件夹权限
[root@rhel4 home]# getfacl to_manager/
# file: to_manager
# owner: manager
# group: manager
user::rwx
group::rwx
other::rwx
default:user::rwx
default:user:manager:rwx
default:group::rwx
default:mask::rwx
default:other::rwx
#修改smb.conf后重启服务;
[root@rhel4 home]# killall -HUP smbd
[root@rhel4 home]# killall -HUP nmbd
#测试是否如文章所说;
[root@rhel4 home]# smbclient //localhost/to_manager -U nancy%nancy
Domain=[RHEL4] OS=[Unix] Server=[Samba 3.0.28]
smb: \> mkdir nancy
smb: \> put /etc/passwd nancy.txt
putting file /etc/passwd as \nancy.txt (64.6 kb/s) (average 64.6 kb/s)
smb: \> quit
[root@rhel4 home]# ls -l to_manager/
total 16
drw-------+ 2 nancy finance 4096 Feb 5 19:32 nancy
-rw-------+ 1 nancy finance 1521 Feb 5 19:33 nancy.txt
#看着噢,权限是600而不是文章说的1600?
#查看ACL是成功的;
[root@rhel4 home]# getfacl to_manager/nancy.txt
# file: to_manager/nancy.txt
# owner: nancy
# group: finance
user::rw-
user:manager:rwx #effective:---
group::rwx #effective:---
mask::---
other::---
#文章中提到的不能删除的文件被删除了;
[root@rhel4 home]# smbclient //localhost/to_manager -U nancy%nancy
Domain=[RHEL4] OS=[Unix] Server=[Samba 3.0.28]
smb: \> ls
. D 0 Tue Feb 5 19:33:06 2008
.. D 0 Tue Feb 5 19:29:08 2008
nancy.txt 1521 Tue Feb 5 19:33:06 2008
nancy D 0 Tue Feb 5 19:32:56 2008
39346 blocks of size 131072. 36968 blocks available
smb: \> rm nancy.txt
smb: \> rmdir nancy/
smb: \> quit
#smb.conf中的配置选项
[root@rhel4 home]# tail -7 /usr/local/samba/lib/smb.conf
directory mask = 0770
[To_manager]
comment=To_manager
path=/home/to_manager
writable=yes
create mask =1600
directory mask= 1600
[root@rhel4 home]# ls -l to_manager/
为了真实,拿两具图图,look!
不知道是我真的做错了,还是所有人都没有经过实验而在顺风接屁呢?难到那么多的UNIX门户网站错了吗?
感谢大家的点拨、指正;3Q
改版之后,EST好大个水印啊!![](http://forum.eviloctal.com/images/smilies/default/funk.gif) |
|