Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
这里仅对Samba做个大概介绍,详细的介绍可以参考百度百科。接下来介绍如何在CentsOs6.5下配置安装Samba.
[root@node01 sysconfig]# pwd //查看当前路径,也可以直接vim /etc/sysconfig/selinux修改
/etc/sysconfig
[root@node01 sysconfig]# vim selinux
[root@node01 ~]#reboot # 重启使selinux,iptables 设置生效
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # 设置该项为disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@node01 sysconfig]# vim selinux
[root@node01 sysconfig]# service iptables stop
[root@node01 sysconfig]# chkconfig iptables off
先查看有没有安装安装Samba服务
[root@node01 ~]# service smb status
smb: unrecognized service #smb服务未识别,说明并没有装Samba服务
使用yum安装Samba服务
[root@node01 ~]# yum install samba samba-client -y #也可以单独地安装yum install samba
Installed:
samba.x86_64 0:3.6.23-51.el6
Updated:
samba-client.x86_64 0:3.6.23-51.el6
Dependency Updated:
samba-common.x86_64 0:3.6.23-51.el6 samba-winbind.x86_64 0:3.6.23-51.el6 samba-winbind-clients.x86_64 0:3.6.23-51.el6
Complete!
# samba安装完毕,输入service smb status命令验证一下
[root@node01 ~]# service smb status
smbd is stopped # 不再提示smb: unrecognized service ,说名samba服务已经安装成功
samba服务依赖的软件包
[root@node01 ~]# rpm -qa samba* # 查看与samba相关的软件包名称及相应版本
samba-winbind-3.6.23-51.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-winbind-clients-3.6.23-51.el6.x86_64
samba-3.6.23-51.el6.x86_64 # samba服务器软件,主要提供samba服务器的守护程序smbd 和nmbd
samba-common-3.6.23-51.el6.x86_64 # samba公共软件包,主要提供samba服务器的配置文件与pdbedit、smbpasswd、testparm等命令
samba-client-3.6.23-51.el6.x86_64 # samba客户端软件
Samba的主配置文件为/etc/samba/smb.conf,主配置文件由两部分构成:全局参数及共享定义。在配置相关参数时,格式为 name = value
Samba Server的验证方式,包含四种验证方式。
share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。该模式已被弃用
user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。该模式已被弃用
domain:域安全级别,使用主域控制器(PDC)来完成认证。
sam应该是security account manager(安全账户管理)的简写,目前用户后端有三种模式:smbpasswd、tdbsam和ldapsam。
smbpasswd:旧的明文passdb后端。如果使用此passdb后端,某些Samba功能将不起作用。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
tdbsam:基于TDB的密码存储后端。将TDB的路径作为可选参数(默认为在/etc/samba 目录中的passdb.tdb)。passdb.tdb用户数据库可以使用smbpasswd –a 来建立Samba用户,不过要建立的Samba用户必须先是系统用户; 也可使用pdbedit命令来建立Samba账户
ldapsam:基于LDAP的passdb后端。 将LDAP URL作为可选参数(默认为ldap:// localhost)
Global Settings (全局参数):该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。
配置普通的Samba服务只需修改smb.conf配置文件即可
[root@node01 ~]# cd /etc/samba/
[root@node01 samba]# ls
lmhosts smb.conf smbusers
Samba服务器配置案例
1)案例,公司现有多个部门,因工作需要,将FM部的资料存放在samba服务器的/var/ftp/fm 目录中集中管理,以便FM人员浏览。要求:1、该目录/var/ftp/fm仅允许FM部员工访问 ;2、仅允许FM部普通用户对文件目录/var/ftp/fm/upload 进行上传、下载、删除 及创建,且普通用户仅能管理自己上传或创建的文件;3、允许管理员fmadmin对文件目录文件/var/ftp/fm/admin进行上传、下载、删除及创建,同时允许FM部门普通用户下载资源;4、允许fmadmin用户对目录/var/ftp/fm 中的所有目录文件进行管理
修改Samba配置文件,配置Samba服务,在修改之前建议先对smb.conf先进行备份
[root@node01 samba]# cp smb.conf smb.conf.bak
[root@node01 samba]# ls
lmhosts smb.conf smb.conf.bak smbusers
[root@node01 samba]# vim smb.conf
[global]
workgroup = MYGROUP # 设定 Samba Server 所要加入的工作组或者域
server string = Samba Server Version %v # 设定 Samba Server 的注释,可以是任何字符串。宏%v表示显示Samba的版本号。
netbios name = SambaSERVER # 设置Samba Server的NetBIOS名称
# ----------------------- Standalone Server Options ------------------------
security = user # 指定Samba Server的验证方式,默认为user
passdb backend = tdbsam # 定义用户密码后端的模式,默认为tdbsam
#============================ Share Definitions ==============================
[fm]
comment = FM Share # 定义共享目录的注释
path = /var/ftp/fm # 定义共享目录的路径
browseable = yes # 允许该目录被显示在系统资源中
valid users = @fmusers # 仅允许组@fmusers 中的用户访问
writeable = yes # 允许共享目录可写
guest ok = no # 不允许guest账户访问
create mask = 0644 # 设置上传文件的权限,为了安全性,不给予文件执行权限
directory mask = 0755 # 设置创建目录的权限
验证smb.conf 配置文件,并重启smb和nmb服务
可以使用testparm命令测试smb.conf配置是否正确;使用命令# testparm –v 可以详细的列出smb.conf支持的配置参数;另可以使用命令# man smb.conf 查看相关参数及相关功能。
[root@node01 samba]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[fm]"
Loaded services file OK. #这里表示配置文件没啥问题
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = MYGROUP
netbios name = SAMBASERVER
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
client signing = required
idmap config * : backend = tdb
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[fm]
comment = FM Share
path = /var/ftp/fm
valid users = @fmusers
read only = No
create mask = 0644
启动smb服务和nmb服务并配置开机自启
[root@node01 samba]# service smb start
Starting SMB services: [ OK ]
[root@node01 samba]# service nmb start
Starting NMB services: [ OK ]
[root@node01 samba]# chkconfig smb on
[root@node01 samba]# chkconfig nmb on
创建fm部门普通用户及管理员账号;创建共享目录,并分配给目录相关权限
[root@node01 samba]# groupadd -r fmusers # 创建fm部普通用户分组
[root@node01 samba]# useradd -g fmusers -s /sbin/nologin -r chris # 创建FM部门员工账号,并划分为fmusers组
[root@node01 samba]# useradd -g fmusers -s /sbin/nologin -r james
[root@node01 samba]# useradd -g fmusers -s /sbin/nologin -r wade
[root@node01 samba]# useradd -g fmusers -s /sbin/nologin -r fmadmin # 创建FM部门管理账号fmadmin,并划分为fmusers组
[root@node01 samba]# mkdir /var/ftp/fm/{upload,admin} -p # 创建samba共享目录,并分配权限
[root@node01 samba]# chown fmadmin:fmusers /var/ftp/fm/ -R # 分配/var/ftp/fm 及其下目录的属主及属组
[root@node01 samba]# chmod 755 /var/ftp/fm/ -R # 分配fm目录及其下的文件为755权限
[root@node01 samba]# chmod 775 /var/ftp/fm/upload/ # 为目录/var/ftp/fm/upload 给予775权限,允许内部所有用户所有权限
配置用户登录密码
[root@node01 samba]# pdbedit -a fmadmin # 配置登陆samba账号密码
new password:
retype new password:
[root@node01 samba]# pdbedit -a chris# 配置登陆samba账号密码
new password:
retype new password:
[root@node01 samba]# pdbedit -a james# 配置登陆samba账号密码
new password:
retype new password:
[root@node01 samba]# pdbedit -a wade# 配置登陆samba账号密码
new password:
retype new password:
linux客户端测试
[root@node01 samba]# smbclient //localhost/fm -U fmadmin # 使用fmadmin管理员登陆验证
Enter fmadmin's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-51.el6]
smb: \> dir
. D 0 Wed Mar 20 13:28:38 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> ls
. D 0 Wed Mar 20 13:28:38 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> mkdir test # 创建目录测试
smb: \> ls
. D 0 Wed Mar 20 13:33:42 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
test D 0 Wed Mar 20 13:33:42 2019
upload D 0 Wed Mar 20 13:28:38 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> rmdir test # 删除目录测试
smb: \> ls
. D 0 Wed Mar 20 13:34:06 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> put smb.conf.bak # 上传文件测试
putting file smb.conf.bak as \smb.conf.bak (97780000.0 kb/s) (average inf kb/s)
smb: \> ls
. D 0 Wed Mar 20 13:34:27 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
smb.conf.bak 9778 Wed Mar 20 13:34:27 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> rename smb.conf.bak smb.txt # 修改文件名称测试
smb: \> ls
. D 0 Wed Mar 20 13:36:16 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
smb.txt 9778 Wed Mar 20 13:34:27 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> get smb.txt # 下载文件测试
getting file \smb.txt of size 9778 as smb.txt (97780000.0 KiloBytes/sec) (average inf KiloBytes/sec)
smb: \> del smb.txt # 删除文件测试
smb: \> ls
. D 0 Wed Mar 20 13:36:35 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> quit # 退出
[root@node01 samba]#
[root@node01 samba]# ls
lmhosts smb.conf smb.conf.bak smb.txt smbusers #退出后可以看到刚才下载的smb.txt
##使用chris登录,测试相关权限
[root@node01 samba]# smbclient //localhost/fm -U chris
Enter chris's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-51.el6]
smb: \> ls
. D 0 Wed Mar 20 13:43:04 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
testpermission.txt 9778 Wed Mar 20 13:42:05 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> mkdir test # 拒绝在/var/ftp/fm目录中创建目录
NT_STATUS_ACCESS_DENIED making remote directory \test
smb: \> rename testpermission.txt rename.txt
NT_STATUS_ACCESS_DENIED renaming files \testpermission.txt -> \rename.txt
smb: \> ls
. D 0 Wed Mar 20 13:43:04 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
testpermission.txt 9778 Wed Mar 20 13:42:05 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> get testpermission.txt # 允许/var/ftp/fm目录中下载文件
getting file \testpermission.txt of size 9778 as testpermission.txt (97780000.0 KiloBytes/sec) (average inf KiloBytes/sec)
smb: \> put smb.conf.bak # 拒绝在/var/ftp/fm目录中创建文件
NT_STATUS_ACCESS_DENIED opening remote file \smb.conf.bak
smb: \> ls
. D 0 Wed Mar 20 13:43:04 2019
.. D 0 Wed Mar 20 13:28:38 2019
admin D 0 Wed Mar 20 13:28:38 2019
upload D 0 Wed Mar 20 13:28:38 2019
testpermission.txt 9778 Wed Mar 20 13:42:05 2019
35418 blocks of size 524288. 25298 blocks available
smb: \> cd upload\ # 在/var/ftp/fm/upload 文件中测试创建、上传、删除、修改权限
smb: \upload\> ls
. D 0 Wed Mar 20 13:28:38 2019
.. D 0 Wed Mar 20 13:43:04 2019
35418 blocks of size 524288. 25298 blocks available
smb: \upload\> mkdir test # 允许创建目录
smb: \upload\> ls
. D 0 Wed Mar 20 13:46:29 2019
.. D 0 Wed Mar 20 13:43:04 2019
test D 0 Wed Mar 20 13:46:29 2019
35418 blocks of size 524288. 25298 blocks available
smb: \upload\> put smb.conf.bak # 允许上传文件
putting file smb.conf.bak as \upload\smb.conf.bak (97780000.0 kb/s) (average inf kb/s)
smb: \upload\> ls
. D 0 Wed Mar 20 13:46:37 2019
.. D 0 Wed Mar 20 13:43:04 2019
test D 0 Wed Mar 20 13:46:29 2019
smb.conf.bak 9778 Wed Mar 20 13:46:37 2019
35418 blocks of size 524288. 25298 blocks available
smb: \upload\> del test\ #不允许删除目录
NT_STATUS_NO_SUCH_FILE listing \upload\test\
smb: \upload\> ls
. D 0 Wed Mar 20 13:46:37 2019
.. D 0 Wed Mar 20 13:43:04 2019
test D 0 Wed Mar 20 13:46:29 2019
smb.conf.bak 9778 Wed Mar 20 13:46:37 2019
35418 blocks of size 524288. 25298 blocks available
smb: \upload\> del smb.conf.bak #允许删除文件
smb: \upload\> ls
. D 0 Wed Mar 20 13:47:41 2019
.. D 0 Wed Mar 20 13:43:04 2019
test D 0 Wed Mar 20 13:46:29 2019
35418 blocks of size 524288. 25298 blocks available
smb: \upload\>
至此,Samba服务搭建完成.
参考博文:
https://blog.51cto.com/itwish/2174270