Samba最详细使用过程

Samba最详细使用过程

2023年6月25日发(作者:)

Samba最详细使⽤过程 概述Samba是⼀套使⽤SMB(Server Message Block)协议的应⽤程序, 通过⽀持这个协议, Samba允许Linux服务器与Windows系统之间进⾏通信,使跨平台的互访成为可能。Samba采⽤C/S模式, 其⼯作机制是让NetBIOS( Windows ⽹上邻居的通信协议)和SMB两个协议运⾏于TCP/IP通信协议之上,并且⽤NetBEUI协议让Windows在“⽹上邻居”中能浏览Linux服务器。

Samba服务器包括两个后台应⽤程序: Smbd 和 Nmbd。Smbd 是Samba的核⼼, 主要负责建⽴ Linux Samba服务器与Samba客户机之间的对话, 验证⽤户⾝份并提供对⽂件和打印系统的访问; Nmbd主要负责对外发布Linux Samba服务器可以提供的NetBIOS名称和浏览服务,使Windows⽤户可以在“⽹上邻居”中浏览Linux Samba服务器中共享的资源。另外Samba还包括⼀些管理⼯具, 如 smb-client, smbmount, testparm, Smbpasswd 等程序。

Samba服务器可实现如下功能:WINS和DNS服务; ⽹络浏览服务; Linux和Windows域之间的认证和授权; UNICODE字符集和域名映射;满⾜CIFS协议的UNIX共享等。

2. Samba的主要应⽤SAMBA的主要⽬的就是⽤来沟通Windows与Unix这两种不同的作业平台。主要应⽤:共享档案与打印机服务;提供⾝份认证;提供Windows⽹络上的主机名称解析(NetBIOS name)。

3. NetBIOS通讯协议SAMBA是架构在NetBIOS(Network Basic Input/Output System,NetBIOS)这个通讯协议上的。NetBIOS是⼀个让同⼀局域⽹络内计算机进⾏⽹络连结的⼀个通讯协议。因此,它是⽆法跨路由的 (Router/Gateway)。NetBIOS over TCP/IP是将NetBIOS协议封装在TCP/IP中,这样NetBIOS就可以跨路由传输了。

4. Samba的两个进程SAMBA主机使⽤两个进程来管理两个不同的服务:smbd:⽤来处理⽂件和打印服务请求。nmbd:⽤来处理NetBIOS名称服务请求和⽹络浏览功能。当我们启动了SAMBA之后,主机系统就会启动137,138,139这三个port,并且同时会有TCP/UDP的监听服务。

5. 两种联机模式两种最常见的局域⽹联机模式:peer/peer及domain model。peer/peer:局域⽹内各PC机之间独⽴运⾏,适⽤于⼩型⽹络。domain model:局域⽹内各PC机统⼀通过PDC主机认证(LDAP),以获取适当的权限,适⽤于⼤中型⽹络。

6. Samba的⼏个主要配置⽂件(/etc/samba):最主要的配置⽂件,分为[global]和[Share Definitions]两个部分。lmhosts:对应NetBIOS Name与该主机的IP,⼀般Samba在启动时就能捕捉到LAN中相关计算机NetBIOS Name对应的IP,因此,这个配置⽂件⼀般不⽤设置。smbpasswd:这个⽂件默认不存在,它是Samba预设的使⽤者密码对应表。

7. Samba的⼏个主要命令smbpasswd:⽤来设置Samba⽤户的帐号和密码。smbclient:⽤来查看别的Linux主机的共享。也可以在⾃⼰的Samba主机上使⽤,⽤来查看设置是否成功。smbmount:⽤来将Samba服务器共享的⽂档和⽬录挂载到⾃⼰的Linux主机上。testparm:⽤来检查是否有错误。 8. 的⼏个常⽤变量①客户端变量-----------------------------------------------------------------------------%a | 客户端的体系结构(例如Samba,NT,Win98,或者Unknown)%I | 客户端的IP地址(例如:192.168.220.100)%m | 客户端的NetBios名%M | 客户端的DNS名------------------------------------------------------------------------------②⽤户变量------------------------------------------------------------------------------%g | %u的基本组%G | %U的基本组%H | %u的Home⽬录%u | 当前的unix⽤户名%U | 被请求的客户端⽤户名(不总是被samba使⽤)------------------------------------------------------------------------------③共享变量------------------------------------------------------------------------------%p | 如果和%p不同,automounter的路径对应共享的根⽬录%P | 当前共享的根⽬录%S | 但前共享的名称-------------------------------------------------------------------------------④服务器变量-------------------------------------------------------------------------------%d | 当前服务器进程的ID%h | Samba服务器的DNS主机名%L | Samba服务器的netbios名%N | Home⽬录服务器,来⾃automount的映射%v | samba版本-------------------------------------------------------------------------------⑤其他变量-------------------------------------------------------------------------------%R | 经过协商的SMB协议%T | 当前的⽇期和时间

9. 四种安全等级①security=share:⽤户访问Samba服务器不需要提供⽤户名和⼝令, 安全性能较低。②security=user:Samba服务器默认的安全等级, 每⼀个共享⽬录只能被⼀定的⽤户访问, 并由Samba服务器负责检查账号和密码的正确性。③security=server:服务器安全级别,依靠其他Windows NT/2000或Samba服务器来验证⽤户的账号和密码,是⼀种代理验证。此种安全模式下,系统管理员可以把所有的Windows⽤户和⼝令集中到⼀个NT系统上,使⽤Windows NT进⾏Samba认证, 远程服务器可以⾃动认证全部⽤户和⼝令,如果认证失败,Samba将使⽤⽤户级安全模式作为替代的⽅式。④security=domain:域安全级别,使⽤主域控制器(PDC)来完成认证。

