CentOS:远程挂载 SMB

CentOS:远程挂载 SMB

问题及解决方案: /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

相关内容