基本上,我遇到的问题是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 & 8
、RedHat 7 & 8
和OpenSUSE 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-x
or -r-xr-xr-x
。
我尝试了各种各样的方法,但没有运气。有任何想法吗?
谢谢,杰夫
答案1
确保 Samba 的 Unix 扩展已启用。例如,:
[global]
unix extensions = yes
⋮
否则,该协议仅支持 Windows 权限 (ACL),而不支持 Unix 权限。 (我认为 yes 是默认值,但也许发行版改变了这一点)。
同样,挂载也需要启用它们,选项就在unix
那里。另外,您可能需要进行设置guest ok = no
以确保您确实进行了身份验证,而不是意外地获得了访客。