共享存储
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
samba相关配置文件
(这部分内容来自鸟哥的私房菜)
与samba服务器相关的配置文件有:
/etc/samba/smb.conf
这是samba的主要配置文件,基本上仅有这个文件,而且这个配置文件本身的说明非常详细。主要的设置包括服务器全局设置,如工作组、NetBIOS名称和密码等级,以及共享目录的相关设置,如实际目录、共享资源名称和权限等两大部分。
/etc/samba/lmhosts
早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔。 事实上它有点像是 /etc/hosts 的功能!只不过这个 lmhosts 对应的主机名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个档案不设定也无所谓。
/etc/sysconfig/samba
提供启动 smbd, nmbd 时,你还想要加入的相关服务参数。
/etc/samba/smbusers
由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个档案来设定
/var/lib/samba/private/{passdb.tdb,secrets.tdb}
管理 Samba 的用户账号/密码时,会用到的数据库档案;
/usr/share/doc/samba-<版本>
这个目录包含了 SAMBA 的所有相关的技术手册喔!也就是说,当你安装好了 SAMBA 之后,你的系统里面就已经含有相当丰富而完整的 SAMBA 使用手册了!值得高兴吧! ^_^,所以,赶紧自行参考喔!
至于常用的脚本文件案方面,若分为服务器与客户端功能,则主要有底下这几个数据:
/usr/sbin/{smbd,nmbd}:服务器功能,就是最重要的权限管理 (smbd) 以及 NetBIOS name 查询 (nmbd) 两个重要的服务程序;
/usr/bin/{tdbdump,tdbtool}:服务器功能,在 Samba 3.0
以后的版本中,用户的账号与密码参数已经转为使用数据库了!Samba 使用的数据库名称为 TDB (Trivial DataBase)。
既然是使用数据库,当然要使用数据库的控制指令来处理啰。tdbdump 可以察看数据库的内容,tdbtool 则可以进入数据库操作接口直接手动修改帐密参数。不过,你得要安装 tdb-tools 这个软件才行;
/usr/bin/smbstatus:服务器功能,可以列出目前 Samba 的联机状况, 包括每一条 Samba 联机的 PID, 分享的资源,使用的用户来源等等,让你轻松管理 Samba 啦;
/usr/bin/{smbpasswd,pdbedit}:服务器功能,在管理 Samba 的用户账号密码时, 早期是使用 smbpasswd 这个指令,不过因为后来使用 TDB 数据库了,因此建议使用新的 pdbedit 指令来管理用户数据;
/usr/bin/testparm:服务器功能,这个指令主要在检验配置文件 smb.conf 的语法正确与否,当你编辑过 smb.conf
时,请务必使用这个指令来检查一次,避免因为打字错误引起的困扰啊!
/sbin/mount.cifs:客户端功能,在 Windows 上面我们可以设定『网络驱动器机』来连接到自己的主机上面。在 Linux 上面,我们则是透过 mount (mount.cifs) 来将远程主机分享的档案与目录挂载到自己的 Linux 主机上面哪!
/usr/bin/smbclient:客户端功能,当你的 Linux主机想要藉由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用 smbclient来查看啦!这个指令也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功哩!
/usr/bin/nmblookup:客户端功能,有点类似 nslookup 啦!重点在查出 NetBIOS name 就是了
/usr/bin/smbtree:客户端功能,这玩意就有点像 Windows
系统的网络上的芳邻显示的结果,可以显示类似『靠近我的计算机』之类的数据, 能够查到工作组与计算机名称的树状目录分布图!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.启动samba服务器
samba有两个主要的进程smbd和nmbd。smbd进程提供了文件和打印服务,而nmbd则提供了NetBIOS名称服务和浏览支持,帮助SMB客户定位服务器,处理所有基于UDP的协议。
samba的两个服务smbd和nmbd都是stand alone服务,直接输入
service smb start
service nmb start
即可启动服务,设置开机启动也很简单,输入
chkconfig smb on
chkconfig nmb on
即可设置开机启动。
我们来检查一下启动和开机启动是否设置成功
输入 chkconfig --list |grep mb
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
yum install samba-common samba samba-client.x86_64 -y #安装
getsebool -a | grep samba #查看端口
setsebool -P samba_enable_home_dirs on #打开端口
smbpasswd -a student #在snb上添加student用户 (只有id的用户可以添加)
smbclient -L //172.25.254.101 -U student #student用户登陆
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在另一个主机上
yum install samba-client.x86_64 -y
mount -o username=student,password=123 //172.25.254.101/student /mnt/ #登陆172.25.254.100上student用户挂载mnt
df #查看
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
配置smb.conf文件
samba服务器最主要的配置文件其实只有一个,就是/etc/samba/samba.conf,这个配置文件可以分为两个部分,一个部分是全局参数,一部分是共享资源相关参数。
#1.全局部分参数设置:
[global]
#与主机名相关的设置
workgroup = zkhouse <==工作组名称
netbios name = zkserver <==主机名称,跟hostname不是一个概念,在同一个组中,netbios name必须唯一
serverstring = this is a test samba server <==说明性文字,内容无关紧要
#与登录文件有关的设置
log file = /var/log/samba/log.%m <==日志文件的存储文件名,%m代表的是client端Internet主机名,就是hostname
max log size = 50 <==日志文件最大的大小为50Kb
#与密码相关的设置
security = share <==表示不需要密码,可设置的值为share、user和server
passdb backend = tdbsam
#打印机加载方式
load printer = no <==不加载打印机
-----------------------------------------------------------------------------------------------------
#2.共享资源设置方面:将旧的注释掉,加入新的
#先取消[homes]、[printers]的项目,添加[temp]项目如下
[temp] <==共享资源名称
comment = Temporary file space <==简单的解释,内容无关紧要
path = /tmp <==实际的共享目录
writable = yes <==设置为可写入
browseable = yes <==可以被所有用户浏览到资源名称,
guest ok = yes <==可以让用户随意登录
===================================================================
# ----------------------- Standalone Server Options ------------------------
#
# security = the mode Samba runs in. This can be set to user, share
# (deprecated), or server (deprecated).
#
# passdb backend = the backend used to store user information in. New
# installations should use either tdbsam or ldapsam. No additional configuration
# is required for tdbsam. The "smbpasswd" utility is available for backwards
# compatibility.
#
security = user
passdb backend = tdbsam
map to guest =bad user #给匿名用户身份
===================================================================
本机测试:
smbclient -L [//主机或IP] [-U 使用者账号]
选项与参数:
-L :仅查阅后面接的主机所提供分享的目录资源;
-U :以后面接的这个账号来尝试取得该主机的可使用资源
smbclient -L //172.25.254.101
然后在另一台主机上把分享的目录挂载到某一个目录下
在再主机上查看文件是否被分享过来(记得先卸载再查看)
===================================================================
pdbedit -L #查询sam服务的用户id
smbpasswd -a admin #加用户
[DATA] #DATA文件
comment = weixin ddddd
path = /westos #/westos
guest ok = yes #匿名用户可以登陆
writable = yes #对这目录可写
write list = @student #该目录对student组下用户可写 (去掉@ +)就变成用户可以写
admin users = admi #改用户在data文件里可以建立删除文件
browseable #能否被发现 默认yes 不能被发现但不代表没有
valid users =+student #只有student组可以挂载 去掉(@ +)代表student用户可以挂载 (admin=users 这个命令失效)
===================================================================
多用户挂载
vim /root/smbfile
username=student
password=123
mount -o credentials=/root/smbfile,multiuser,sec=ntlmssp //172.25.254.101/DATA /mnt
===================================================================
Samba 企业应用案例需求:
1. 所有员工都能够在公司内流动办公,但不管在哪电脑上工作,都要把自己文件存在 Samba 文件服器上.
2. 各部门办公人员拥有各自的主目录,用于存放私有文档(工作相关),其他人禁止访问.
3. 所有的用户都不允许使用服务器的 SHELL(安全考虑).
4. 制造部、财务部、管理部,都有各自的文件目录.
5. 各部门目录下提供“对外”、“公共文档”、“受控文档”三个子目录.
对外: <1>允许公司所有工作人员访问,但不能修改文件.
<2>本部门文员负责维护数据
公共文档:<1>本部门员工可以访问,领导层可以访问,但不能修改.
<2> 本部门文员负责维护数据
受控文档:<1>本部门主管、公司领导可以访问、其他员工禁止.
<2>本部门主管负责维护数据
注:财务部受控文档只允许总经理、财务部总监、主管访问;管理部受控文档只允许总经理、主管访问
6. 公共区域:<1>所有员工均可访问
<2>网络部负责维护
7. 交换区域:<1>所有员工均可读可写,禁止删除其它员工文件.
2>网络部负责维护
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
建立五个组
groupadd zhizao caiwu guanli lingdao network
useradd s /bin/false wy zg zj jl
usermod G zhizao,caiwu,guanli wy
usermod G zhizao,caiwu,guanli zg
usermod G caiwu zj
usermod G lingdao jl
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
创建相关的目录:
mdkir /home/samba/zhizao caiwu guanli public swap
mkdir /home/samba/zhizao/guest public private
mkdir /home/samba/caiwu/guest public private
mkdir /home/samba/guanli/guest public private
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++设置文件系统权限:
chmod 1777 /home/samba/swap
chmod 755 /home/samba/zhizao caiwu guanli
chmod 775 /home/samba/public
chgrp network /home/samba/public
chmod 755 /home/samba/zhizao/guest
chown wy.zhizao /home/samba/zhizao/guest
chmod 750 /home/samba/zhizao/public private
chown zg.lingdao /home/samba/zhizao/private
setfacl m g:lingdao:rx /home/samba/zhizao/public
chmod 755 /home/samba/caiwu/guest
chown wy.caiwu /home/samba/caiwu/guest/guest
chmod 750 /home/samba/caiwu/public
chown wy.caiwu /home/samba/caiwu/public
setfacl m g:lingdao:rx /home/samba/caiwu/public
chmod 700 /home/samba/caiwu/private
chown zg /home/samba/caiwu/private
setfacl m u:zj:rx /home/samba/caiwu/private
setfacl m u:jl:rx /home/samba/caiwu/private
chmod 755 /home/samba/guanli/guest
chown wy.guanli /home/samba/guanli/guest
chmod 750 /home/samba/guanli/public
chown wy.guanli /home/samba/guanli/public
setfacl m g:lingdao:rx /home/samba/guanli/public
chmod 700 /home/samba/guanli/private
chown zg /home/samba/guanli/private
setfacl m u:jl:rx /home/samba/guanli/private
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
配置 samba 服务:
[homes]
comment = Home Directories
browseable = no
writable = yes
[制造部]
path = /home/samba/zhizao
writable = yes
browseable = yes
[对外]
path = /home/samba/zhizao/guest
admin users = wy
browseable = no
[公共文档]
path = /home/samba/zhizao/public
valid users = @zhizao @lingdao
admin users = wy
browseable = no
[受控文档]
path = /home/samba/zhizao/private
valid users = zg @lingdao
admin users = zg
browseable = no
[财务部]
path = /home/samba/caiwu
writable = yes
browseable = yes
[对外]
path = /home/samba/caiwu/guest
admin users = wy
browseable = no
[公共文档]
path = /home/samba/caiwu/public
valid users = @caiwu @lingdao
admin users = wy
browseable = no
[受控文档]
path = /home/samba/caiwu/private
valid users = zg zj jl
admin users = zg
browseable = no
[管理部]
path = /home/samba/guanli
writable = yes
browseable = yes
[对外]
path = /home/samba/guanli/guest
admin users = wy
browseable = no
[公共文档]
path = /home/samba/guanli/public
valid users = @guanli @lingdao
admin users = wy
browseable = no
[受控文档]
path = /home/samba/guanli/private
valid users = zg jl
admin users = zg
browseable = no
[公共区域]
path = /home/samba/public
public = yes
admin users = @network
[交换区域]
path = /home/samba/swap
writeable = yes
public = yes
admin users = @network