无法写入具有特定名称的 samba 共享

无法写入具有特定名称的 samba 共享

长话短说:还有什么(除了read only = nosmb.conf 中的文件所有权/)可以阻止 samba 允许对共享进行写访问?共享名如何影响权限?

所以我有 Ubuntu Server 16.04 LTS(samba 版本是 4.3.9+dfsg-0ubuntu0.16.04.2),USB 设备安装在 /mnt/storage 上。输出mount

/dev/sdb1 on /mnt/storage type ext4 (rw,relatime,errors=remount-ro,data=ordered)

目录中的所有文件/mnt/storage均由用户拥有并可写htpc

htpc@htpc:~$ ls -l /mnt/

insgesamt 16
drwxrwxr-x 13 htpc htpc 4096 Sep  8 23:26 storage

htpc@htpc:~$ ls -l /mnt/storage/

insgesamt 108
drwxr-xr-x 21 htpc htpc  4096 Mär 16 20:55 somedirectory
-rw-r--r--  1 htpc htpc  3870 Sep 11 09:02 somefile.txt
drwxr-xr-x 24 htpc htpc  4096 Apr 10 00:25 ...

这是我的 smb.conf 共享(所有其他设置均保留默认值):

[Media]
path = /mnt/storage
comment = HTPC Media server
valid users = htpc
read only = no
browseable = yes

我创建了一个 samba 用户sudo smbpasswd -a htpc

该共享可以使用 Windows 10 访问,但我没有写入权限(不允许创建、删除和修改文件)。奇怪的是当我共享任何其他目录时我没有这个问题(例如,创建一个普通目录/opt/testshare并以与上面相同的方式共享该目录)。

编辑

这太奇怪了。 问题不在于 USB 设备,而在于共享名“Media”。

无论出于何种原因,该共享都是只读的当我将其命名为“媒体”时。我发现这个线程这个线程有类似的问题,但他们得出的结论是,共享和目录不能具有相同的名称。我首先认为这是一个客户端问题(Windows 会记住以前安装的旧 uid),但我的手机(ES 文件资源管理器)也有同样的问题,我以前从未使用过它连接到我的服务器。即使当我使用smbclient连接并尝试创建目录时,我也会收到以下错误:

smb: \> mkdir test
NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory \test

我将日志级别增加到 10 并发现:

[2016/09/17 09:15:35.902089, 10, pid=24086, effective(0, 0), real(0, 0), class=passdb] ../source3/passdb/pdb_get_set.c:495(pdb_set_user_sid)
  pdb_set_user_sid: setting user sid S-1-5-21-30211493-2420603996-3020390900-1003
[2016/09/17 09:15:35.902143, 10, pid=24086, effective(0, 0), real(0, 0), class=passdb] ../source3/passdb/pdb_compat.c:73(pdb_set_user_sid_from_rid)
  pdb_set_user_sid_from_rid:
    setting user sid S-1-5-21-30211493-2420603996-3020390900-1003 from rid 1003
[2016/09/17 09:15:35.902216, 10, pid=24086, effective(0, 0), real(0, 0), class=passdb] ../source3/passdb/pdb_get_set.c:557(pdb_set_group_sid)
  pdb_set_group_sid: setting group sid S-1-5-21-30211493-2420603996-3020390900-513
[2016/09/17 09:15:35.902291,  4, pid=24086, effective(0, 0), real(0, 0)] ../source3/smbd/sec_ctx.c:439(pop_sec_ctx)
  pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0
[2016/09/17 09:15:35.902351, 10, pid=24086, effective(0, 0), real(0, 0)] ../source3/smbd/share_access.c:237(user_ok_token)
  user_ok_token: share Media is ok for unix user htpc
[2016/09/17 09:15:35.902405, 10, pid=24086, effective(0, 0), real(0, 0)] ../source3/smbd/share_access.c:284(is_share_read_only_for_token)
  is_share_read_only_for_user: share Media is read-write for unix user htpc
[2016/09/17 09:15:35.902508, 10, pid=24086, effective(0, 0), real(0, 0)] ../libcli/security/access_check.c:337(se_file_access_check)
  se_file_access_check: MAX desired = 0x2000000 mapped to 0x80120089
[2016/09/17 09:15:35.902558,  5, pid=24086, effective(0, 0), real(0, 0)] ../source3/smbd/uid.c:163(check_user_share_access)
  falling back to read-only access-evaluation due to security descriptor

相关内容