我不得不添加一个新帖子,因为有上百万人遇到了和我的问题不同的问题,但我似乎无法在他们的帖子中找到帮助。我尝试了十几种方法,但都不起作用。
我的设置:通过安装 Ubuntu 16.04 将一台非常旧的 T43 Thinkpad 转换为家庭服务器(这似乎是我能获得的唯一支持 32 位的版本;如果有人知道如何获取最新的 32 位版本,请告诉我)。
我连接了一个 1 Terrabyte 的 WD 外置硬盘并将其成功安装在 /media/WD-External 下。格式化为 FAT32。我想探索从联网的 Mac 读取它的可能性。我还将其添加到 fstab 文件中,以便它在启动时通过以下行自动挂载: /dev/sdb2 /media/WD-External vfat 默认值 0 2
我的 smb.conf 文件末尾有以下内容:
[WD-External]
comment = WD 1TB external HDD
valid users = <my username here>
path = /media/WD-External
available = yes
read only = no
browsable = yes
public = yes
writable = yes
write list = <my username here>
我可以从联网的 Windows 10 计算机成功连接到此驱动器。我可以将其添加为网络位置。我也可以将其添加为具有指定字母的映射驱动器等。我可以浏览其内容。我可以从中复制并拖放到我的 Win10 桌面等。就我而言,我无法写入它。
当我输入:ls -l /media/WD-External 时,权限仅针对“root”设置。我运行了 chmod 命令:chmod -R 777(或其他变体,但始终以 7 开头)/media/WD-External。该命令成功完成(无提示)。但是,ls -l 命令仍然显示 root 是唯一可以写入的用户。
我也尝试过直接在 smb.conf 文件中添加行,例如:
create mask = 770
directory mask = 770
但那并没有起到什么作用。
现在我也开始探索用四个数字而不是三个数字表示的符号,但是当我执行诸如 chmod 7775 之类的操作时(同时使用 -v 详细显示)我发现每个操作都失败并显示“操作不允许更改模式失败...等”
这是怎么回事?有人能建议一种干净的方法来配置它,以便 Windows 也可以在此驱动器上写入吗?格式是问题吗?NTFS 也许更好?提前致谢
答案1
这让我怀疑这是否一直是问题所在,并且这一直适用于 Fat32 吗?有人可以解释一下吗?
您无法写入原始基于 fat32 的共享的原因与 samba 无关,而是与您如何挂载分区有关。
默认情况下,这将以 root 作为所有者并可写入 - 其他所有人都只有只读访问权限。chown 和 chmod 在 fat32 或 ntfs 分区上不会执行任何操作,并且在共享定义中使用创建和目录掩码在这些文件系统上也不起作用。
您需要在 fstab 语句本身中指定所需的权限。分区上的权限必须始终大于或等于 samba 所需的权限,因此分区的 fstab 行可能看起来像这样 - 每个人都有 r/w 访问权限,然后使用 samba 共享定义作为守门人(有效用户):
/dev/sdb2 /media/WD-External vfat defaults,umask=000 0 2
或者,您也可以用自己的名字替换 root 作为所有者:
/dev/sdb2 /media/WD-External vfat defaults,uid=1000 0 2
或者,你可以做一个混合体,让它只有你可以访问、读取和写入:
/dev/sdb2 /media/WD-External vfat defaults,uid=1000,umask=077 0 2
边注:以后最好使用分区的 UUID 编号(如 UUID=xxxx-yyyy ),而不是像 /dev/sdb2 这样的编号。您可以通过运行以下命令找到 uuid 编号: sudo blkid
您的后续问题
-- 不,您不必重新添加“默认”选项。我只是在编辑您的原始内容以显示可以添加的内容。
-- 是的,0027 作为 umask 也可以
-- 有三种方法可以指定设备:
/dev/sdxy= 这是以前的做法,但这些年来事情变得越来越复杂,而且您可能会遇到这样的情况:一次启动时可能是 /dev/sda1 的,在另一次启动时很可能是 /dev/sdb1,因为系统在启动时会首先识别第二个硬盘。
UUID 编号= 是该分区独有的,因此更可靠。模式会根据文件系统而变化。因此,fat32 具有 xxxx-xxxx 模式,ntfs 具有 16 个字符模式,ext4 具有 36 个字符模式。
标签= 该分区上的标签 - 如果它有标签。
答案2
几个月来,我在通过 SMB 向外部 exFAT 驱动器授予写入权限时遇到了类似的问题,我想我终于取得了突破,这要感谢@Morbius1 的回答。
对我有用的解决方案:
在 中指定
write list = root
和。writeable = yes
/etc/samba/smb.conf
必须是 root 用户,正如@Morbius1 所述,不能将chown
exFAT 文件系统的权限授予除 之外的其他用户root
。由于建议为 Samba 创建专用用户,我首先尝试添加一个新用户,pi
但没有成功,因为我无法拥有chown
exFAT 文件的所有权。确保挂载点的名称与 Samba 共享名称不同(例如,如果挂载点是,
/mnt/Media
则不能为共享提供名称[Media]
)。使用 为用户提供
root
Samba 密码smbpasswd -a root
。重新启动 Samba 服务
service smbd restart
。重新连接到您的 smb 并
root
使用 3 中给出的密码登录。
希望能帮助到你