Samba 强制用户不起作用

Samba 强制用户不起作用

我在 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

尝试bartadmin users列表中删除该用户,重新加载服务并再次验证其行为。

最后,值得一提的是,用户bart必须对该目录具有写权限。您可以使用 ACL 来实现这一点,或者将用户放入组中www-data

相关内容