1.系统环境:[root@linux-01 ~]# cat /etc/redhat-releaseCentOS release 5.5 (Final)[root@linux-01 ~]# uname -aLinux linux-01 5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux[root@linux-01 ~]# ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:0C:29:B3:43:86inet addr:192.168.1.120 Bcast:255.255.255.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:feb3:4386/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:13054 errors:0 dropped:0 overruns:0 frame:0TX packets:13432 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:11036410 (10.5 MiB) TX bytes:2629445 (2.5 MiB)

[root@linux-01 ~]# yum -y install samba samba-client samba-swat

2.安装包说明:

6.x86_64 //主要提供samba服务器的设置⽂件与设置⽂件语法检验程序6.x86_64 //客户端软件,主要提供linux主机作为客户端时,所需要的⼯具指令集6.x86_64 //基于https协议的samba服务器web配置界⾯6.x86_64 //服务器端软件,主要提供samba服务器的守护程序,共享⽂档,⽇志的轮替,开机默认选项

Samba服务器安装完毕,会⽣成配置⽂件⽬录/etc/samba和其它⼀些samba可执⾏命令⼯具,/etc/samba/是samba的核⼼配置⽂件,/etc/init.d/smb是samba的启动/关闭⽂件。

3.启动smb服务器:[root@linux-01 ~]# /etc/init.d/smb start启动 SMB 服务: [确定]启动 NMB 服务: [确定][root@linux-01 ~]# /etc/init.d/smb statussmbd (pid 4138) 正在运⾏...nmbd (pid 4141) 正在运⾏...

4.设置开机⾃启动:[root@linux-01 ~]# chkconfig --add smb[root@linux-01 ~]# chkconfig --level 345 smb on[root@linux-01 ~]# chkconfig --list|grep smbsmb 0:关闭 1:关闭 2:关闭 3:启⽤ 4:启⽤ 5:启⽤ 6:关闭

服务器配置参数详解:Samba的主配置⽂件为/etc/samba/

主配置⽂件由两部分构成

Global Settings (55-245⾏)  全局设置都是与Samba服务整体运⾏环境有关的选项,它的设置项⽬是针对所有共享资源的。 Share Definitions (246-尾⾏)  共享设置针对的是共享⽬录个别的设置,只对当前的共享资源起作⽤。

1)全局参数:

#==================Global Settings ===================[global]

config file = /usr/local/samba/lib/.%m说明:config file可以让你使⽤另⼀个配置⽂件来覆盖缺省的配置⽂件。如果⽂件不存在,则该项⽆效。这个参数很有⽤,可以使得samba配置更灵活,可以让⼀台 samba服务器模拟多台不同配置的服务器。⽐如,你想让PC1(主机名)这台电脑在访问Samba Server时使⽤它⾃⼰的配置⽂件,那么先在/etc/samba/host/下为PC1配置⼀个名为1的⽂件,然后在 中加⼊:config file = /etc/samba/host/.%m。这样当PC1请求连接Samba Server时,.%m就被替换成1。这样,对于PC1来说,它所使⽤的Samba服务就是由 1定义的,⽽其他机器访问Samba Server则还是应⽤。

workgroup = WORKGROUP说明:设定 Samba Server 所要加⼊的⼯作组或者域。

server string = Samba Server Version %v说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表⽰显⽰Samba的版本号。

netbios name = smbserver说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使⽤该服务器的DNS名称的第⼀部分。netbios name和workgroup名字不要设置成⼀样了。

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24说明:设置Samba Server监听哪些⽹卡,可以写⽹卡名,也可以写该⽹卡的IP地址。

hosts allow = 127. 192.168.1. 192.168.10.1说明:表⽰允许连接到Samba Server的客户端,多个参数以空格隔开。可以⽤⼀个IP表⽰,也可以⽤⼀个⽹段表⽰。hosts deny 与hosts allow 刚好相反。例如:hosts allow=172.17.2.50表⽰容许来⾃172.17.2.*的主机连接,但排除172.17.2.50hosts allow=172.17.2.0/255.255.0.0表⽰容许来⾃172.17.2.0/255.255.0.0⼦⽹中的所有主机连接hosts allow=M1,M2表⽰容许来⾃M1和M2两台计算机连接hosts allow=@pega表⽰容许来⾃pega⽹域的所有计算机连接

max connections = 0说明:max connections⽤来指定连接Samba Server的最⼤连接数⽬。如果超出连接数⽬,则新的连接请求将被拒绝。0表⽰不限制。

deadtime = 0说明:deadtime⽤来设置断掉⼀个没有打开任何⽂件的连接的时间。单位是分钟,0代表Samba Server不⾃动切断任何连接。

time server = yes/no说明:time server⽤来设置让nmdb成为windows客户端的时间服务器。 log file = /var/log/samba/log.%m说明:设置Samba Server⽇志⽂件的存储位置以及⽇志⽂件名称。在⽂件名后加个宏%m(主机名),表⽰对每台访问Samba Server的机器都单独记录⼀个⽇志⽂件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba⽬录下留下1和2两个⽇志⽂件。

max log size = 50说明:设置Samba Server⽇志⽂件的最⼤容量,单位为kB,0代表不限制。

security = user说明:设置⽤户访问Samba Server的验证⽅式,⼀共有四种验证⽅式。1. share:⽤户访问Samba Server不需要提供⽤户名和⼝令, 安全性能较低。2. user:Samba Server共享⽬录只能被授权的⽤户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建⽴。3. server:依靠其他Windows NT/2000或Samba Server来验证⽤户的账号和密码,是⼀种代理验证。此种安全模式下,系统管理员可以把所有的Windows⽤户和⼝令集中到⼀个NT系统上,使⽤ Windows NT进⾏Samba认证, 远程服务器可以⾃动认证全部⽤户和⼝令,如果认证失败,Samba将使⽤⽤户级安全模式作为替代的⽅式。4. domain:域安全级别,使⽤主域控制器(PDC)来完成认证。

