##########################################################
闲扯Samba
Windows作为服务端
Linux作为服务端
################################################################
闲扯Samba
最近几个月看的东西有点多,事也多,一直抽不开身写博文。总结的东西倒是不少,但自己还未能完全消耗形成完善的体系,所以拿不出手的东西写了是一定会误导博友的,正好最近用到samba就顺便总结下基础服务。感觉自己欠下好多博文,深入浅出的博文确实不好写,只能慢慢来了,当作锻炼自己。
windows和Linux之间通过FTP共享文件,不方便用户使用,于是samba就诞生了。啥是samba?samba是干啥的呢?简单的来说samba是CIFS/SMB协议的一种实现,CIFS/SMB协议实现了跨平台文件共享,windows的网上邻居就是使用CIFS协议,因此Samba可以实现linux和windows之间的文件共享。需要特别说明的是客户端访问samba服务的用户账户一定是系统用户,而密码则是由samba自己维护的,接下来通过介绍linux和windows之间共享文件的模式来进一步了解samba是什么。
Windows作为服务端
这种工作模型下,linux将作为客户端访问windows,所以linux需要安装客户端软件,并且需要访问凭证,文件的最终访问权限为共享权限和文件系统权限二者的交集,首先我们看看windows作为服务端是如何共享出资源的。
创建test用户
添加文件系统权限
添加共享权限
linux作为客户端需要安装客户端工具
yum install samba-client -y
列出服务共享的目录列表
smbclient -L 192.168.1.201 -U test
进入共享目录进行上传、下载等操作
smbclient //192.168.1.201/testdir -U test
挂载共享目录至本地
mkdir /winfs mount -t cifs -o username=test,password=123 //192.168.1.201/testdir /winfs touch /winfs/test
Linux作为服务端
linux作为服务端需要安装samba主包,samba还支持web-gui化管理工具swat,samba的选项有很多,兴趣的朋友可以自行研究,这里以实际案例来演示samba的在工作中是如何使用的。
安装samba
yum install -y samba setenforce 0 #samba会受到selinux的影响
启动服务查看监听端口
for i in smb nmb; do service $i restart; done netstat -tunlp smbd负责文件共享 port 445 nmbd负责NetBIOS port 137 138 139
实战需求:任何用户访问samba服务必须经过认证,每个用户有自己的目录并且只有自己可以看到,public为公共目录任何人都可以增删改,tom,lucy属于ios部门,ios部门有自己专属的同名目录并且只有所属职员有增删改权限;bob,jim属于web部门,web部门有专属的同名目录并且只有所属职员有增删改权限。
创建公共目录
mkdir -pv /office/public mkdir -pv /office/ios mkdir -pv /office/web mkdir -pv /office/users
批量创建用户、用户目录、添加用户到指定组、修改用户目录权限脚本(如果在想在/home下就很简单,直接创建用户就可以,不用这么麻烦,这里只是为了更清楚的印证文件最终权限为共享权限和文件系统权限二者的交集)
#!/bin/bash # users='bob jim' path='/office/users/' group='web' groupadd $group &>/dev/null for i in $users; do useradd -g $group -r $i &>/dev/null && echo "Add $i succeed in $group ." mkdir -pv $path$i &> /dev/null && echo "mkdir $path$i succeed ." setfacl -m u:$i:rwx $path$i && echo "$path$i permission ok" done
为ios、web目录设置权限,根据自己的需要做出设置
setfacl -m g:ios:rwx /office/ios #为目录定义用户权限 setfacl -m g:web:rwx /office/web #为目录定义组权限 chmod o-r /office/ios #ios组以外的用户无法进入ios目录 chmod o-r /office/web #web组以外的用户无法进入web目录 chmod o+r /office/ios #ios组以外的用户只能查看,无法删、改 chmod o+r /office/web #web组以外的用户只能查看,无法删、改
主配置文件/etc/samba/smb.conf
[global] netbios name = Linux File Server #辅助名称 server string = Samba #服务名称 smb passwd file = /etc/samba/smbpasswd #密码文件存放位置 log file = /var/log/samba/log.%m #日志文件 max log size = 500 #日志大小 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 idmap config * : backend = tdb printing = bsd [homes] comment = user_home path = /office/users/%U #用户家目录 browseable = no #其他人无法浏览 writable = yes #可写 valid users = %S #允许访问的用户 sync always = yes #同步模式工作 create mask = 0755 #创建文件权限 directory mask = 0755 #创建目录权限 [public] comment = public path = /office/public write list = +staff #共享写列表 read only = No #非只读模式,就是可写 sync always = yes create mask = 0777 directory mask = 0777 guest ok = Yes #所有人可见 [ios] comment = ios path = /office/ios write list = +ios #read only = No sync always = yes create mask = 0777 directory mask = 0777 guest ok = yes [web] comment = web path = /office/web write list = +web #read only = No sync always = yes create mask = 0777 directory mask = 0777 guest ok = Yes
使用ios部门tom登录测试
使用web部门bob登录测试
使用test用户登录测试
samba的使用介绍到此,欢迎博友提出疑问和指正。