「似水」
Samba

安装Samba

1sudo yum install samba

配置Samba

修改配置文件 /etc/samba/smb.conf,添加如下内容:

 1[global]
 2   map to guest = bad user          # 将无效用户映射为guest用户     未使用
 3
 4[centos]                            # 共享名称
 5    path = /home/ashu/code          # 共享目录路径
 6    public = yes                    # 允许匿名访问
 7    writable = yes                  # 允许写入
 8    browseable = yes                # 允许浏览
 9    guest ok = yes                  # 允许guest用户访问             未使用
10    usershare owner only = false    # 允许非拥有者创建共享          未使用

Samba 的 security = USER 模式下,客户端必须提供有效的 Samba 用户名和密码。如果客户端提供了 不存在或错误的用户名,默认行为可能拒绝访问。map to guest = Bad User 的作用:当客户端用户名无效时,自动把请求映射为 guest 用户,这样 [centos] 中 guest ok = yes 才能生效

 1# 重启Samba服务
 2sudo systemctl restart smb
 3
 4# 查看netbios名称服务
 5sudo systemctl status nmb
 6
 7# 启动netbios名称服务
 8sudo systemctl start nmb
 9
10# 开机自启
11[ashu@localhost ~]$ sudo systemctl enable smb
12Created symlink '/etc/systemd/system/multi-user.target.wants/smb.service''/usr/lib/systemd/system/smb.service'.
13[ashu@localhost ~]$ sudo systemctl enable nmb
14Created symlink '/etc/systemd/system/multi-user.target.wants/nmb.service''/usr/lib/systemd/system/nmb.service'.

添加用户

1# 添加用户
2sudo smbpasswd -a ashu
3
4# 查看用户
5sudo pdbedit -Lv
6
7# [U ] 表示已启用

防火墙

 1# 查看防火墙状态
 2[ashu@localhost ~]$ sudo firewall-cmd --list-all
 3public (default, active)
 4  target: default
 5  ingress-priority: 0
 6  egress-priority: 0
 7  icmp-block-inversion: no
 8  interfaces: ens33
 9  sources:
10  services: cockpit dhcpv6-client ssh   # 默认没有samba
11  ports:
12  protocols:
13  forward: yes
14  masquerade: no
15  forward-ports:
16  source-ports:
17  icmp-blocks:
18  rich rules:
19[ashu@localhost ~]$
20
21# 允许 samba 服务通过防火墙
22sudo firewall-cmd --permanent --add-service=samba
23sudo firewall-cmd --reload

无权限

1getenforce      # 查看SELinux状态

默认的,SELinux禁止网络上对Samba服务器上的共享目录进行写操作,即使你在smb.conf中允许了这项操作。

方法一 关闭SELinux

1setenforce 0    # 设置SELinux 成为permissive模式  
2setenforce 1    # 设置SELinux 成为enforcing模式

方法二 修改SELinux策略

1# 查找哪个包含semanage命令
2sudo yum provides semanage
3
4# 安装policycoreutils-python-utils
5sudo yum install policycoreutils-python-utils
1# 设置目录上下文
2sudo semanage fcontext -a -t samba_share_t "/home/ashu/cpp(/.*)?"
3sudo restorecon -Rv /home/ashu/cpp  # 递归应用新的上下文

实际生效结果为,修改了file_contexts.local文件

1[ashu@localhost ~]$ sudo cat /etc/selinux/targeted/contexts/files/file_contexts.local
2# This file is auto-generated by libsemanage
3# Do not edit directly.
4
5/home/ashu/cpp(/.*)?    system_u:object_r:samba_share_t:s0
1# 允许Samba网络写入     以下均暂未使用 就可以访问了
2sudo setsebool -P samba_enable_home_dirs 1  # 允许访问用户主目录
3sudo setsebool -P samba_export_all_rw 1     # 允许所有共享可读写
4sudo setsebool -P samba_enable_smbd 1       # 允许smbd服务