本节索引:
一、SAMBA介绍
二、SAMBA服务配置
三、SAMBA用户管理与挂载
四、实验:Linux作为SAMBA客户端访问Windows共享文件
五、实验:Linux作为SAMBA服务器端
六、实验:指定共享目录
七、实验:实现不同用户目录权限不同
八、实验:实现多用户挂载(RHCE)
一、SAMBA介绍
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
SMB:Server Messages Block,信息服务块,是一种在局域网上共享文件和打印机的一种
通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
CIFS:common internet file system,微软基于SMB发布,CIFS是公共的或开放的SMB协议
版本,并由Microsoft使用。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运
行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
SAMBA的功能:
共享文件和打印,实现在线编辑
实现登录SAMBA用户的身份认证
可以进行NetBIOS名称解析
外围设备共享
计算机网络管理模式:
工作组WORKGROUP:计算机对等关系,帐号信息各自管理
域DOMAIN: C/S结构,帐号信息集中管理,DC,AD
相关包:
Samba 提供smb服务
Samba-client 客户端软件
samba-common 通用软件
cifs-utils smb 客户端工具
samba-winbind 和AD相关
相关服务进程:
smbd 提供smb(cifs)服务 TCP:139,445
nmbd NetBIOS名称解析 UDP:137,138
主配置文件:
/etc/samba/smb.conf
帮助参看:man smb.conf
语法检查: testparm [-v] [/etc/samba/smb.conf]
客户端工具:smbclient,mount.cifs
二、SAMBA服务配置
smb.conf继承了.ini文件的格式,用[ ]分成不同的部分
全局设置:
[global] 服务器通用或全局设置的部分
特定共享设置:
[homes] 用户的家目录共享
[printers] 定义打印机资源和服务
[sharename] 自定义的共享目录配置
其中:#和;开头的语句为注释,大小写不敏感
宏定义:
%m 客户端主机的NetBIOS名
%M 客户端主机的FQDN
%H 当前用户家目录路径
%U 当前用户用户名
%g 当前用户所属组
%h samba服务器的主机名
%L samba服务器的NetBIOS名
%I 客户端主机的IP
%T 当前日期和时间
%S 可登录的用户名
workgroup 指定工作组名称
server string 主机注释信息
netbios name 指定NetBIOS名
interfaces 指定服务侦听接口和IP
hosts allow 可用“,” ,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,
如在[global]设置,将应用并覆盖所有共享设置
IPv4 network/prefix:172.25.0.0/24 IPv4前缀: 172.25.0.
IPv4 network/netmask:172.25.0.0/255.255.255.0
主机名:desktop.example.com
以example.com后缀的主机名:.example.com
示例:
hosts allow = 172.25.
hosts allow = 172.25. .example.com
hosts deny 拒绝指定主机访问
config file=/etc/samba/conf.d/%U 用户独立的配置文件
Security三种认证方式:
share:匿名(CentOS7不再支持)
user:samba用户(采有linux用户,samba的独立口令)
domain:使用DC(DOMAIN CONTROLLER)认证
passdb backend = tdbsam 密码数据库格式
配置samba日志
默认不记录
以IP方式记录日志
log file = /var/log/samba/log.%I
log level = 2
日志文件达到50K,将轮循rotate,单位KB
max log size=50
配置目录共享
[共享名称] 远程网络看到的共享名称
comment 注释信息
path 所共享的目录路径
public 能否被guest访问的共享,默认no,和guest ok 类似
browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
writable=yes 可以被所有用户读写,默认为no
read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生
效,默认只读
write list 三种形式:用户,@组名,+组名,用,分隔如writable=no,列
表中用户或组可读写,不在列表中用户只读
valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名
之间用空格分隔
备注:每个共享目录应该有独立的[ ]部分
三、SMABA用户管理与挂载
管理samba用户
实现samba用户
包:samba-common-tools
工具:smbpasswd pdbedit
samba用户须是Linux用户,建议使用/sbin/nologin
添加samba用户
smbpasswd -a <user>
pdbedit -a -u <user>
修改用户密码
smbpasswd <user>
删除用户和密码:
smbpasswd –x <user>
pdbedit –x –u <user>
查看samba用户列表:
/var/lib/samba/private/passdb.tdb
pdbedit –L –v
查看samba服务器状态
smbstatus
挂载CIFS文件系统
手动挂载
mount -t cifs -o user=wang,password=wxlinux //server//shared
/mnt/smb
开机自动挂载
cat /etc/fstab 可以用文件代替用户名和密码的输入
//server/homes /mnt cifs credentials=/etc/smb.txt 0 0
cat /etc/smb.txt
username=wang
password=password
chmod 600 /etc/smb.txt
四、实验:将Linux作为SAMBA客户端访问Windows共享文件
前期准备:
Window系统版本为 win10
Linux系统版本为 CentOS 7.4
Windows系统中共享目录如下:
在Windows系统中创建一个test用户(必须以管理员身份创建)
Linux系统:
安装samba-client包
yum install samba-client
查看Windows系统上的共资源
smbclient -L 192.168.30.1 -U test%123
连接Windows系统上的共享资源
smbclient //192.168.30.1/lamp -U test%123
挂载windows共享目录到/mnt/win目录下
mkdir /mnt/win
mount -o username=test,password=123,vers=3.0 //192.168.30.1/lamp /mnt/win
也可写入/etc/fstab文件中永久挂载,为了防止明文用户名密码,可用下面写法,将用户和账号保存在一个文件中
vim /etc/user.txt
username=test
password=123
五、实验:Linux系统作为SAMBA服务器端
在LINUX系统中创建SAMBA账号需要先创建LINUX账号在使用smbpasswd命令转换为samba账号
创建linux账号
useradd -s /sbin/nologin smb1
useradd -s /sbin/nologin smb2
useradd -s /sbin/nologin smb3
将linux账号变为samba账号
smbpasswd -a smb1
smbpasswd -a smb2
smbpasswd -a smb3
删除samba账号可使用
smbpasswd –x
修改samba账号密码:
smbpasswd user
查看已有的samba账号:
pdbedit -L
开启smb服务
systemctl start smb
切换客户端进行测试:
smbclient -L 192.168.30.10 -U smb1%centos
默认以samba用户的家目录作为共享目录
也可在Window作为访问端连接SAMBA服务器
六、实验:SAMBA共享指定目录
添加配置
vim etc/samba/sam.conf
[share]
comment=smba share dir
path=/data/tools
read only=no 等价于writeabe=yes
public=no 是否允许匿名访问,默认为NO
valid users=smb1 smb2 指定有效用户,其他用户不可访问
#valid users=+staff 也可指定有效组,用户多时建议用组管理
#wirte list 指定列表中用户可写,需配合read only=yes
smbclient //192.168.30.10/share -U smb1%centos
smb3用户由于没有授权,所有拒绝登录
七、实验:针对不同的用户设置不同的共享目录和权限
SAMBA服务器端:
目前已存在的SAMBA用户
配置文件中加上此行,指定配置目录
vim etc/samba/sam.conf
[global]
config file = /etc/samba/conf.d/%U
创建SAMBA共享目录和测试文件
mkdir /data/smb2
mkdir /data/smb3
touch /data/smb2/test2
touch /data/smb3/test3
创建SAMBA配置目录
mkdir /etc/samba/conf.d/
cd /etc/samba/conf.d/
vim smb2
[share]
path=/data/smb2
writeable=yes
vim smb3
[share]
path=/data/smb3
给data目录添加777权限
chmod -R 777 /data/
重启smb服务
systemct restart smb
测试:
使用samb2用户登录,共享目录为/data/smb2
smbclient //192.168.30.7/share -U smb2%centos
使用samb2用户登录,共享目录为/data/smb3
smbclient //192.168.30.7/share -U smb3%centos
八、实验:实现多用户SAMBA挂载(仅CentOS 7支持,RHCE)
SAMBA服务器端:
目前已有四个samba账号,smb1,smb2,smb3,smb4
vim /etc/samba/
[share]
comment = samba share dir
path = /data/tools
read only = yes
valid users = smb1 smb2 smb3 smbshare
write list = smb1 smb3
添加/data/tools目录读写权限
chmod 777 /data/tools
重启smb服务
systemctl restart smb
客户端:
必须建立同名用户,UID可以不一致
useradd smb1
useradd smb2
useradd smb3
用smbshare用户挂载share目录
mount -o username=smbshare,password=centos,multiuser //192.168.30.10/share /mnt
若要永久挂载,可修改/etc/fstab目录
备注:SELinux环境下还需:
chcon -R -t samba_share_t /data/to
测试:
su – smb1
验证SAMBA服务器是否有同名用户
cifscreds add 192.168.30.7
创建f1文件所有者为f1
su – smb2
由于smb2不在wirte_list表中,不具有读权限,登录失败
su – smb3
cifscreds add 192.168.30.7
创建f3文件所有者为smb3
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/101980