passdb backend = tdbsam说明:passdb backend就是⽤户后台的意思。⽬前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。swd:该⽅式是使⽤smb⾃⼰的⼯具smbpasswd来给系统⽤户(真实⽤户或者虚拟⽤户)设置⼀个Samba密码,客户端就⽤这个密码来访问Samba的资源。smbpasswd⽂件默认在/etc/samba⽬录下,不过有时候要⼿⼯建⽴该⽂件。: 该⽅式则是使⽤⼀个数据库⽂件来建⽴⽤户数据库。数据库⽂件叫,默认在/etc/samba⽬录下。⽤户数据库 可以使⽤smbpasswd –a来建⽴Samba⽤户,不过要建⽴的Samba⽤户必须先是系统⽤户。我们也可以使⽤pdbedit命令来建⽴Samba账户。pdbedit命令的 参数很多,我们列出⼏个主要的。  pdbedit –a username:新建Samba账户。  pdbedit –x username:删除Samba账户。  pdbedit –L:列出Samba⽤户列表,读取数据库⽂件。  pdbedit –Lv:列出Samba⽤户列表的详细信息。  pdbedit –c “[D]” –u username:暂停该Samba⽤户的账号。  pdbedit –c “[]” –u username:恢复该Samba⽤户的账号。m:该⽅式则是基于LDAP的账户管理⽅式来验证⽤户。⾸先要建⽴LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”

encrypt passwords = yes/no说明:是否将认证密码加密。因为现在windows操作系统都是使⽤加密密码,所以⼀般要开启此项。不过配置⽂件默认已开启。

smb passwd file = /etc/samba/smbpasswd说明:⽤来定义samba⽤户的密码⽂件。smbpasswd⽂件如果没有那就要⼿⼯新建。

username map = /etc/samba/smbusers说明:⽤来定义⽤户名映射,⽐如可以将root换成administrator、admin等。不过要事先在smbusers⽂件中定义好。⽐如:root = administrator admin,这样就可以⽤administrator或admin这两个⽤户来代替root登陆Samba Server,更贴近windows⽤户的习惯。

guest account = nobody说明:⽤来设置guest⽤户名。

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192说明:⽤来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。

domain master = yes/no说明:设置Samba服务器是否要成为⽹域主浏览器,⽹域主浏览器可以管理跨⼦⽹域的浏览服务。 local master = yes/no说明:local master⽤来指定Samba Server是否试图成为本地⽹域主浏览器。如果设为no,则永远不会成为本地⽹域主浏览器。但是即使设置为yes,也不等于该Samba Server就能成为主浏览器,还需要参加选举。

preferred master = yes/no说明:设置Samba Server⼀开机就强迫进⾏主浏览器选举,可以提⾼Samba Server成为本地⽹域主浏览器的机会。如果该参数指定为yes时,最好把domain master也指定为yes。使⽤该参数时要注意:如果在本Samba Server所在的⼦⽹有其他的机器(不论是windows NT还是其他Samba Server)也指定为⾸要主浏览器时,那么这些机器将会因为争夺主浏览器⽽在⽹络上⼤发⼴播,影响⽹络性能。如果同⼀个区域内有多台Samba Server,将上⾯三个参数设定在⼀台即可。

os level = 200说明:设置samba服务器的os level。该参数决定Samba Server是否有机会成为本地⽹域的主浏览器。os level从0到255,winNT的os level是32,win95/98的os level是1。Windows2000的os level是64。如果设置为0,则意味着Samba Server将失去浏览选择。如果想让Samba Server成为PDC,那么将它的os level值设⼤些。

domain logons = yes/no说明:设置Samba Server是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。

logon script = %说明:当使⽤者⽤windows客户端登陆,那么Samba将提供⼀个登陆档。如果设置成%,那么就要为每个⽤户提供⼀个登陆档。如果⼈⽐较多, 那就⽐较⿇烦。可以设置成⼀个具体的⽂件名,⽐如,那么⽤户登陆后都会去执⾏,⽽不⽤为每个⽤户设定⼀个登陆档了。 这个⽂件要放置在[netlogon]的path设置的⽬录路径下。

wins support = yes/no说明:设置samba服务器是否提供wins服务。

wins server = wins服务器IP地址说明:设置Samba Server是否使⽤别的wins服务器提供wins服务。

wins proxy = yes/no说明:设置Samba Server是否开启wins代理服务。

dns proxy = yes/no说明:设置Samba Server是否开启dns代理服务。

load printers = yes/no说明:设置是否在启动Samba时就共享打印机。

printcap name = cups说明:设置共享打印机的配置⽂件。

printing = cups说明:设置Samba共享打印机的类型。现在⽀持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx

2)共享参数:#================== Share Definitions ==================[共享名] comment = 任意字符串说明:comment是对该共享的描述,可以是任意字符串。

path = 共享⽬录路径说 明:path⽤来指定共享⽬录的路径。可以⽤%u、%m这样的宏来代替路径⾥的unix⽤户和客户机的Netbios名,⽤宏表⽰主要⽤于[homes] 共享域。例如:如果我们不打算⽤home段做为客户的共享,⽽是在/home/share/下为每个Linux⽤户以他的⽤户名建个⽬录,作为他的共享⽬ 录,这样path就可以写成:path = /home/share/%u; 。⽤户在连接到这共享时具体的路径会被他的⽤户名代替,要注意这个⽤户名路径⼀定要存在,否则,客户机在访问时会找不到⽹络路径。同样,如果我们不是以⽤ 户来划分⽬录,⽽是以客户机来划分⽬录,为⽹络上每台可以访问samba的机器都各⾃建个以它的netbios名的路径,作为不同机器的共享资源,就可以 这样写:path = /home/share/%m 。

