如何允许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。 使用getfaclsetfacl 。 您将要为用户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应用程序之间共享。