如何允许Windows PC通过Samba服务器修改Linux文件而不允许完全访问777?
我最近在Linux服务器上设置了Samba,并轻松地在Windows机器上发现了共享驱动器,但无法将文件复制到该驱动器,因为它会要求额外的权限。
我能够写入具有777权限的子文件夹,但主驱动器有775。
据我所知,777权限非常不安全,如何修改组以包括从Windows浏览的用户在Linux服务器中没有用户级权限?
这是一个家庭网络,通过全局设置限制对Samba服务器的访问,该设置阻止从网络外部访问(通过在/etc/samba/smb.conf中添加以下行)
[global] hosts allow = 192.168.0. hosts deny = ALL
因此,我不关心网络中的安全性 – 如果用户位于192.168.0.x子网上,我很高兴地认为它们是合法的,并且不想在此时添加进一步的身份validation步骤。
通常,人们不希望为每个拥有网络访问权限的人提供对目录的写访问权限。 通常有更好的解决方案来在用户组之间共享文件,例如,为每个人提供他们自己的网络共享(部分)读取访问权限。 这就是不使用全局可写访问权限的建议来自的地方。
但是,在您的情况下,这似乎正是您想要的。 所以继续使用chmod -R 0777 /path/to/share
以及适当的Samba配置条目,如writable = yes
。
我明白你想要什么。 LAN上的所有用户/计算机都应该是“来宾”,并且对文件共享具有完全“读/写”访问权限。
脚步:
检查Samba配置。 该份额是否包括以下内容:
[Share] available = yes browsable = yes public = yes writeable = yes
检查POSIX权限。 示例ls -lh:
drwxrws---+ 1 nobody nogroup 252 May 12 14:55 Music
你会希望在那里有粘性位,否则文件共享将不会像你在Windows中所期望的那样运行。 chmod 2770 [dir] …要申请所有目录的权限,请使用find。 例
find . -type d -exec chmod 2770 {} \; find . -type f -exec chmod 2760 {} \;
您还需要将组设置为nogroup,这是samba的默认来宾组。
最后acls。 使用getfacl和setfacl 。 您将要为用户nobody和组nogroup设置默认值。 完成后,通过samba创建的任何内容都将inheritance良好的权限。 这是一个示例目录ACL:
# file: Downloads # owner: nobody # group: nogroup # flags: -s- user::rwx group::rwx mask::rwx other::--- default:user::rwx default:group::rwx default:mask::rwx default:other::---
要获得一些默认值,请使用find:
find . -type d -exec setfacl -d -mu::rwx {} \; find . -type d -exec setfacl -d -mg::rwx {} \;
要修复现有文件:
find . -type f -exec chgrp nogroup {} \; find . -type f -exec chmod 660 {} \; find . -type f -exec setfacl -mg::rw {} \;
想要更多 !
我们只是说您不想更改POSIX组。 然后,您可以使用ACL显式添加组。 例:
setfacl -mg:linuxgroup:rw [filename]
通过这些设置,我在ubuntu,windows,RPi,android和其他Linux应用程序之间共享。