我是 SAMBA 新手,但已在 Ubuntu 20.04 桌面上设置了 SAMBA 服务器,但在尝试从我的 Windows 11 笔记本电脑映射任何 SAMBA 共享时,始终出现“访问被拒绝”的情况。我该如何解决问题?以下是我认为 smb.conf 的相关部分:
[global]
server role = standalone server
obey pam restrictions = yes
security = user
encrypt passwords = true
map to guest = bad user
guest account = nobody
[media]
path=/data/media
valid users = @media
guest ok = no
writable = yes
browsable = yes
[public]
path=/data/public
valid users = @smbgroup
guest ok = no
writable = yes
browsable = yes
[documents]
path=/data/documents
valid users = @simon
guest ok = no
writable = yes
browsable = yes
[downloads]
path=/data/downloads
valid users = @media
guest ok = no
writable = yes
browsable = yes
以下是相关共享文件夹的权限:
root@KTchia01:/data# ls -l
total 100375
drwxrwx--- 8 simon simon 27 Jun 8 2021 documents
drwxrwx--- 2 simon simon 6 Jun 8 2021 downloads
drwxrwxr-x 16 simon media 17 Jun 10 2021 media
-rw-r--r-- 1 chia chia 102672297 Jun 8 2021 oldhome.tgz
drwxrwxrwx 2 simon smbgroup 2 Feb 5 21:20 public
我以用户 simon 的身份从 Windows 11 笔记本电脑 KTLAPTOP02 进行连接,simon 是 Linux 机器上的普通用户,并且已设置 SMB 密码。simon 的组成员身份:
root@KTchia01:~# grep simon /etc/group
adm:x:4:syslog,simon,chia
cdrom:x:24:simon
sudo:x:27:simon,chia
dip:x:30:simon
plugdev:x:46:simon
lpadmin:x:120:simon
lxd:x:131:simon
simon:x:1000:
sambashare:x:132:simon
smbgroup:x:1001:simon
plex:x:998:simon,plex
media:x:1002:simon,plex
chia:x:1003:simon
尝试连接时日志输出:
root@KTchia01:/var/log/samba# tail -f log.ktlaptop02
[2022/02/05 21:41:36.200402, 2] ../../source3/param/loadparm.c:2864(lp_do_section)
Processing section "[public]"
[2022/02/05 21:41:36.200454, 2] ../../source3/param/loadparm.c:2864(lp_do_section)
Processing section "[documents]"
[2022/02/05 21:41:36.200509, 2] ../../source3/param/loadparm.c:2864(lp_do_section)
Processing section "[downloads]"
[2022/02/05 21:41:36.212158, 1] ../../source3/smbd/service.c:362(create_connection_session_info)
create_connection_session_info: user 'simon' (from session setup) not permitted to access this share (IPC$)
[2022/02/05 21:41:36.212187, 1] ../../source3/smbd/service.c:543(make_connection_snum)
create_connection_session_info failed: NT_STATUS_ACCESS_DENIED
有人能指出我如何进一步排除故障的正确方向吗?为什么无论我尝试访问哪个共享,都会被拒绝访问?
答案1
以下是一些很好的故障排除步骤,厚颜无耻地从服务器故障:
- 也许您的 Windows 主机在用户名前添加了错误的域名。在 Windows 计算机上,尝试使用
localhost\simon
用户名登录 - 发出
sudo pdbedit -L
(必须以 root 身份运行)并检查是否simon
列出了用户。如果是,请使用以下命令设置一个简单的密码(您可以稍后更改)smbpasswd simon
- 如果
simon
未列出用户,请尝试重新创建并发出smbpasswd -a simon
- 如果不起作用,请删除 passwd 文件(该文件名为
passwd.tdb
;供参考,它位于 下/var/lib/samba/private/
)。然后,重新创建您的用户,发出smbpasswd -a simon
- 如果仍然不起作用,请尝试使用 root 帐户发出
smbpasswd -a root
并检查您是否可以使用 root 用户登录。注意:这只是一次尝试。完成后,您必须删除 root 的条目发出smbpasswd -x root
- 最后的办法是增加日志的详细程度,看看能否从中找到线索。对于身份验证尝试,请在
smb.conf
:上编辑或添加以下行log level = 2 winbind:5
,使用类似命令检查日志tail -f /var/log/samba/log*
,然后尝试登录。
希望其中能有所帮助。
答案2
我遇到了同样的问题,最终找到了如上所述的解决方案这里。
更新或配置不正确后,AppArmor 和 Samba 可能会互相干扰。建议的解决方案是激活 AppArmor 的 smbd 的投诉模式:
sudo aa-complain /etc/apparmor.d/usr.sbin.smbd
但是您也可以添加站点特定的附加内容来/etc/apparmor.d/local/usr.sbin.smbd
获取访问权限。