Samba共享ACL权限实战
一、简介Samba是一款基于Linux和UNIX系统的开源软件套件通过实现SMB/CIFS协议实现跨平台文件及打印机共享包含服务器端与客户端程序支持局域网内资源访问及NetBIOS over TCP/IP资源共享。二、起因工作时遇到了多目录读写权限需求管理用户对其他成员所拥有的目录可进行增、删、改、查权限。但各人员目录归属其他用户且原权限是 755。三、步骤1. 先确认根因1.1 查看管理账号对应配置文件cpsjb.smb.conf[rootzabbix ~]# cat /etc/samba/cpsjb.smb.conf[产品设计部共享文件]commentchanpin path/wenjian/chanpin browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam[熊玲]commentxiongling path/wenjian/chanpin/xiongling browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam[郭芮]commentguorui path/wenjian/chanpin/guorui browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam[郭岩]commentguoyan path/wenjian/chanpin/guoyan browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam[杨子艺]commentyangziyi path/wenjian/chanpin/yangziyi browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam[尚二凤]commentshangrenfeng path/wenjian/chanpin/shangrenfeng browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam[赵娜]commentzhaona path/wenjian/chanpin/zhaona browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam[陈欣]commentchenxin path/wenjian/chanpin/chenxin browseableyeswritableyeswritelistcpsjb# security user# passdb backend tdbsam说明cpsjb在Samba里已经被写入write list cpsjb但/wenjian/chanpin下面的人员目录很多是其他用户所有例如chenxin:chenxin、guoyan:guoyan权限原来类似755。这意味着cpsjb能看、能进但不能在这些目录里创建/删除文件。2. 给 cpsjb 补 ACL 权限2.1 不用改目录所有者而是给 cpsjb 增加 ACLsetfacl-R-mu:cpsjb:rwx /wenjian/chanpin setfacl-R-md:u:cpsjb:rwx /wenjian/chanpin2.2 把普通文件权限收紧成只读写、不加执行位find/wenjian/chanpin-typed-execsetfacl-mu:cpsjb:rwx,d:u:cpsjb:rwx{}find/wenjian/chanpin-typef-execsetfacl-mu:cpsjb:rw-{}说明目录cpsjb 有读、写、进入权限所以可以新建、重命名、删除。文件cpsjb 有读写权限。默认 ACL以后新建的目录/文件也会继承 cpsjb 权限。3.重启服务验证3.1 Samba服务重启systemctl restart smb3.2先清掉旧连接缓存再映射测试注意在windows客户端上利用powershell测试net use Z:/delete/y net use \\192.168.200.235/delete/y net use Z:\\192.168.200.235\产品设计部共享文件/user:cpsjbCsdn123/persistent:no3.3 测试新建、写入、改名、删除$testZ:\_perm_test_$(Get-Date-Format yyyyMMddHHmmss)New-Item-ItemType Directory-Path$testok$(Get-Date)|Set-Content-Encoding UTF8$test\test.txtGet-Content$test\test.txtRename-Item$test\test.txtrenamed.txtRemove-Item$test\renamed.txtRemove-Item$test说明如果上面没有报错就说明cpsjb对共享根目录已有读写删除权限。3.4 测试某个人员目录net use Z:\\192.168.200.235\郭岩/user:cpsjbCsdn123/persistent:no//创建共享连接$testZ:\_perm_test_$(Get-Date-Format yyyyMMddHHmmss)//给test变量赋值New-Item-ItemType Directory-Path$test//在郭岩目录下创建_perm_test_$(Get-Date-Format yyyyMMddHHmmss)目录ok|Set-Content$test\test.txt//创建文件并写入‘ok’Remove-Item$test\test.txt//删除文件Remove-Item$test//删除目录net use Z: /delete /y //测试完可以断开映射四、结束语到此Samba共享ACL权限实战搭建就结束了如果有其它问题欢迎大家评论留言如果觉得还可以那么给作者点赞、收藏、关注吧