使用 Samba Linux 到 Linux 的权限

使用 Samba Linux 到 Linux 的权限

基本上,我遇到的问题是Samba和 本地文件系统之间的权限不一致。我在本地将文件权限设置为-r--r--r--chmod 444 textfile.txt并使用 确认这些设置ls -al。然后我执行 Samba 挂载。如果我通过 Samba 查看同一个文件的权限,我看到的是-rwxr-xr-x-r-xr-xr-x,但不是-r--r--r--。即使 Linux 机器通过 查看自身,也会发生这种情况Samba

我需要在使用不同供应商和版本的 Linux VM 之间使用 Samba(以及 Windows VM,但本文仅涉及 Linux)。我正在使用CentOS 7 & 8RedHat 7 & 8OpenSUSE 15进行测试SUSE 15。我从这些 Linux 发行版的所有排列中得到了类似的结果。唯一能正确工作的是CentOS8作为 Samba 客户端作为 Samba 服务器——这是显示的权限与本地显示的权限相匹配的OpenSUSE15唯一情况。Samba

是的,NFS会更容易,但我必须通过Samba.请注意,这只是一个测试环境 - 下面的一些内容反映了我简化环境的尝试。一旦一切正常,我就会加强安全措施。

这是我的设置和步骤:

在 中smb.conf,我将整个驱动器共享为C。我已经将 root 添加到SMB用户并分配了密码。

[global]
    workgroup = WORKGROUP
    wins support = yes
    passdb backend = tdbsam
    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw
[C]
    Path = /
    Browseable = yes
    Writeable = yes
    only guest = no
    create mask = 0777
    directory mask = 0777
    Public = yes
    Guest ok = yes    

我使用相同的虚拟机、步骤和文件,以及所有排列。对于所有虚拟机,我都通过 PuTTY 以 root 身份登录到 bash shell。

在服务器计算机上,创建一个包含文本文件的文件夹,分配权限并验证。

mkdir /temp
cd /temp
cp /etc/samba/smb.conf /temp/smb.conf
    It could be any file, I'm using smb.conf as an example.
chmod 444 smb.conf
ll smb.conf
    -r--r--r-- 1 root root <size> <date> smb.conf

从客户端计算机执行安装命令并通过以下方式查看文件权限Samba

mkdir /mnt/test
mount -t cifs //svrname/c /mnt/test -o username=root,password=mypasswd
    In the simplest loopback case, svrname is 'localhost'.
ll /mnt/test/temp/smb.conf
    -rwxr-xr-x 1 root root <size> <date> smb.conf

我需要Samba该文件的权限视图以匹配本地权限,如下所示:

ll /mnt/test/temp/smb.conf
    -r--r--r-- 1 root root <size> <date> smb.conf

然而,除了上面提到的一种情况之外,我总是看到-rwxr-xr-xor -r-xr-xr-x

我尝试了各种各样的方法,但没有运气。有任何想法吗?

谢谢,杰夫

答案1

确保 Samba 的 Unix 扩展已启用。例如,:

[global]
unix extensions = yes

否则,该协议仅支持 Windows 权限 (ACL),而不支持 Unix 权限。 (我认为 yes 是默认值,但也许发行版改变了这一点)。

同样,挂载也需要启用它们,选项就在unix那里。另外,您可能需要进行设置guest ok = no以确保您确实进行了身份验证,而不是意外地获得了访客。

相关内容