CentOS下SAMBA的搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS下SAMBA的搭建相关的知识,希望对你有一定的参考价值。

一、Samba的由来:

早起网络中,档案数据传输大多使用FTP这个软件进行传送,FTP的弊端是无法直接修改服务器上面的数据,更新数据,只能靠来回拷贝,时间久了,容易混淆。于是就有了NFSNetworkFile System),通过共享目录的挂载实现Server上的档案数据读写更新,不过,NFS仅能让 Unix 机器沟通。在微软 ( Microsoft ) 上面也有类似的档案系统,,CLFSCommonInternet File System)。 CIFS 只能让 Windows 机器沟通。介于Windows Unix-Like 这两个不同的平台相互分享档案数据的档案系统,于是出现了Samba

二、Samba简介:

是在LinuxUNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMBServer Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBios over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

SAMBA 主要靠两种服务来实现文件和打印机的共享;

smbd:处理文件和打印机共享请求的。端口号,139,445

nmbd:处理NetBIOS名称服务请求和网络浏览功能的。端口号:137,138

了解完samba之后,下来就是如何搭建和配置。

三、搭建前准备

1、环境介绍

服务端              CentOS             ip地址

客户端             win7                            与服务器同局域网的

2、安装samba软件

[[email protected]~]# rpm -qa | grep samba  查看是否安装了samba软件,没有安装先安装

[[email protected]~]# yum search samba         先查一下有没有相关的软件

[[email protected]~]# yum install samba           找到之后,那就安装吧

3、相关设定

安装好如何启动 samba 这个服务呢?并且设定好开机就启动他!

想要了解如何启动,得要使用 rpm 去找一下软件的启动方式,然后再去处理启动的行为啰!

先查询一下启动的方式为何:

[[email protected]ost~]# 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

[[email protected]~]#  /etc/rc.d/init.d/nmb start

启动 NMB 服务:

[[email protected]~]#  /etc/rc.d/init.d/smb start

启动 SMB 服务:

设置开机自启:

[[email protected]~]# chkconfig nmb on

[[email protected]~]# chkconfig smb on

启动之后,观察有么有启动相应的port

[[email protected]~]# neITtat  -tunlp | grep ‘[sn]mb‘

技术分享

关闭SElinux

[[email protected]~]# setenforce 0

防火墙放行smb,nmb相应的端口:

编辑防火墙配置文件,放行445,137,138,139端口:

[[email protected]~]# 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

配置完保存并重启防火墙:

[[email protected]~]# service iptables save

iptables:将防火墙规则保存到/etc/sysconfig/iptables[确定]

[[email protected]~]# service iptables restart

iptables:将链设置为政策ACCEPTfilter [确定]

iptables:清除防火墙规则:[确定]

iptables:正在卸载模块:[确定]

iptables:应用防火墙规则:[确定]

这样,samba就装好了,下面就是/etc/samba/smb.conf文件的配置了,那么如何找出配置文件呢?因为我们总是需要修改配置文件啊!这样做吧:

[email protected]~]# 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、配置文件:

[[email protected]~]# 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、建立共享目录:

[[email protected]~]# cd ..

[[email protected]/]# mkdir share

[[email protected]/]# cd share

[[email protected]]#  touch samba.txt

[[email protected]]#  touch aa.txt                   

[[email protected]]#  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权限:

[[email protected]/]# chown -R nobody:nobody share/

[[email protected]/]# 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服务:

[[email protected]/]# /etc/init.d/smb restart

Shuttingdown SMB services:                                [  OK  ]

StartingSMB services:                                                   [  OK  ]

[[email protected]/]# /etc/init.d/nmb restart

Shuttingdown NMB services:                                [FAILED]

StartingNMB services:                                     [  OK  ]

D、测试smb.conf配置是否正确:

[[email protected]]# 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服务器的共享文件: 

E1CentOS系统下测试:                

[[email protected]~]# 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 命令,退出访问。

E2window 7系统下测试,结果如图:

技术分享              

 

从图中可以看出,公共目录共享成功。

技术分享

 

2、按照权限对目录进行分组(即除公共共享目录外,各组访问各组的文件或目录,以技术部门IT为例);

A、添加IT部组和用户,并赋给用户密码:

[[email protected]~]# groupadd IT

[[email protected]~]# useradd -g IT zhangsan

[[email protected]~]# useradd -g IT lisi

设置lisi的密码:

[[email protected]~]# 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的密码:

[[email protected]~]# 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 文件夹:

[[email protected]~]# cd /

[[email protected]/]# mkdir IT

[[email protected]/]# cd IT

[[email protected]]# touch IT.txt

[[email protected]]# ls -ls

total 0