browseable = yes/no说明:browseable⽤来指定该共享是否可以浏览。

writable = yes/no说明:writable⽤来指定该共享路径是否可写。

available = yes/no说明:available⽤来指定该共享资源是否可⽤。

admin users = 该共享的管理者说明:admin users⽤来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果⽤户验证⽅式设置成“security=share”时,此项⽆效。例如:admin users =david,sandy(多个⽤户中间⽤逗号隔开)。

valid users = 允许访问该共享的⽤户说明:valid users⽤来指定允许访问该共享资源的⽤户。例如:valid users = david,@dave,@tech(多个⽤户或者组中间⽤逗号隔开,如果要加⼊⼀个组就⽤“@组名”表⽰。)

invalid users = 禁⽌访问该共享的⽤户说明:invalid users⽤来指定不允许访问该共享资源的⽤户。例如:invalid users = root,@bob(多个⽤户或者组中间⽤逗号隔开。)

write list = 允许写⼊该共享的⽤户说明:write list⽤来指定可以在该共享下写⼊⽂件的⽤户。例如:write list = david,@dave

public = yes/no说明:public⽤来指定该共享是否允许guest账户访问。

guest ok = yes/no说明:意义同“public”。

测试命令:

Samba安装好后,使⽤testparm命令可以测试配置是否正确。使⽤testparm –v命令可以详细的列出⽀持的配置参数。如下所⽰:[root@linux-01 ~]# testparm --VLoad smb config files from /etc/samba/ocessing section "[homes]"Processing section "[printers]"Loaded services file role: ROLE_STANDALONEPress enter to see a dump of your service definitions

[global]workgroup = MYGROUPserver string = Samba Server Version %vpassdb backend = tdbsamcups options = raw

[homes]comment = Home Directoriesread only = Nobrowseable = No

[printers]comment = All Printerspath = /var/spool/sambaprintable = Yesbrowseable = No

默认的有很多个选项和内容,⽐较繁琐,这⾥我们按照案例来讲解配置选项,先备份⼀下⾃⼰的⽂件,然后重新建⽴⼀个。[root@linux-01 ~]# cp -r /etc/samba/ /etc/samba/-bak

7.案例⼀、公司现有⼀个⼯作组ops,需要添加samba服务器作为⽂件服务器,并发布共享⽬录/share,共享名为public,此共享⽬录允许所有员⼯访问。

a. 修改samba的主配置⽂件如下:[root@linux-01 ~]# vim /etc/samba/ +74#======================= Global Settings =====================================[global] #该设置与Samba服务整体运⾏环境有关,它的设置项⽬针对所有共享资源workgroup = ops #定义⼯作组,也就是windows中的⼯作组概念server string = Samba Server Version %v #定义Samba服务器的简要说明netbios name = ops #定义windows中显⽰出来的计算机名称

# --------------------------- Logging Options -----------------------------## Log File let you specify where to put logs and how to split them file = /var/log/samba/log.%m #定义Samba⽤户的⽇志⽂件,%m代表客户端主机名#Samba服务器会在指定的⽬录中为每个登陆主机建⽴

# ----------------------- Standalone Server Options ------------------------## Scurity can be set to user, share(deprecated) or server(deprecated)security = share #共享级别,⽤户不需要账号和密码即可访问

#============================ Share Definitions ==============================

[public] #设置针对的是共享⽬录个别的设置,只对当前的共享资源起作⽤comment = Public Stuff #对共享⽬录的说明⽂件,⾃⼰可以定义说明信息path = /share #⽤来指定共享的⽬录,必选项public = yes #所有⼈可查看,等效于guest ok = yes

b. 建⽴共享⽬录,上⾯设置了共享⽬录为/share,下⾯就需要建⽴/share⽬录:[root@linux-01 ~]# mkdir -p /share[root@linux-01 ~]# cd /share/[root@linux-01 share]# touch [root@linux-01 share]# ll总计 8-rw-r--r-- 1 root root 0 06-23 20:12 -rw-r--r-- 1 root root 0 06-23 20:12

由于要设置匿名⽤户可以下载或上传共享⽂件,所以要给/share⽬录授权为nobody权限。[root@linux-01 share]# chown -R nobody:nobody /share/

c.重启smb服务:[root@linux-01 share]# /etc/init.d/smb restart关闭 SMB 服务: [确定]关闭 NMB 服务: [确定]启动 SMB 服务: [确定]启动 NMB 服务: [确定]

d. 测试配置是否正确:[root@linux-01 share]# setenforce 0[root@linux-01 share]# /etc/init.d/iptables stop[root@linux-01 share]# testparmLoad smb config files from /etc/samba/ocessing section "[homes]"Processing section "[printers]"Processing section "[public]"Loaded services file role: ROLE_STANDALONEPress enter to see a dump of your service definitions

e. 访问Samba服务器的共享⽂件(在linux下):[root@linux-01 share]# smbclient //192.168.1.120/publicPassword: #密码为空Domain=[OPS] OS=[Unix] Server=[Samba 5_8]Server not using user level security and no password : > ls. D 0 Sun Jun 23 20:12:21 2013.. D 0 Sun Jun 23 20:12:04 0 Sun Jun 23 20:12:21 0 Sun Jun 23 20:12:21 2013

56593 blocks of size 524288. 50873 blocks availablesmb: > quit #退出smb客户端

在windows下测试://192.168.1.120即可

