我正在设置一个 Samba 活动目录服务器(内部fmstrat docker 容器) 位于 Ubuntu 服务器 22.04 上。
经过多次尝试,我取得了以下成果:
- 在我的 Ubuntu 服务器上托管 AD 服务器
- 加入 Windows 客户端(win11)
- 加入两个 Linux 客户端(ubuntu 23.04、23.10)
- 加入我的 NAS
- 通过卷映射从 ubuntu 服务器共享一些目录并将它们托管在 samba (smb.conf) 中
我的问题出在最后一步。我可以:
- 从 Windows AD 客户端访问共享(读/写/创建)
- 从 Linux 客户端查看共享
但是我无法从 Linux 客户端在 Samba 共享上创建任何新文件。我完全陷入困境,陷入了困境。希望从这个社区获得一些建议/指点。(如果这是错误的地方,请告诉我)。
在 ubuntu 服务器上我有几个想要共享的目录(~/services/openhab/conf、~/services/openhab/userdata)。
在同一台服务器上,samba docker 容器正在运行。我想要共享的目录是卷映射的。
services:
samba:
image: nowsci/samba-domain
container_name: samba
volumes:
- [some other volume mappings
- /home/localadmin/services/openhab/conf:/shares/openhab/conf
- /home/localadmin/services/openhab/userdata:/shares/openhab/userdata
在ubuntu服务器端,这些文件归openhab用户(本地账户)所有。
localadmin@dc:~/services/openhab$ ls -l
total 16
drwxrwxrwx 2 openhab 993 4096 Apr 6 18:35 addons
drwxrwxrwx 14 openhab 993 4096 Apr 7 10:37 conf
-rw-rw-r-- 1 localadmin localadmin 590 Apr 6 18:30 docker-compose.yml
drwxrwxrwx 11 openhab 993 4096 Apr 7 10:37 userdata
在 docker 容器内部,文件由编号用户和组拥有(不知道这是谁,我猜是 AD 用户的某些默认起始索引?)
root@dc:/# ls -l /shares/openhab/
total 8
drwxrwxrwx 14 998 993 4096 Apr 7 10:37 conf
drwxrwxrwx 11 998 993 4096 Apr 7 10:37 userdata
最后,在 smb.conf 中,共享定义如下:
[Openhab-conf]
path = /shares/openhab/conf
read only = no
public = yes
writable = yes
force create mode = 0666
force directory mode = 0777
browseable = yes
valid users = "@sb.lan\domain users"
force group = "Domain Users"
[Openhab-userdata]
path = /shares/openhab/userdata
read only = no
public = yes
writable = yes
force create mode = 0666
force directory mode = 0777
browseable = yes
当我从成功加入域的 Linux 客户端挂载共享时:
(in fstab)
//192.168.1.100/Openhab-conf /media/openhab-conf cifs credentials=/home/[email protected]/creds/ad.credentials,vers=2.0 0 0
我可以看到共享并列出所有文件,但是当我尝试在共享内的任何文件夹中创建文件时,出现以下错误:
[email protected]@bas-hp:~$ touch /media/openhab-conf/scripts/test.txt
touch: cannot touch '/media/openhab-conf/scripts/test.txt': Permission denied
当我在挂载点上运行 ls -l 时:
[email protected]@bas-hp:~$ ls -l /media/openhab-conf/
total 4
drwxr-xr-x 2 root root 0 apr 6 20:35 automation
drwxr-xr-x 2 root root 0 apr 7 20:47 html
drwxr-xr-x 2 root root 0 apr 6 20:30 icons
drwxr-xr-x 2 root root 0 apr 7 12:37 items
drwxr-xr-x 2 root root 0 apr 7 12:37 rules
drwxr-xr-x 2 root root 0 apr 7 12:37 scripts
drwxr-xr-x 2 root root 0 apr 7 12:37 services
drwxr-xr-x 2 root root 0 apr 7 12:37 sitemaps
drwxr-xr-x 2 root root 0 apr 7 12:37 sounds
drwxr-xr-x 2 root root 0 apr 7 12:37 tags
drwxr-xr-x 2 root root 0 apr 7 12:37 things
drwxr-xr-x 2 root root 0 apr 7 12:37 transform
-rwxr-xr-x 1 root root 92 apr 7 12:37 workspace.code-workspace
我可以看到这些文件归 root/root 所有。我可以,但这不会影响 ls -l 显示的所有权。sudo chown -R [email protected] /media/openhab-conf
再次,股票发挥作用在 Windows 机器上完美无缺已加入同一 AD。
我不知道问题是什么。我猜是在 Linux 端,因为我可以从 Windows 客户端毫无问题地访问共享。所以这对我来说意味着 ubuntu 服务器 => samba docker 运行正常。但另一方面,我试图否决 Linux 端的所有权限,但无济于事……
任何建议都将不胜感激!