0-rw-r--r-- 1 root root 0 Mar 13 18:17 IT.txt

C、将建立的两个帐户(lisizhangsan)添加到samba的账户中:

[[email protected]~]# smbpasswd -a zhangsan

New SMBpassword:

Retypenew SMB password:

Addeduser zhangsan.

[[email protected]~]# smbpasswd -a lisi

New SMBpassword:

Retypenew SMB password:

Addeduser lisi.

D、修改主配置文件如下:

 [[email protected] ~]# vi /etc/samba/smb.conf

修改security

security= user                         //共享级别,用户不需要账号和密码即可访问

添加信息:

[IT]

        comment = IT

        path = /IT

valid users = @IT

E、重新启动服务:

[[email protected]~]# service  smb restart

关闭 SMB 服务:[确定]

启动 SMB 服务:[确定]

[[email protected]~]# service  nmb restart

关闭 NMB 服务:[确定]

启动 NMB 服务:[确定]

F、在window 7下测试:

打开我的电脑,在地址栏中输入\\*.*.*.*服务器地址,弹出用户登陆框

输入用户名:lisi,密码:123456,登陆成功后,可以看到相应的目录,包括lisi自己的目录、匿名公共目录、lisizhangsan共享的非匿名目录。如下图所示:

技术分享

 

3、共享目录下的不同目录进行分组。

需求:

3.1.在系统分区时单独分一个Company的区,在该区下有以下几个文件夹:HR FMShare。在Share下又有以下几个文件夹:HRFMTools

3.2.各部门对应的文件夹由各部门自己管理,Tools文件夹由管理员维护。

3.3. HR管理员账号:hradmin;普通用户账号:hruserFM管理员账号:fmadmin;普通用户账号:fmuser

A、新建用户,并设置SMB账户密码:

添加用户:

 [[email protected] ~]# useradd -s /sbin/nologinhradmin

 [[email protected] ~]# useradd -g hradmin -s/sbin/nologin hruser

 [[email protected] ~]# useradd -s /sbin/nologinfmadmin

 [[email protected] ~]# useradd -g hradmin -s /sbin/nologinfmuser

 [[email protected] ~]# useradd -s /sbin/nologin admin

设置密码:

[[email protected]~]# smbpasswd -a hradmin

New SMBpassword:

Retypenew SMB password:

Addeduser hradmin.

[[email protected]~]# smbpasswd -a hruser

New SMBpassword:

Retypenew SMB password:

Addeduser hruser.

[[email protected]~]# smbpasswd -a fmadmin

New SMBpassword:

Retypenew SMB password:

Addeduser fmadmin.

[[email protected]~]# smbpasswd -a fmuser

New SMBpassword:

Retypenew SMB password:

Addeduser fmuser.

[[email protected]~]# smbpasswd -a admin

New SMBpassword:

Retypenew SMB password:

Addeduser admin.

为了方便记忆,在配置的时候,统一设置为:123456

B、新建目录:

[[email protected]~]# cd /

[[email protected]/]# mkdir company

[[email protected]/]# cd company

[[email protected]]# mkdir HR FM Share

[[email protected]y]# cd Share

[[email protected]]# mkdir HR FM Tools

C、更改目录属性:

[[email protected]]# chown hradmin.hradmin HR

[[email protected]]# chown fmadmin.fmadmin FM

[[email protected]]# chown admin.admin Share

[[email protected]]# cd Share

[[email protected]]# chown hradmin.hradmin HR

[[email protected]]# chown fmadmin.fmadmin FM

[[email protected]]# chown admin.admin Tools

[[email protected]]# 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服务:

[[email protected]~]# service  smb restart

关闭 SMB 服务:[确定]

启动 SMB 服务:[确定]

[[email protected]~]# service  nmb restart

关闭 NMB 服务:[确定]

启动 NMB 服务:[确定]

F、在window 7下测试:

打开我的电脑,在地址栏中输入\\*.*.*.*服务器地址,弹出用户登陆框:

在图中输入用户名:hradmin,密码:123456,可以看到相应的共享目录,如下图所示:

技术分享

 

Windows下可以通过cmd命令net use查看连接信息:


通过net use  * /delete 删除连接信息

技术分享

 

测试完毕。


本文出自 “诺克” 博客,请务必保留此出处http://9840752.blog.51cto.com/9830752/1981104

以上是关于CentOS下SAMBA的搭建的主要内容,如果未能解决你的问题,请参考以下文章

CentOS下SAMBA的搭建

centos6.5下 搭建 samba

centos7 搭建 samba,win10访问centos7共享的文件路径

centos samba服务搭建

Centos搭建samba服务器

Centos搭建Samba