8.案例⼆、公司现有多个部门,因⼯作需要,将dba部的资料存放在samba服务器的/dba ⽬录中集中管理,以便dba⼈员浏览,并且该⽬录只允许dba部员⼯访问。a. 添加dba部组和⽤户[root@linux-01 share]# groupadd dba[root@linux-01 share]# useradd -g dba nosql[root@linux-01 share]# useradd -g dba redis[root@linux-01 share]# useradd -g dba memcache[root@linux-01 share]# passwd nosqlChanging password for user UNIX password:BAD PASSWORD: it is too simplistic/systematicRetype new UNIX password:passwd: all authentication tokens updated successfully.[root@linux-01 share]# passwd redisChanging password for user UNIX password:BAD PASSWORD: it is WAY too shortRetype new UNIX password:passwd: all authentication tokens updated successfully.[root@linux-01 share]# passwd memcacheChanging password for user UNIX password:BAD PASSWORD: it is too shortRetype new UNIX password:passwd: all authentication tokens updated successfully.#创建了⼀个dba组,⼜创建了3个⽤户nosql,redis,memcache,并加⼊到dba组⾥。#其中:nosql密码为123456#redis密码为:1234#memcache密码为:123#提⽰:我这⾥是测试,才简便密码,⽣产环境,密码必须复杂化,更便于安全性的增加。

b. 在根⽬录下建⽴/dba⽬录[root@linux-01 share]# mkdir -p /dba;cd /dba[root@linux-01 dba]# touch tt_server;touch mysql_server;ll总计 8-rw-r--r-- 1 root root 0 06-23 20:25 mysql_server-rw-r--r-- 1 root root 0 06-23 20:25 tt_server

c. 将刚才建⽴的三个帐户添加到samba的账户中[root@linux-01 dba]# smbpasswd -a nosqlNew SMB password:Retype new SMB password:Added user nosql.

[root@linux-01 dba]# smbpasswd -a redisNew SMB password:Retype new SMB password:Added user redis.

[root@linux-01 dba]# smbpasswd -a memcacheNew SMB password:Retype new SMB password:Added user memcache.

d. 修改主配置⽂件如下:[root@linux-01 dba]# vim /etc/samba/

# ----------------------- Standalone Server Options ------------------------## Security can be set to user, share(deprecated) or server(deprecated)## Backend to store user information in. New installations should# use either tdbsam or ldapsam. smbpasswd is available for backwards# compatibility. tdbsam requires no further configuration.

security = user #更改为user⽤户级别,由提供服务的Samba服务器负责检查账户和密码。

#============================ Share Definitions ==============================[dba]comment = dbapath = /dbavalid users = @dba

[root@linux-01 dba]# /etc/init.d/smb restart关闭 SMB 服务: [确定]关闭 NMB 服务: [确定]启动 SMB 服务: [确定]启动 NMB 服务: [确定]

#测试:[root@linux-01 dba]# smbclient //192.168.1.120/dbaPassword: #空密码进⼊,报错了。Anonymous login successfulDomain=[OPS] OS=[Unix] Server=[Samba 5_8]tree connect failed: NT_STATUS_ACCESS_DENIED

#接下来,是dba组⾥的三个⽤户进⼊测试:[root@linux-01 dba]# smbclient //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]smb: > ls. D 0 Sun Jun 23 20:25:57 2013.. D 0 Sun Jun 23 20:25:22 2013tt_server 0 Sun Jun 23 20:25:57 2013mysql_server 0 Sun Jun 23 20:25:57 2013

56593 blocks of size 524288. 50846 blocks availablesmb: > quit

[root@linux-01 dba]# smbclient //192.168.1.120/dba -U redis%1234Domain=[OPS] OS=[Unix] Server=[Samba 5_8]smb: > ls. D 0 Sun Jun 23 20:25:57 2013.. D 0 Sun Jun 23 20:25:22 2013tt_server 0 Sun Jun 23 20:25:57 2013mysql_server 0 Sun Jun 23 20:25:57 2013

56593 blocks of size 524288. 50846 blocks availablesmb: > quit

[root@linux-01 dba]# smbclient //192.168.1.120/dba -U memcache%123Domain=[OPS] OS=[Unix] Server=[Samba 5_8]smb: > ls. D 0 Sun Jun 23 20:25:57 2013.. D 0 Sun Jun 23 20:25:22 2013tt_server 0 Sun Jun 23 20:25:57 2013mysql_server 0 Sun Jun 23 20:25:57 2013 56593 blocks of size 524288. 50846 blocks availablesmb: > quit

#或者还可以这样测试:[root@linux-01 dba]# smbclient -c "ls" //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]. D 0 Sun Jun 23 20:25:57 2013.. D 0 Sun Jun 23 20:25:22 2013tt_server 0 Sun Jun 23 20:25:57 2013mysql_server 0 Sun Jun 23 20:25:57 2013

56593 blocks of size 524288. 50846 blocks available

#列出某个IP地址所提供的共享⽂件夹:[root@linux-01 dba]# smbclient -L //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]

Sharename Type Comment--------- ---- -------public Disk Public Stuffdba Disk dbaIPC$ IPC IPC Service (Samba Server Version 5_8)nosql Disk Home DirectoriesDomain=[OPS] OS=[Unix] Server=[Samba 5_8]

Server Comment--------- -------OPS Samba Server Version 5_8

Workgroup Master--------- -------OPS OPSWORKGROUP A-THINK

#执⾏smbclient命令成功后,进⼊smbclient环境,出现提⽰符: smb:>#这⾥有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。

如下所⽰:[root@linux-01 dba]# smbclient -c "mkdir oracle" //192.168.1.120/dba -U nosql%123456如果⽤户共享//192.168.1.120/tmp的⽅式是只读的,会提⽰

Domain=[OPS] OS=[Unix] Server=[Samba 5_8]NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory oracle

