我已经配置了 samba 3.6.3 以在我的 ubuntu 机器上使用 AD。配置似乎是正确的,getent group、getent passwd 等命令从 AD 返回组和用户。我可以授予 AD 用户对文件夹的权限,并使用 sudo 让该用户有权访问。但是,当通过 samba 时,用户无权访问该文件夹。以下是一些测试代码。首先只测试 winbind 和 linux 权限:
sudo mkdir /tmp/test
sudo chown root:sambashare /tmp/test
sudo chmod 775 /tmp/test
sudo usermod -G sambashare DOM+user1
sudo -u DOM+user2 touch /tmp/test/file
touch: cannot touch `test/file': Permission denied
#good because DOM+user2 is not in sambashare group
sudo -u DOM+user1 touch /tmp/test/file
#success!
ls -l /tmp/test
-rw-r--r-- 1 DOM+user1 DOM+domain users 0 Jan 14 16:53 test/file
现在配置 samba 共享
[Test]
path = /tmp/test
writable = yes
follow symlinks = yes
valid users = DOM+user1,@sambashare
该目录对用户可见。但不允许创建新目录或文件。
如果我更改 Linux 权限:
chown DOM+user1 /tmp/test
我可以从 Windows 写入 Samba 共享。请注意,我没有向 Samba 或其他任何东西添加写入列表,只是在 Linux 上添加了该共享上的用户所有权。并且 Linux 之前允许用户根据组权限写入该文件夹。
我尝试通过“转到 -> 打开位置 -> smb://”从 Windows 7 框和 Ubuntu 框打开共享。同样的问题。所以我不认为这是 Windows 的问题。
有人知道发生了什么事吗?
编辑
我正在尝试按本地组对域用户进行分组并允许访问某些共享,这样我就不必麻烦 AD 管理员创建自定义组。我还想使用文件系统权限而不是 Samba 写入列表。它更简洁,而且 Samba 不是唯一的服务。
将域组映射到本地 Linux 组并不是我想要实现的。
例如,我在本地创建本地 dev_team1、dev_team2 组。将 DOM+sally 添加到 dev_team1,将 DOM+john 添加到 dev_team2,然后使用 ACL 设置文件系统权限。
我认为这种配置是可行的,因为 winbind 正在将域组/用户映射到 samba 指定的范围:
idmap config * : backend = tdb
idmap config * : range = 20000-999999
当你执行getent 组;getent 密码您将获得 ID > 20,000 的域组/用户列表。因此,基于此,我假设 samba 对用户进行身份验证,为他们分配其中一个 ID,而 ID 20,000 是属于本地组 500 还是域组 21,000 的一部分并不重要。
可能不会...
答案1
方法 1 - 更改组
尝试关注
chown :DOM+domain /tmp/test
然后重新测试。
方法 2 - 强制分组
使用 sambaforce group
为共享指定默认组
[Test]
path = /tmp/test
writable = yes
follow symlinks = yes
force group = sambashare
valid users = DOM+user1
方法 3 - 将域用户添加到域组
这实际上是一种通用方法 1,也是这种共享中的常见方法
[Test]
path = /tmp/test
writable = yes
follow symlinks = yes
force group = sambashare
valid users = @DOM+domainshare, @sambashare
创建一个 AD 组 domainshare,并将访问共享所需的任何域用户添加到其中。
sambashare 组中的 linux 用户可以访问该共享。