1. Smaba服务器安装及配置
<1>首先使用rpm -qa 命令查看是否安装Samba软件包
[root@server1 ~]# rpm -qa | grep samba
samba-common-4.1.12-21.el7_1.x86_64
samba-libs-4.1.12-21.el7_1.x86_64
samba-4.1.12-21.el7_1.x86_64
如果没有,使用yum install命令安装,安装完成之后启动samba服务 systemctl start smb
<2>设置SMB用户
Smb用户必须是系统中存在的用户,所以首先要添加系统用户
useradd -s /sbin/nologin user1
smbpasswd -a user1 添加samba用户
smbpasswd -d user1 禁用samba用户
smbpasswd -e user1 启用samba用户
smbpasswd -x user1 删除samba用户
<2>修改主配置文件 /etc/samba/smb.conf
全局设置
workgroup=MYGROUP 设置Samba服务器所属的工作组名或域名
hosts allow = 172.25.254.100设置可访问samba服务器的主机
这里只允许IP为100的主机访问
还可以设置整个网段 hosts allow = 172.25.254.
hosts deny与hosts allow 正好相反
security = user 设置Samba服务器的安全级别
share :不设置安全性级别,客户端不需要输入Samba用户名和密码就可以访问Samba
服务器的共享资源
user :默认安全级别,要求用户在访问共享资源之前必须提供用户名和密码进行认证
共享参数定义
[home] 用户主目录的默认共享设置
[printers] 打印机的默认共享设置
[smbshare] 用户自定义的共享名,可以随意命名
comment = smbshare 设置共享目录说明信息
path = /smbdir 指定共享目录在服务器中的绝对路径
public = yes|no 是否允许匿名用户访问共享资源
guest ok = yes|no 连接共享资源时是否需要密码
valid users = user1,user2,@usergroup
指定允许访问的用户或组成员,多个用户名或组名以空格或逗号隔开,invalid users用来指定
不允许访问该共享资源的用户
readonly = yes|no 设置共享目录是只读还是可读写
writable = yes|no 指定共享目录有写入权限还是只读权限(前提是目录本身是否可写)
write list = user1,@usergroup 用来指定可以在该共享下写入文件的用户
browseable = yes|no 设置共享目录是否可见(默认为no,即隐藏共享目录)
2.客户端访问共享资源
<1>首先安装客户端软件包
[root@server2 opt]# rpm -qa | grep samba
samba-common-4.1.12-21.el7_1.x86_64
samba-libs-4.1.12-21.el7_1.x86_64
samba-client-4.1.12-21.el7_1.x86_64
查看服务端共享资源列表:
浏览服务器共享资源
注意这里的访问路径,IP后面根的是共享资源的名称,千万不要写成共享资源的绝对路径
<2>使用mount命令在客户端挂载共享目录
注意,这里在挂载之前需要安装cifs-utils软件包,否则会出现read-only无法挂载的错误
示例中无法写入文件首先查看配置文件中自定义的共享参数writable是否为no,再看共享目录本身权限是否可写
经排错,是共享目录本身不可写
永久挂载: vim /etc/fstab
vim /root/password
username=user1
password=001
3.好多人在连接共享资源时,会出现以下报错:
这里需要注意两个问题,就是samba服务器必须通过防火墙和selinux策略.
最直接了当的方法就是关闭防火墙和selinux.
systemct stop firewalld
setenforce 0l
还有就是让firewalld允许samba服务
firewall-cmd --add-service=samba
firewall-cmd --add-service=samba-firewalld
然后再更改selinux的安全上下文
samba_enable_home_dirs --> on
samba_export_all_ro --> on
samba_export_all_rw --> on 用setsebool -P命令将这三个布尔值修改为开启状态
修改共享目录的安全上下文:
chcon -R -t samba_share_t /smbdir
或者
semanage fcontext -a -t samba_share_t “/smbdir(/.*)?”
restorecon -Rv /smbdir