解决办法:[root@linux-01 /]# chown -R dba:nosql dba[root@linux-01 /]# vim /etc/samba/ #更改如下的:[dba]comment = dbapublic = nopath = /dbavalid users = @dbawritable = yescreate mask = 0755directory mask = 0755

[root@linux-01 /]# /etc/init.d/smb restart关闭 SMB 服务: [确定]关闭 NMB 服务: [确定]启动 SMB 服务: [确定]启动 NMB 服务: [确定]

[root@linux-01 /]# smbclient -c "mkdir oracle" //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8][root@linux-01 /]# smbclient -c "ls" //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]. D 0 Sun Jun 23 21:30:12 2013.. D 0 Sun Jun 23 20:25:22 2013oracle D 0 Sun Jun 23 21:30:12 2013tt_server 0 Sun Jun 23 20:25:57 2013mysql_server 0 Sun Jun 23 20:25:57 2013

56593 blocks of size 524288. 50846 blocks available

#下⾯再演⽰上传,下载,删除命令:[root@linux-01 /]# cd /dba/oracle[root@linux-01 oracle]# ll总计 0[root@linux-01 oracle]# touch mysql[root@linux-01 oracle]# ll总计 4-rw-r--r-- 1 root root 0 06-23 21:37 mysql[root@linux-01 oracle]# smbclient -c "cd oracle;ls" //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]. D 0 Sun Jun 23 21:37:27 2013.. D 0 Sun Jun 23 21:35:50 2013mysql 0 Sun Jun 23 21:37:27 2013 56593 blocks of size 524288. 50846 blocks available

#下载命令(get):[root@linux-01 oracle]# cd /opt/;ls[root@linux-01 opt]# smbclient -c "cd oracle;get mysql" //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]getting file oraclemysql of size 0 as mysql (0.0 kb/s) (average 0.0 kb/s)[root@linux-01 opt]# ll总计 4-rw-r--r-- 1 root root 0 06-23 21:41 mysql

#上传命令(put):[root@linux-01 opt]# touch python[root@linux-01 opt]# smbclient -c "put python;ls" //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]putting file python as python (0.0 kb/s) (average 0.0 kb/s). D 0 Sun Jun 23 21:43:02 2013.. D 0 Sun Jun 23 20:25:22 2013python A 0 Sun Jun 23 21:43:11 2013oracle D 0 Sun Jun 23 21:37:27 2013tt_server 0 Sun Jun 23 20:25:57 2013mysql_server 0 Sun Jun 23 20:25:57 2013oracle_tt D 0 Sun Jun 23 21:35:50 2013

56593 blocks of size 524288. 50846 blocks available

#删除⽬录命令(rmdir或rd):[root@linux-01 opt]# smbclient -c "rd oracle_tt;ls" //192.168.1.120/dba -U nosql%123456Domain=[OPS] OS=[Unix] Server=[Samba 5_8]. D 0 Sun Jun 23 21:44:59 2013.. D 0 Sun Jun 23 20:25:22 2013python A 0 Sun Jun 23 21:43:11 2013oracle D 0 Sun Jun 23 21:37:27 2013tt_server 0 Sun Jun 23 20:25:57 2013mysql_server 0 Sun Jun 23 20:25:57 2013

56593 blocks of size 524288. 50846 blocks available

案例三、实现不同的⽤户访问同⼀个共享⽬录具有不同的权限,便于管理和维护。基本上能满⾜⼀些企业⽤户的需求。(整理⾃⽹络)

a. 需求

1. 某公司有5个⼤部门,分别为:⼈事⾏政部(HR & Admin Dept)、财务部(Financial Management Dept)、技术⽀持部(Technical Support Dept)、项⽬部(Project Dept)、客服部(Customer Service Dept)。2. 各部门的⽂件夹只允许本部门员⼯有权访问;各部门之间交流性质的⽂件放到公⽤⽂件夹中。3. 每个部门都有⼀个管理本部门⽂件夹的管理员账号和⼀个只能新建和查看⽂件的普通⽤户权限的账号。4. 公⽤⽂件夹中分为存放⼯具的⽂件夹和存放各部门共享⽂件的⽂件夹。5. 对于各部门⾃⼰的⽂件夹,各部门管理员具有完全控制权限,⽽各部门普通⽤户可以在该部门⽂件夹下新建⽂件及⽂件夹,并且对于⾃⼰新建的⽂件及⽂件夹有完全控制权限,对于管理员新建及上传的⽂件和⽂件夹只能访问,不能更改和删除。不是本部门⽤户不能访问本部门⽂件夹。6. 对于公⽤⽂件夹中的各部门共享⽂件夹,各部门管理员具有完全控制权限,⽽各部门普通⽤户可以在该部门⽂件夹下新建⽂件及⽂件夹,并且对于⾃⼰新建的⽂件及⽂件夹有完全控制权限,对于管理员新建及上传的⽂件和⽂件夹只能访问,不能更改和删除。本部门⽤户(包括管理员和普通⽤户)在访问其他部门共享⽂件夹时,只能查看不能修改删除新建。对于存放⼯具的⽂件夹,只有管理员有权限,其他⽤户只能访问。

b. 规划

根据公司需求情况,现做出如下规划:1. 在系统分区时单独分⼀个Company的区,在该区下有以下⼏个⽂件夹:HR、 FM、TS、PRO、CS和Share。在Share下⼜有以下⼏个⽂件夹:HR、FM、TS、PRO、CS和Tools。2. 各部门对应的⽂件夹由各部门⾃⼰管理,Tools⽂件夹由管理员维护。3. HR管理员账号:hradmin;普通⽤户账号:hruser。FM管理员账号:fmadmin;普通⽤户账号:fmuser。TS管理员账号:tsadmin;普通⽤户账号:tsuser。PRO管理员账号:proadmin;普通⽤户账号:prouser。CS管理员账号:csadmin;普通⽤户账号:csuser。Tools管理员账号:admin。

