Samba
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置"NetBIOS over TCP/IP"使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
简单来说,Samba是实现Windows和Linux跨平台文件共享的;Samba有两个守护进程,分别是smbd和nmbd;
smb:监听tcp 139 445端口,实现档案共享、用户验证等;
nmb:监听udp137和138端口,实现netBIOS解析,处理浏览共享等
Linux上要实现Samba需要以下套件
Samba 实现服务
samba-client Linux客户端
cifs-utils 实现跨平台访问
环境检查
环境中是否已安装Samba及相关套件
[root@SAMBA ~]# rpm -qa samba samba-client cifs-utils
samba-client-3.6.23-12.el6.x86_64
cifs-utils-4.8.1-19.el6.x86_64
2) 安装samba
经过检查,samba-client和cifs-utils已经默认安装(如果没有安装,安装即可),所以安装samba主服务即可;
[root@SAMBA ~]# yum -y install samba
采用yum安装,自动解决依赖关系;
samba主配置文件介绍
主配置文件:
/etc/samb/smb.conf
默认配置:
[root@SAMBA ~]# grep -vE "^#|^$|^;" /etc/samba/smb.conf
[global]
workgroup = MYGROUP //samba全局设置
server string = Samba Server Version %v
# logs split per machine
log file = /var/log/samba/log.%m
# max 50KB per log file, then rotate
max log size = 50
security = user
passdb backend = tdbsam
# the login script name depends on the machine name
# the login script name depends on the unix user used
# disables profiles support by specifing an empty path
load printers = yes
cups options = raw
#obtain list of printers automatically on SystemV
[homes] //用户共享目录设置
comment = Home Directories
browseable = no
writable = yes
[printers] //打印设置
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
另外该配置文件还提供了共享设置案例,只不过用;注释掉了
[root@SAMBA ~]# grep -n "^;" /etc/samba/smb.conf |tail -n 20
243:; store dos attributes = yes
252:; valid users = %S//指定授权访问用户或用户组
253:; valid users = MYDOMAIN\%S
264:; [netlogon]//指定共享的自定义标识
265:; comment = Network Logon Service//指定共享目录的说明文字
266:; path = /var/lib/samba/netlogon//指定共享的实际路径
267:; guest ok = yes//相当于public = yes ,所有人可用
268:; writable = no//与read only相反,是否可写
269:; share modes = no
274:; [Profiles]
275:; path = /var/lib/samba/profiles
276:; browseable = no//设置为隐藏
277:; guest ok = yes
282:; [public]
283:; comment = Public Stuff
284:; path = /home/samba
285:; public = yes
286:; writable = yes
287:; printable = no
288:; write list = +staff
常见配置语句解析
workgroup: 工作组名称
server string:服务器描述
security: 安全级别,user为要求用户验证
comment: 对此共享目录的说明文字
path: 共享目录的实际位置
browseable: 是否可见,no为隐藏
public: 是否所有人可见
writable: 是否可写,与read only相反
除了以上说明之外,还可以采用 man 5 smb.conf来帮助
账号说明
SAMBA使用可以采用匿名使用,可认证使用,具体采用方式由主配置文件中security决定;
samba一共有5种,分别是share、user、server、domain、ads。
1.share:所有人都可以访问这台samba服务器(不需要输入用户名和密码)。
2.user:需要输入有效的用户名和密码才能访问samba服务器(身份验证由samba服务器负责)。
3.server:与user相同,只是将身份验证交由指定的另一台samba服务器负责。
4.domain:将身份验证交由域控制器负责。
5.ads:将身份验证交由域控制器负责(比domain更为安全一点)。
共享访问
Windows访问
Linux访问
smbclient访问
smbclient L 服务器地址
smbclient //服务器地址/共享名
smbclient U 用户名 //服务器地址/共享名
账号管理
账号设置
账号名称必须存在于系统中,但采用独立的密码,账号文件存在于/var/lib/samba/private/passwd.tdb;访问共享时,采用用户和密码登陆,权限取决于对应的系统账号的权限;
账号管理工具
pdbedit 工具
-a 指定系统账户为samba账户,并设置密码;
-L 查看共享账号信息
-x 删除共享账号
案例解析
根目录下/samba为共享目录,目录内有music、carton、MV目录,其中分别对应各类档案,供上传和下载;其中vip账户woon可以写;
1)设置环境
[root@SAMBA samba]# ls
carton music MV
2)配置共享
[root@SAMBA samba]# vim /etc/samba/smb.conf
[music]
path = /samba
public = yes
read only = yes
write list = woon
3) 添加共享账户
[root@SAMBA samba]# pdbedit -a woon
[root@SAMBA samba]# useradd samba
[root@SAMBA samba]# pdbedit -a samba
[root@woon samba]# setfacl -d -m u:woon:rwx /samba/
4)重启samba服务;
service smb restart
service nmb estart
实验验证
woon用户验证
[root@woon ~]# ls -al /etc/ >> /samba/ls.log
[root@woon ~]# rm -rf /samba/install.log
[root@woon ~]# smbclient -U woon //192.168.239.128/music
Enter woon's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-12.el6]
smb: \> ls
. D 0 Tue Mar 3 17:48:13 2015
.. DR 0 Tue Mar 3 17:32:03 2015
MV D 0 Tue Mar 3 17:38:00 2015
music D 0 Tue Mar 3 17:38:59 2015
ls.log 15220 Tue Mar 3 17:48:03 2015
acl D 0 Tue Mar 3 17:34:37 2015
carton D 0 Tue Mar 3 17:33:47 2015
33788 blocks of size 262144. 14918 blocks available
smb: \> put install.log
putting file install.log as \install.log (8637.9 kb/s) (average 8638.1 kb/s)
smb: \> ls
. D 0 Tue Mar 3 17:48:39 2015
.. DR 0 Tue Mar 3 17:32:03 2015
MV D 0 Tue Mar 3 17:38:00 2015
music D 0 Tue Mar 3 17:38:59 2015
ls.log 15220 Tue Mar 3 17:48:03 2015
Linux访问Windows共享文件夹
mount -t smbfs -o username=user,iocharset=GB2312 -l //192.168.1.100/test /mnt/test