实现任何人可写但都不可删除文件的Samba共享

实现任何人可写但都不可删除文件的Samba共享
转自 http://www.diybl.com/course/6_system/linux/Linuxjs/2008822/137095.html
    ChinaUnix的lovegqin兄曾有一片大作:《终于实现samba可写不可删除》,其文深入浅出,受教非浅。最终效果是:在公用目录里,用户对自己所创建的目录、文件        比如,所有的初级员工都用:user登录文件服务器,大家的帐户都是user,不允许自己删除文件。用lovegqin兄的方法,初级员工则可以互相删除。
    其实《终于实现samba可写不可删除》文的高楼里,已经有高人给出了解决办法。不过高人都是点到为止的,我不是高人,还是系统的整理一下的好。 Samba设计要求:     * 初级员工全部用帐号user登录,可以向公用目录写文件,不可删除任何文件     * 每个私有目录最大1G(这个要用qouta,不在这里多说了)
    * 除ROOT,任何人不可删除公用目录,共享软件库中的内容基本知识点:  
    * 每个文件都有一个所有者(uid),一个组编号(gid)。
    * 如果是一个可执行文件, 那么在执行时, 一般该文件只拥有运行该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.
    * Linux的文件有个扩展文件属性,即在-rwxrwxrwx属性前,还有一个扩展文件属性,同样用数字421表示,4或s表示设置setuid,2或s表示设置setgid,1或t表示设
置sticky bit。
    * setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限,     * setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
    * sticky bit: 该位可以理解为防删除位.
    让我来稍稍解释一下sticky bit。应该分成两块来说:
    1、目录的sticky bit位。
       当一个目录具有sticky bit位。用户如果对此目录没有写的权限。则不可删除此目录下任何文件,也不可向此目录写任何文件     
    2、文件的sticky bit位
       当一个文件具有sticky bit位。即使用户对此文件所在的目录有写权限(即可以写入文件),用户也不能删除该文件。除非用户对此文件本身有写权限。
    设置了扩展文件属性之后,再ls的时候就会出现例如:
    -rwsrw-r-- 表示有setuid标志
    -rwxrwsrw- 表示有setgid标志
    -rwxrw-rwt 表示有sticky标志
    占用了原来的x位,因此有这样的约定:如果原来有x权限,则用s,s,t表示。否则,用S,S,T表示。     #>useradd user
    #>chown root:root /home/user (这个目录为公用目录所有者是root,群组是root)
    #>mkdir /home/soft (这个目录为共享软件库所有者是root,群组是root)
    #>mkdir /home/person (所有者是root,群组是root)
    #>chmod 777 /home/user
    #>chmod +t /home/user (为/home/user加上sticky bit位)
    #>chmod 755 /home/soft
    Samba的配置文件smb.conf     [global]
        workgroup = Haoding
        server string = Fileserver
        cups options = raw
        guest account = guest
        log file = /var/log/samba/%m.log
        max log size = 50
        security = user
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = no         dos charset=cp936
        unix charset=gb2312
   [homes]
        comment = Home Directories
        browseable = no
        writable = yes         comment = 公用目录,任何人都没有删除的权限
        path = /home/hd
        writable=yes
        guest ok=yes
        create mask=1400
        directry mask=1400         comment=soft
        path=/home/soft
        public=yes
        :/home/soft是属于root的,权限的755,即使samba开了可写,非root也没办法写东西进去
        writable=yes
        guest ok=yes 好了,这样一来,新建的空目录是可以删除,改名的。不会出现一大堆的新建文件夹了,^_^。只要目录里面有文件,这个目录就不能删除了。    把这些个目录都ln到/root下面去,方便root管理
   #>cd /root
   #>ln -s /home/person .
   #>ln -s /home/user .
   #>ln -s /home/soft .
   增加samba用户
   #>smbpasswd -a user
   #>smbpasswd -a root     另外,如果要实现同一个目录,不同的用户,不同的群组具有不同的权限。比如说,每个部门有个部门目录,有些人只读,只有人不可删。
这个就需要用到POSIX ACL,和Samba可没有太大的关系。qouta和ACL同时使用的话,fstab需要这样写:
    /dev/hda8 /home ext3 acl,grpquota,usrquota,defaults 1 2
以上内容抱残守缺,欢迎高人拍砖,多谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Samba是一个开源软件套件,用于实现文件和打印机共享。它允许不同操作系统之间的文件共享,如Windows、Linux和macOS等。要实现Samba共享文件,可以按照以下步骤进行操作: 1. 安装Samba软件包:在Linux系统中,可以使用包管理器来安装Samba软件包。例如,在Ubuntu上,可以运行以下命令来安装samba软件包: ``` sudo apt install samba ``` 2. 配置SambaSamba的配置文件是/etc/samba/smb.conf。你可以使用文本编辑器打开该文件,并根据需要进行修改。 a. 定义共享目录:在 `Global` 部分下方,你可以添加以下代码来定义一个共享目录: ``` [share] comment = Shared Directory path = /path/to/shared/directory browseable = yes read only = no valid users = @smbgroup ``` 其中,`share` 是共享目录的名称,`comment` 是对共享目录的描述,`path` 是共享目录的路径,`browseable` 设置是否可浏览,`read only` 设置是否只读,`valid users` 指定允许访问共享目录的用户组。 b. 定义用户和用户组:在配置文件的末尾,可以添加以下代码来定义用户和用户组: ``` [smbgroup] comment = Samba Users path = /path/to/smbusers writeable = yes browseable = no valid users = @smbgroup ``` 其中,`smbgroup` 是用户组名称,`comment` 是对用户组的描述,`path` 是用户组的路径,`writeable` 设置是否可写,`browseable` 设置是否可浏览,`valid users` 指定属于该用户组的用户。 3. 创建Samba用户:使用以下命令创建一个Samba用户,并设置密码: ``` sudo smbpasswd -a username ``` 其中,`username` 是要创建的Samba用户名。 4. 重新启动Samba服务:运行以下命令来重新启动Samba服务以应用配置更改: ``` sudo service smbd restart ``` 5. 访问共享文件:在Windows系统中,可以通过网络浏览器或直接访问共享目录的方式来访问Samba共享文件。在资源管理器中输入 `\\samba-server-ip\share`,其中 `samba-server-ip` 是运行Samba服务器的IP地址,`share` 是共享目录的名称。 请注意,在配置Samba时需要小心设置权限和访问控制,以确保共享文件的安全性和隐私保护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值