问题及解决方案:
/srv/samba
所有权是root:root
;更改其组允许我使用远程计算机上chgrp prv /srv/samba/
的用户安装它 。prv:prv
请注意,/srv/samba/foo
的所有权(我尝试远程安装的文件夹)已经是prv:prv
,问题来自其父级,即/srv/samba/
第一次使用 CentOS 和 SMB,我读过几篇帖子和指南,但是都没有解决我的问题。
我有 2 个服务器(prvback 和 prvfront),我需要在 prvfront/mnt/foo 上挂载 prvback/foo。
回复:
smbstatus -V
:Version 3.6.23-53.el6_10
/etc/samba/smb.conf
:
[foo]
path = /srv/samba/foo
read only = no
public = yes
domain = bar
valid users = prv
/etc/init.d/smb status
:smbd (pid 42) is running
pdbedit -L -v
Unix username: prv
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3498247421-334271864-1173299791-1001
Primary Group SID: S-1-5-21-3498247421-334271864-1173299791-513
Full Name:
Home Directory: \\prvback\prv
HomeDir Drive:
Logon Script:
Profile Path: \\prvback\prv\profile
Domain: PRVBACK
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 16:06:39 CET
Kickoff time: Wed, 06 Feb 2036 16:06:39 CET
Password last set: Fri, 23 Oct 2020 10:08:32 CEST
Password can change: Fri, 23 Oct 2020 10:08:32 CEST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
- 添加4条防火墙规则
cat /etc/sysconfig/iptables
-A INPUT -s 172.16.0.0/12 -m state --state NEW -p tcp --dport 139 -j ACCEPT
-A INPUT -s 172.16.0.0/12 -m state --state NEW -p tcp --dport 445 -j ACCEPT
# [EDIT1]
-A INPUT -s 172.16.0.0/12 -m state --state NEW -p udp --dport 137 -j ACCEPT
-A INPUT -s 172.16.0.0/12 -m state --state NEW -p udp --dport 138 -j ACCEPT
/etc/init.d/iptables restart
- [编辑1]配置的 SELinux 上下文
semanage fcontext -a -t samba_share_t "/srv/samba/foo(/.*)?"
restorecon -v /srv/samba/foo/
ls -dlZ /srv/sambla/
drwxrwxrwx. root root unconfined_u:object_r:samba_share_t:s0 foo
- [解决方案]更改
/srv/samba
组所有权:chgrp prv /srv/samba/
前线
- 可以使用 连接
smbclient
,尽管我没有权限
smbclient //<prvback_IP>/foo -U prv
Enter prv's password:
Domain=[SDIS2] OS=[Unix] Server=[Samba 3.6.23-53.el6_10]
smb: \>
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
- 无法安装远程卷
mount.cifs //<prvback_IP>/foo /mnt/foo -o user=prv,password=p4ssw0rd,uid=500,gid=500,domain=SDIS2
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page
- 无法使用
fstab
条目挂载
//<prvback_IP>/foo /mnt/foo cifs user,uid=500,gid=500,rw,nounix,iocharset=utf8,file_mode=0550,dir_mode=0770,suid,username=prv,password=p4ssw0rd,domain=sdis2 0 0
# then
mount -a
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page
有谁知道如何摆脱我的困境吗?这是一个非常天真的问题,说明了我是多么迷失。
2020年10月26日编辑1摘要
- 将上下文添加到
/srv/samba/foo
文件夹 - 添加UDP iptables规则
- => 相同的行为(
smbclient
连接正常,mount
返回 error13 权限被拒绝)
答案1
Samba 专注于 CIFS/SMB 协议,以允许连接到网络上的 Windows 共享。虽然它可以在两个 Linux 系统之间使用,但我个人更喜欢 NFS。
对于 CentOS 7.x 或更高版本SELinux可以成为破坏者。因此,作为两个系统上的 root 执行setenforce 0
将 selinux 置于宽容模式的操作。任何 samba 共享文件夹都需要应用samba_share_t
上下文,否则 selinux 将拒绝它,并且 selinux 默认位于执行模式。您可能希望通过编辑/etc/selinux/config
和重新启动将 selinux 永久置于宽容模式。不要将其设置为禁用。
禁用两者上的防火墙,默认情况下允许 SMB(或 NFS)。
systemctl disable firewalld
Samba 需要在防火墙中打开此端口才能进行通信
- UDP 137
- UDP 138
- TCP 139
- TCP 445
默认的防火墙设置通常是打开的/etc/firewalld/zones/public.xml
,并且只允许 SSH (tcp-22) 和 DHCP 打开。
之后,如果smb.conf
已经security=user
完成smbpasswd -a <username>
了prvback这是 samba 服务器。然后在公关前端尝试挂载该 smb 共享的 samba 客户端在 fstab 中指定用户名和密码组合。从 on prvback samba 服务器开始chmod 777 /foo
,以排除简单的文件夹权限问题,然后一次一步地 chown 和 chmod,同时保持共享访问。
https://wiki.samba.org/index.php/Mounting_samba_shares_from_a_unix_client