安装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-utils1# 设置目录上下文
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:s01# 允许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服务