⽂件夹之间的关系见下图:

c. 新建⽤户#使⽤useradd命令新建系统账户,然后再使⽤smbpasswd –a建⽴SMB账户。

[root@linux-01 opt]# useradd -s /sbin/nologin hradmin[root@linux-01 opt]# useradd -g hradmin -s /sbin/nologin hruser[root@linux-01 opt]# useradd -s /sbin/nologin fmadmin[root@linux-01 opt]# useradd -g fmadmin -s /sbin/nologin fmuser[root@linux-01 opt]# useradd -s /sbin/nologin tsadmin[root@linux-01 opt]# useradd -g tsadmin -s /sbin/nologin tsuser[root@linux-01 opt]# useradd -s /sbin/nologin proadmin[root@linux-01 opt]# useradd -g proadmin -s /sbin/nologin prouser[root@linux-01 opt]# useradd -s /sbin/nologin csadmin[root@linux-01 opt]# useradd -g csadmin -s /sbin/nologin csuser[root@linux-01 opt]# useradd -s /sbin/nologin admin [root@linux-01 opt]# smbpasswd -a hradminNew SMB password:Retype new SMB password:Added user hradmin.[root@linux-01 opt]# smbpasswd -a hruserNew SMB password:Retype new SMB password:Added user hruser.[root@linux-01 opt]# smbpasswd -a fmadminNew SMB password:Retype new SMB password:Added user fmadmin.[root@linux-01 opt]# smbpasswd -a fmuserNew SMB password:Retype new SMB password:Added user fmuser.[root@linux-01 opt]# smbpasswd -a tsadminNew SMB password:Retype new SMB password:Added user tsadmin.

[root@linux-01 opt]# smbpasswd -a tsuserNew SMB password:Retype new SMB password:Added user tsuser.

[root@linux-01 opt]# smbpasswd -a proadminNew SMB password:Retype new SMB password:Added user proadmin.

[root@linux-01 opt]# smbpasswd -a prouserNew SMB password:Retype new SMB password:Added user prouser.

[root@linux-01 opt]# smbpasswd -a csadminNew SMB password:Retype new SMB password:Added user csadmin.

[root@linux-01 opt]# smbpasswd -a csuserNew SMB password:Retype new SMB password:Added user csuser.

[root@linux-01 opt]# smbpasswd -a adminNew SMB password:Retype new SMB password:Added user admin.

d. 新建⽬录[root@linux-01 opt]# cd /[root@linux-01 /]# mkdir Company[root@linux-01 /]# cd Company/[root@linux-01 Company]# mkdir HR FM TS PRO CS Share[root@linux-01 Company]# cd Share/[root@linux-01 Share]# mkdir HR FM TS PRO CS Tools[root@linux-01 Share]# cd ../../Company/[root@linux-01 Company]# chown n HR[root@linux-01 Company]# chown n FM[root@linux-01 Company]# chown n TS[root@linux-01 Company]# chown in PRO[root@linux-01 Company]# chown n CS[root@linux-01 Company]# chown Share

[root@linux-01 Company]# ll总计 48drwxr-xr-x 2 csadmin csadmin 4096 06-23 22:20 CSdrwxr-xr-x 2 fmadmin fmadmin 4096 06-23 22:20 FMdrwxr-xr-x 2 hradmin hradmin 4096 06-23 22:20 HRdrwxr-xr-x 2 proadmin proadmin 4096 06-23 22:20 PROdrwxr-xr-x 8 admin admin 4096 06-23 22:20 Sharedrwxr-xr-x 2 tsadmin tsadmin 4096 06-23 22:20 TS

[root@linux-01 Company]# cd Share/;ll总计 48drwxr-xr-x 2 root root 4096 06-23 22:20 CSdrwxr-xr-x 2 root root 4096 06-23 22:20 FMdrwxr-xr-x 2 root root 4096 06-23 22:20 HRdrwxr-xr-x 2 root root 4096 06-23 22:20 PROdrwxr-xr-x 2 root root 4096 06-23 22:20 Toolsdrwxr-xr-x 2 root root 4096 06-23 22:20 TS

[root@linux-01 Share]# chown n HR && chown n FM && chown n TS && chown in PRO && n CS && chown Tools[root@linux-01 Share]# ll总计 48drwxr-xr-x 2 csadmin csadmin 4096 06-23 22:20 CSdrwxr-xr-x 2 fmadmin fmadmin 4096 06-23 22:20 FMdrwxr-xr-x 2 hradmin hradmin 4096 06-23 22:20 HRdrwxr-xr-x 2 proadmin proadmin 4096 06-23 22:20 PROdrwxr-xr-x 2 admin admin 4096 06-23 22:20 Toolsdrwxr-xr-x 2 tsadmin tsadmin 4096 06-23 22:20 TS

[root@linux-01 Share]# chmod 1775 HR FM TS PRO CS[root@linux-01 Share]# ll总计 48drwxrwxr-t 2 csadmin csadmin 4096 06-23 22:20 CSdrwxrwxr-t 2 fmadmin fmadmin 4096 06-23 22:20 FMdrwxrwxr-t 2 hradmin hradmin 4096 06-23 22:20 HRdrwxrwxr-t 2 proadmin proadmin 4096 06-23 22:20 PROdrwxr-xr-x 2 admin admin 4096 06-23 22:20 Toolsdrwxrwxr-t 2 tsadmin tsadmin 4096 06-23 22:20 TS

f. 配置samba如下[root@linux-01 Share]# vim /etc/samba/

