我在 Debian Wheezy 上使用 Samba 3.6.6。
我希望能够使用我的 macbook 更改开发服务器上的 www 文件。因此我设置了 samba 并为 /var/www 目录创建了一个共享。
我将用户 bart 和 root 添加到 samba 进行连接。然后使用命令 K 和 smb://192.168.2.100(我的 samba 服务器)进行连接。
由于 apache 使用 www-data 作为 www 文件的用户和组,因此我在 samba 中使用强制用户和强制组来防止权限错误。
但是它确实强制组 www-data,但不强制用户。我创建的每个文件都归组 www-data 中的 root 所有。
为了查找错误,我跟踪了 /var/log/samba 中的日志,并在重新启动 samba 服务时才发现 log.smbd 中存在错误。在此处查看日志:
smbd version 3.6.6 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[2013/09/23 11:14:22.601031, 0] printing/print_cups.c:110(cups_connect)
Unable to connect to CUPS server localhost:631 - Connection refused
[2013/09/23 11:14:22.602215, 0] printing/print_cups.c:487(cups_async_callback)
failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
这是我的 smb.conf:
[global]
server string = %h server
map to guest = Bad User
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap config * : backend = tdb
[homes]
comment = Home Directories
valid users = %S
create mask = 0700
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
print ok = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[www]
comment = www
path = /var/www/
valid users = bart, root
admin users = bart, root
write list = bart, root
force user = www-data
force group = www-data
read only = No
我甚至尝试将 www-data 添加到有效用户以及管理员用户和写入列表中。这当然没有任何效果。
你能帮帮我吗?提前谢谢!
答案1
我认为在这种情况下,选项admin users
会覆盖选项force user
。因此,当您以用户身份连接bart
到共享时www
,它将被授予管理权限,并且所有文件操作都将在超级用户下完成root
。
尝试bart
从admin users
列表中删除该用户,重新加载服务并再次验证其行为。
最后,值得一提的是,用户bart
必须对该目录具有写权限。您可以使用 ACL 来实现这一点,或者将用户放入组中www-data
。