无法写入 Samba 共享文件夹

Vil*_*mir 3 permissions mount samba networking

这个问题已被问过多次,但阅读不同的答案并没有让我解决我的具体问题。我的 HTPC 上安装了 Ubuntu 14.04。我想通过 1 个帐户在 LAN 上共享 2 个硬盘驱动器的全部内容以进行读写。我需要从 Android、mac os x 和 Windows 10 访问这些共享。我能够通过 Samba 创建 1 个共享文件夹,但我无法写入。身份验证和读取工作。

我用尽了解释为什么它不起作用的想法,我请求社区帮助。

必须具有访问权限的帐户:miguel。这是一个管理员帐户,我为它创建了一个不同的 samba 密码。共享驱动器:bigstock

/etc/fstab

# /boot/efi was on /dev/sda1 during installation
UUID=C2C2-B220  /boot/efi       vfat    defaults        0       1
# swap was on /dev/sda3 during installation
UUID=d20a7536-efe1-4ad4-b8a1-e36c9c5d7bc4 none            swap    sw              0       0
#bigstock drive
UUID=479a5442-ef4e-4266-a729-f1c188755ac7 /media/miguel/bigstock ext4 defaults 0 2
#stock drive
UUID=a0bdc1df-a568-4d26-82bb-cfd35aa3ab32 /media/miguel/stock ext4 defaults 0 2
Run Code Online (Sandbox Code Playgroud)

ls -la /media

total 12
drwxr-xr-x   3 miguel miguel 4096 oct.  22 20:42 .
drwxr-xr-x  23 root   root   4096 déc.   6 11:58 ..
drwxr-xr-x+  4 miguel miguel 4096 nov.   7 17:43 miguel
Run Code Online (Sandbox Code Playgroud)

ls -la /媒体/米格尔

total 16
drwxr-xr-x+  4 miguel miguel 4096 nov.   7 17:43 .
drwxr-xr-x   3 miguel miguel 4096 oct.  22 20:42 ..
drwxr-xr-x  14 miguel miguel 4096 déc.   6 15:04 bigstock
drwxr-xr-x   4 miguel miguel 4096 nov.  26 12:40 stock
Run Code Online (Sandbox Code Playgroud)

ls -la /media/miguel/bigstock

total 68
drwxr-xr-x  14 miguel miguel  4096 déc.   6 15:04 .
drwxr-xr-x+  4 miguel miguel  4096 nov.   7 17:43 ..
Run Code Online (Sandbox Code Playgroud)

testparm -s

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[bigstock]"
Loaded services file OK.
Server role: ROLE_STANDALONE
[global]
    server string = %h server (Samba, Ubuntu)
    server role = standalone 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

[bigstock]
    path = /media/miguel/bigstock
    valid users = miguel
    read only = No
Run Code Online (Sandbox Code Playgroud)

我已经尝试了其他几个 smb 选项,例如 2 个掩码到 0700,但它们没有效果。

Har*_*ank 5

看起来您在媒体中创建了一个文件夹 miguel,并且您已经拥有它的所有权。相反,让我们创建一个组,将用户添加到该组,并设置权限。

sudo groupadd -g 10000 [samba_group]
sudo adduser migeul [samba_group]
sudo chown root:[samba_group] -R /media/migeul
sudo chgrp [samba_group] /media/migeul
sudo chmod 775 -R /media/migeul
Run Code Online (Sandbox Code Playgroud)

这将创建一个组并将其附加到要共享的文件夹。您将用户添加到该组以进行访问。将权限设置为 775,给予所有者和组读写执行权限,而其他人只能读取。递归设置它。

验证您是否拥有对该文件夹的完全访问权限。使用 samba,设置权限与使用 ubuntu 用户设置文件权限略有不同。我的意思是在获得所有权后验证权限,因为它们可能会导致稍后出现 samba 错误。没有人可以访问驱动器的地方。

创建一个与您的 Linux 用户名精确匹配的 samba 帐户。

sudo smbpasswd -a miguel
sudo smbpasswd -e migeul
Run Code Online (Sandbox Code Playgroud)

这将提示您为用户名 miguel 创建密码。请注意,这仅适用于 SMB 共享,不适用于操作系统中的用户。

之后,打开 samba 配置并在共享驱动器时确保您输入 writable = yes、browsable = yes、read only = no 并将您的组添加到其中。此外,请验证您共享的位置。使用它安装到的地方。

[migeul]
comment = Migeuls folder
?path = /media/migeul
?browsable = yes
?writable = yes
?guest ok = no
?read only = no
?valid users = @[samba_group]
Run Code Online (Sandbox Code Playgroud)

重新配置 /etc/samba/smb.conf 文件后,重新加载它。

sudo smbd reload
Run Code Online (Sandbox Code Playgroud)

这些页面更深入地设置了 samba 共享。

https://help.ubuntu.com/community/Samba/SambaServerGuide https://www.techrepublic.com/article/how-to-set-up-samba-shares-for-groups/

您可能还需要设置您的 umask。为此,请/etc/profile使用sudo nano /etc/profile打开并在底部键入umask 002。使用Control+O保存,使用Control+X退出。最好使用sudo reboot重新启动服务器,新的掩码权限将发生。该设置为用户重新断言相同的权限。