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服务器的主机

这里只允许IP100的主机访问

还可以设置整个网段 hosts allow = 172.25.254.

hosts denyhosts 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

查看服务端共享资源列表:

Linux Smaba服务器配置_Linux服务架设片

 

浏览服务器共享资源

Linux Smaba服务器配置_Linux服务架设片_02

 注意这里的访问路径,IP后面根的是共享资源的名称,千万不要写成共享资源的绝对路径

 <2>使用mount命令在客户端挂载共享目录

Linux Smaba服务器配置_Linux服务架设片_03

 

注意,这里在挂载之前需要安装cifs-utils软件包,否则会出现read-only无法挂载的错误

示例中无法写入文件首先查看配置文件中自定义的共享参数writable是否为no,再看共享目录本身权限是否可写

经排错,是共享目录本身不可写

 Linux Smaba服务器配置_Linux服务架设片_04

 永久挂载: vim /etc/fstab

Linux Smaba服务器配置_Linux服务架设片_05

vim /root/password

username=user1

password=001

 

3.好多人在连接共享资源时,会出现以下报错:

Linux Smaba服务器配置_Linux服务架设片_06

 这里需要注意两个问题,就是samba服务器必须通过防火墙和selinux策略.

最直接了当的方法就是关闭防火墙和selinux.

systemct stop firewalld

setenforce 0l 

 

还有就是让firewalld允许samba服务

firewall-cmd --add-service=samba

firewall-cmd --add-service=samba-firewalld

然后再更改selinux的安全上下文

Linux Smaba服务器配置_Linux服务架设片_07

 

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