一、Samba的由来:
早起网络中,档案数据传输大多使用FTP这个软件进行传送,FTP的弊端是无法直接修改服务器上面的数据,更新数据,只能靠来回拷贝,时间久了,容易混淆。于是就有了NFS(NetworkFile System),通过共享目录的挂载实现对Server上的档案数据读写更新,不过,NFS仅能让 Unix 机器沟通。在微软 ( Microsoft ) 上面也有类似的档案系统,,CLFS(CommonInternet File System)。 CIFS 只能让 Windows 机器沟通。介于Windows与 Unix-Like 这两个不同的平台相互分享档案数据的档案系统,于是出现了Samba。
二、Samba简介:
是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
SAMBA 主要靠两种服务来实现文件和打印机的共享;
smbd:处理文件和打印机共享请求的。端口号,139,445。
nmbd:处理NetBIOS名称服务请求和网络浏览功能的。端口号:137,138。
了解完samba之后,下来就是如何搭建和配置。
三、搭建前准备
1、环境介绍
服务端 CentOS ip地址
客户端 win7 与服务器同局域网的
2、安装samba软件
[root@localhost~]# rpm -qa | grep samba 查看是否安装了samba软件,没有安装先安装
[root@localhost~]# yum search samba 先查一下有没有相关的软件
[root@localhost~]# yum install samba 找到之后,那就安装吧
3、相关设定
安装好如何启动 samba 这个服务呢?并且设定好开机就启动他!
想要了解如何启动,得要使用 rpm 去找一下软件的启动方式,然后再去处理启动的行为啰!
先查询一下启动的方式为何:
[root@localhost~]# rpm -ql samba | grep ‘/etc‘
/etc/logrotate.d/samba
/etc/openldap/schema
/etc/openldap/schema/samba.schema
/etc/pam.d/samba
/etc/rc.d/init.d/nmb //就是这两位仁兄了
/etc/rc.d/init.d/smb //就是这两位仁兄了
/etc/samba/smbusers
[root@localhost~]# /etc/rc.d/init.d/nmb start
启动 NMB 服务:
[root@localhost~]# /etc/rc.d/init.d/smb start
启动 SMB 服务:
设置开机自启:
[root@localhost~]# chkconfig nmb on
[root@localhost~]# chkconfig smb on
启动之后,观察有么有启动相应的port:
[root@localhost~]# neITtat -tunlp | grep ‘[sn]mb‘
关闭SElinux:
[root@localhost~]# setenforce 0
防火墙放行smb,nmb相应的端口:
编辑防火墙配置文件,放行445,137,138,139端口:
[root@localhost~]# vi /etc/sysconfig/iptables
-A INPUT-p udp -m udp --dport 445 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 445 -j ACCEPT
-A INPUT-p udp -m udp --dport 139 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 139 -j ACCEPT
-A INPUT-p udp -m udp --dport 138 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 138 -j ACCEPT
-A INPUT-p tcp -m tcp --dport 137 -j ACCEPT
-A INPUT-p udp -m udp --dport 137 -j ACCEPT
配置完保存并重启防火墙:
[root@localhost~]# service iptables save
iptables:将防火墙规则保存到/etc/sysconfig/iptables:[确定]
[root@localhost~]# service iptables restart
iptables:将链设置为政策ACCEPT:filter [确定]
iptables:清除防火墙规则:[确定]
iptables:正在卸载模块:[确定]
iptables:应用防火墙规则:[确定]
这样,samba就装好了,下面就是/etc/samba/smb.conf文件的配置了,那么如何找出配置文件呢?因为我们总是需要修改配置文件啊!这样做吧:
root@localhost~]# rpm -qc samba samba-common
/etc/logrotate.d/samba
/etc/pam.d/samba
/etc/samba/smbusers
/etc/samba/lmhosIT
/etc/samba/smb.conf //很明显这个就是配置文件了
/etc/sysconfig/samba
一般情况下,公司或企业主要分三种情况,即:
1、公共匿名类共享目录的配置(即匿名账户访问共同的目录或者文件);
A、配置文件:
[root@localhost~]# vi /etc/samba/smb.conf
在文件中添加或者修改相关代码:
workgroup= MYGROUP //定义工作组,也就是windows中的工作组概念
serverstring = Samba Server Version %v //定义Samba服务器的简要说明
netbiosname = MYSERVER //定义windows中显示出来的计算机名称
log file= /var/log/samba/log.%m //定义Samba用户的日志文件,%m代表客户端主机//Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
security= share //共享级别,用户不需要账号和密码即可访问
[public] //设置针对的是共享目录个别的设置,只对当前的共享资源起作用
comment = Public Stuff //对共享目录的说明文件,自己可以定义说明信息
path = /share //用来指定共享的目录,必选项
public = yes //所有人可查看,等效于guest ok =yes
B、建立共享目录:
[root@localhost~]# cd ..
[root@localhost/]# mkdir share
[root@localhost/]# cd share
[root@localhostshare]# touch samba.txt
[root@localhostshare]# touch aa.txt
[root@localhostshare]# ls -ls
显示结果:
total 0
0-rw-r--r--. 1 root root 0 Mar 13 11:02 aa.txt
0 -rw-r--r--.1 root root 0 Mar 13 11:02 samba.txt
为/share目录给匿名用户授权为nobody权限:
[root@localhost/]# chown -R nobody:nobody share/
[root@localhost/]# ll /share/
total 0
-rw-r--r--.1 nobody nobody 0 Mar 13 11:02 aa.txt
-rw-r--r--.1 nobody nobody 0 Mar 13 11:02 samba.txt
C、重启smb服务:
[root@localhost/]# /etc/init.d/smb restart
Shuttingdown SMB services: [ OK ]
StartingSMB services: [ OK ]
[root@localhost/]# /etc/init.d/nmb restart
Shuttingdown NMB services: [FAILED]
StartingNMB services: [ OK ]
D、测试smb.conf配置是否正确:
[root@localhostshare]# testparm
显示结果
Load smbconfig files from /etc/samba/smb.conf
rlimit_max:increasing rlimit_max (1024) to minimum Windows limit (16384)
Processingsection "[homes]"
Processingsection "[printers]"
Processingsection "[public]"
Processingsection "[IT]"
Unknownparameter encountered: "valid user"
Ignoringunknown parameter "valid user"
Processingsection "[HR]"
Processingsection "[FM]"
Processingsection "[share]"
Loadedservices file OK.
Serverrole: ROLE_STANDALONE
Pressenter to see a dump of your service definitions
[global]
workgroup = MYGROUP
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
[public]
comment = Public Stuff
path = /share
guest ok = Yes
[IT]
comment = IT
path = /IT
E、访问Samba服务器的共享文件:
E1:CentOS系统下测试:
[root@localhost~]# smbclient //*.*.*.*/public
Enterroot‘s password:
Anonymouslogin successful
Domain=[MYGROUP]OS=[Unix] Server=[Samba 3.6.23-45.el6_9]
smb:\> ls
. D 0 Sun Nov 12 03:30:29 2017
.. DR 0 Sun Nov 12 08:27:23 2017
aa.txt 0 Sun Nov 12 03:30:29 2017
samba.txt 0 Sun Nov 12 03:30:24 2017
61970 blocks of size 32768.46296 blocks available
smb:\>
在此输入 q 命令,退出访问。
E2:window 7系统下测试,结果如图:
从图中可以看出,公共目录共享成功。
2、按照权限对目录进行分组(即除公共共享目录外,各组访问各组的文件或目录,以技术部门IT为例);
A、添加IT部组和用户,并赋给用户密码:
[root@localhost~]# groupadd IT
[root@localhost~]# useradd -g IT zhangsan
[root@localhost~]# useradd -g IT lisi
设置lisi的密码:
[root@localhost~]# passwd lisi
显示结果:
Changingpassword for user lisi.
Newpassword:
在此输入密码:123456,回车:
BADPASSWORD: it is too short
BADPASSWORD: is too simple
Retypenew password:
再次输入密码:123456,回车:
passwd:all authentication tokens updated successfully.
设置zhangsan的密码:
[root@localhost~]# passwd zhangsan
显示结果:
Changingpassword for user zhangsan.
Newpassword:
在此输入密码:123456,回车:
BADPASSWORD: it is too short
BADPASSWORD: is too simple
Retypenew password:
再次输入密码:123456,回车:
passwd:all authentication tokens updated successfully.
B、在根目录下建立/IT 文件夹:
[root@localhost~]# cd /
[root@localhost/]# mkdir IT
[root@localhost/]# cd IT
[root@sambaIT]# touch IT.txt
[root@sambaIT]# ls -ls
total 0
0-rw-r--r-- 1 root root 0 Mar 13 18:17 IT.txt
C、将建立的两个帐户(lisi、zhangsan)添加到samba的账户中:
[root@localhost~]# smbpasswd -a zhangsan
New SMBpassword:
Retypenew SMB password:
Addeduser zhangsan.
[root@localhost~]# smbpasswd -a lisi
New SMBpassword:
Retypenew SMB password:
Addeduser lisi.
D、修改主配置文件如下:
[root@localhost ~]# vi /etc/samba/smb.conf
修改security:
security= user //共享级别,用户不需要账号和密码即可访问
添加信息:
[IT]
comment = IT
path = /IT
valid users = @IT
E、重新启动服务:
[root@localhost~]# service smb restart
关闭 SMB 服务:[确定]
启动 SMB 服务:[确定]
[root@localhost~]# service nmb restart
关闭 NMB 服务:[确定]
启动 NMB 服务:[确定]
F、在window 7下测试:
打开我的电脑,在地址栏中输入\\*.*.*.*服务器地址,弹出用户登陆框:
输入用户名:lisi,密码:123456,登陆成功后,可以看到相应的目录,包括lisi自己的目录、匿名公共目录、lisi与zhangsan共享的非匿名目录。如下图所示:
3、共享目录下的不同目录进行分组。
需求:
3.1.在系统分区时单独分一个Company的区,在该区下有以下几个文件夹:HR、 FM和Share。在Share下又有以下几个文件夹:HR、FM和Tools。
3.2.各部门对应的文件夹由各部门自己管理,Tools文件夹由管理员维护。
3.3. HR管理员账号:hradmin;普通用户账号:hruser。FM管理员账号:fmadmin;普通用户账号:fmuser。
A、新建用户,并设置SMB账户密码:
添加用户:
[root@samba ~]# useradd -s /sbin/nologinhradmin
[root@samba ~]# useradd -g hradmin -s/sbin/nologin hruser
[root@samba ~]# useradd -s /sbin/nologinfmadmin
[root@samba ~]# useradd -g hradmin -s /sbin/nologinfmuser
[root@samba ~]# useradd -s /sbin/nologin admin
设置密码:
[root@samba~]# smbpasswd -a hradmin
New SMBpassword:
Retypenew SMB password:
Addeduser hradmin.
[root@samba~]# smbpasswd -a hruser
New SMBpassword:
Retypenew SMB password:
Addeduser hruser.
[root@samba~]# smbpasswd -a fmadmin
New SMBpassword:
Retypenew SMB password:
Addeduser fmadmin.
[root@samba~]# smbpasswd -a fmuser
New SMBpassword:
Retypenew SMB password:
Addeduser fmuser.
[root@samba~]# smbpasswd -a admin
New SMBpassword:
Retypenew SMB password:
Addeduser admin.
为了方便记忆,在配置的时候,统一设置为:123456。
B、新建目录:
[root@samba~]# cd /
[root@samba/]# mkdir company
[root@samba/]# cd company
[root@sambacompany]# mkdir HR FM Share
[root@sambacompany]# cd Share
[root@sambaShare]# mkdir HR FM Tools
C、更改目录属性:
[root@sambacompany]# chown hradmin.hradmin HR
[root@sambacompany]# chown fmadmin.fmadmin FM
[root@sambacompany]# chown admin.admin Share
[root@sambacompany]# cd Share
[root@sambaShare]# chown hradmin.hradmin HR
[root@sambaShare]# chown fmadmin.fmadmin FM
[root@sambaShare]# chown admin.admin Tools
[root@sambaShare]# chmod 1775 HR FM
D、修改主配置文件如下:
security = user
passdbbackend = tdbsam
[HR]
comment = This is a directory of HR.
path = /company/HR/
public = no
adminusers = hradmin
validusers = @hradmin
writable = yes
createmask = 0750
directorymask = 0750
[FM]
comment = This is a directory of FM.
path = /company/FM/
public = no
adminusers = fmadmin
validusers = @fmadmin
writable = yes
createmask = 0750
directorymask = 0750
[share]
comment = This is a share directory.
path = /company/share/
public = no
validusers = admin,@hradmin,@fmadmin
writable = yes
createmask = 0755
directorymask = 0755
E、重新启动samba服务:
[root@localhost~]# service smb restart
关闭 SMB 服务:[确定]
启动 SMB 服务:[确定]
[root@localhost~]# service nmb restart
关闭 NMB 服务:[确定]
启动 NMB 服务:[确定]
F、在window 7下测试:
打开我的电脑,在地址栏中输入\\*.*.*.*服务器地址,弹出用户登陆框:
在图中输入用户名:hradmin,密码:123456,可以看到相应的共享目录,如下图所示:
Windows下可以通过cmd命令net use查看连接信息:
通过net use * /delete 删除连接信息
测试完毕。
本文出自 “诺克” 博客,请务必保留此出处http://9840752.blog.51cto.com/9830752/1981104
原文地址:http://9840752.blog.51cto.com/9830752/1981104