#============================ Share Definitions ==============================

[HR]comment = This is a directory of = /Company/HR/public = noadmin users = hradminvalid users = @hradminwritable = yescreate mask = 0750directory mask = 0750

[FM]comment = This is a directory of = /Company/FM/public = noadmin users = fmadminvalid users = @fmadminwritable = yescreate mask = 0750directory mask = 0750

[TS]comment = This is a directory of = /Company/TS/public = noadmin users = tsadminvalid users = @tsadminwritable = yescreate mask = 0750directory mask = 0750

[PRO]comment = This is a PRO = /Company/PRO/public = noadmin users = proadminvalid users = @proadminwritable = yescreate mask = 0750directory mask = 0750

[CS]comment = This is a directory of = /Company/CS/public = noadmin users = csadminvalid users = @csadminwritable = yescreate mask = 0750directory mask = 0750

[Share]comment = This is a share = /Company/Share/public = novalid users = admin,@hradmin,@fmadmin,@tsadmin,@proadmin,@csadminwritable = yescreate mask = 0755directory mask = 0755

[root@linux-01 Share]# /etc/init.d/smb restart关闭 SMB 服务: [确定]关闭 NMB 服务: [确定]启动 SMB 服务: [确定]启动 NMB 服务: [确定]

#现在测试:windows8系统

#将共享⽬录映射成Windows的驱动器:将Samba共享的public⽬录,映射成 Windows 的⼀个驱动器盘符:

a.右击“计算机”-->“映射⽹络驱动器”

提⽰:在windows下通过“ip地址”的⽅式访问其它⽂件资源时,⼀般第⼀次需要输⼊密码,以后就⽆需输⼊密码直接登陆了,那么如果我们要切换到其它Samba⽤户怎么办呢?可以在windows下执⾏如下指令实现:⾸先通过开始-->运⾏-->cmd 输⼊:“net use”命令查看现有的连接,然后执⾏“net use Samba服务器IP地址或者netbios名称ipc$ /del”,删除Samba服务器已经建⽴的连接。或者执⾏“net use * /del”将现在所有的连接全部删除。最后,再次执⾏“ip地址”时,就可以切换⽤户了。

如下所⽰:

# Samba Web管理⼯具 SWAT

SWAT(Samba WEB Administration Tool) 是通过浏览器对 Samba 进⾏管理的⼯具之⼀。通过 SWAT,可以在 Samba 允许访问范围内的客户端,⽤浏览器对服务端的 Samba 进⾏控制。在线⽂档的阅览、 的确认和编辑,以及密码的变更、服务的重启等等都可以通过 SWAT 来完成,它的直观让 Samba 变得温和化,对那些不喜欢⽂本界⾯管理服务器的朋友来说,是⼀个强⼤的⼯具。

swat⼯具嵌套在xinetd超级守护进程中,要通过启⽤xinetd进程来启⽤swat。因此要先安装xinetd⼯具包,然后安装swat⼯具包。上⾯已经安装过6.x86_64,这⾥不再赘述。

1、配置swat

因为swat是xinetd超级守护进程的⼀个⼦进程,所以swat⼯具配置⽂件在xinetd⽬录中。我们要设置swat配置⽂件,开启此⼦进程,以便在启⽤xinetd进程是来启⽤swat。swat配置⽂件在/etc/xinetd.d⽬录中。

[root@linux-01 Share]# cd /etc/xinetd.d/[root@linux-01 xinetd.d]# cat swat# default: off# description: SWAT is the Samba Web Admin Tool. Use swat # to configure your Samba server. To use SWAT, # connect to port 901 with your favorite web e swat{port = 901 //swat默认使⽤tcp的901端⼝, 可以修改socket_type = stream //通过web来配置samba, 默认使⽤root账号进⼊, 可以修改成其他的系统⽤户wait = noonly_from = 192.168.1.0/24 //添加此⾏, 将“only_from=127.0.0.1”改成“only_from=192.168.1.0/24”, 只允许内⽹范围对SWAT进⾏访问user = rootserver = /usr/sbin/swat //swat的执⾏程序默认在/usr/sbin⽬录下log_on_failure += USERIDdisable = no //将“disable=yes”改成“disable=no”, 这样swat⼦进程就可以随xinetd超级守护进程⼀起启动了}

[root@linux-01 xinetd.d]# /etc/init.d/xinetd restart停⽌ xinetd: [失败]启动 xinetd: [确定]

[root@linux-01 xinetd.d]# netstat -lntp|grep xinetdtcp 0 0 0.0.0.0:901 0.0.0.0:* LISTEN 5646/xinetd

#测试swat--------windows8系统在服务端启动 swat后,我们就可以通过 swat允许范围内的客户机的浏览器中,通过 服务器的内⽹IP:901 来访问服务端的 swat了,输⼊ root⽤户的⽤户名及密码进⼊ swat的管理⾸页,如下所⽰:通过 swat管理 Samba 与直接修改 的⽅式,在本质上并⽆差异,但通过浏览器访问的⽅式,可以使 Samba 的管理更加温和化,更加适⽤于不擅长使⽤⽂本界⾯、直接修改配置⽂件的朋友。

#通过swat配置samba

在swat页⾯我们可以看到有8个选项,每个选项可以配置samba的不同功能。

HOME:Samba相关程序及⽂件说明。

GLOBALS:设置Samba的全局参数。即⽂件的[global]。

SHARES:设置Samba的共享参数。

PRINTERS:设置Samba的打印参数。

WIZARD:Samba配置向导。

STATUS:查看和设置Samba的服务状况。

VIEW:查看Samba的⽂本配置⽂件,即。

PASSWORD:设置Samba⽤户,可以修改密码,新建删除⽤户。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687692061a32129.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信