【文件共享服务之一】 Samba服务
******************理论部分*****************
Samba:
是一款在Linux/Unix系统上实现与windows系统进行文件共享的免费开源软件。广泛应用于Unix-like与Windows之间,提供文件共享和打印机共享服务,使得不同系统之间跨平台共享资源更加便捷.
Samba服务:
由服务端及客户端程序构成,采用的是smb/cifs网络协议。
SMB协议:
英文全称为 Server Message Block(服务协议块),该通信协议是微软公司和英特尔公司在1987年制定的协议,主要是作为Microsoft网络的通讯协议。SMB协议是用在会话层和表示层以及小部分应用层的协议。SMB协议使用NetBIOS的应用程序接口(简称API)。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;后来微软又把 SMB协议改名为CIFS协议(Common Internet File System),并且加入了许多新的特色。
NETBIOS协议:
全称为Network Basic Input/Output System,由IBM公司开发,Windows基于主机实现通信的机制,主要用于数十台计算机的小型局域网。NetBIOS是跟局域网有关的网络协议,从XP系统开始,这个协议已经集成在TCP/IP协议里面了,一般不需要单独使用这个协议了;
DNS协议与NETBIOS协议的区别:
协议不同:DNS是基于tcp/ip协议的;NETBIOS是基于netbios协议的。
使用环境不同:DNS用于局域网和广域网,NETBIOS只能用于局域网
Samba用到的服务端口:
udp:137, 138
tcp:139, 445
Samba拥有三个服务:
1、smbd: cifs,使用139、445端口.
2、nmbd:提供NetBIOS支持,使用137端口.(NetBIOS已逐渐被DNS替代)
3、winbindd:提供针对windows2003/2008的用户及族信息的解析功能。
winbindd服务需单独安装:yum -y insall samba-winbind
注:一般作为文件共享使用Samba,则只需要smbd服务.
samba服务软件:
客户端: samba-client
服务端: samba
服务脚本:
/etc/rc.d/init.d/nmb
/etc/rc.d/init.d/smb
主配置文件:
/etc/samba/smb.conf
samba用户:
账号:都是系统用户, /etc/passwd.
密码:samba服务自由密码文件.
将系统用户添加为samba的命令:smbpasswd
smbpasswd:
-a: 添加系统用户为samba用户
-d: 禁用指定用户
-e: 启用
-x: 删除
不使用任何命令选项时可以用于修改Samba用户的密码.
samba配置文件:
smb.conf,包括:
全局设定
特定共享的设定
家目录
打印机
自定义共享
自定义共享:
[shared_name]
path = /path/to/share_directory
comment = Comment String
guest ok = {yes|no}
public = {yes|no}
writable = {yes|no}
read only = {yes|no}
write list = +GROUP_NAME
测试配置文件是否有语法错误,以及显示最终生效的配置:
# testparm
注:共享权限和文件系统权限二者缺一不可.必须都拥有写权限才能写入.
可使用setfacl和getfacl命令对用户授权!
******************实操部分*****************
Samba服务安装配置:
准备环境:
系统: CentOS6.7 x 2台
windows 7 x 1台.
IP: 10.68.7.102 -- CentOS 7-102
10.68.7.103 -- CentOS 7-103
10.68.7.80 -- Windows
实验要求:
1)Win主机当服务端,Linux主机当客户端;Win主机共享一个目录,使Linux主机能够访问到;
a.并且在Windows主机新建两个系统用户user1和user2;
b.这两用户从Linux主机登录,实现user1有上传下载文件的权限,user2只能读取共享文件。
c.最后,基于挂载的方式访问共享目录.
2)Linux主机7-103当服务端,Win主机和Linux主机7-102当客户端
建立samba共享,共享目录为/data,要求:
a.共享名为shared, 工作组为WORKSTATION;
b.添加组develop,添加用户gentoo,centos,ubuntu;其中gentoo和centos
以develop为附加 组,Ubuntu不属于develop组,密码一致。
c.添加samba用户gentoo,centos和Ubuntu,密码为各自用户名;
d.此samba共享文件shared仅允许develop组具有写权限,其他用户只能以只读方式访问;
e.此samba共享服务仅允许来自于10.68.7.0/24网络主机访问.
f.需用Linux客户端和windows客户端均验证成功。
1.1 在Linux客户端安装samba client软件:
[root@7-102~]#yum-yinstallsamba-client[root@7-102~]#rpm-qa|grepsamba*//查看安装的samba服务客户端软件.samba-winbind-clients-3.6.23-20.el6.x86_64samba-winbind-3.6.23-20.el6.x86_64samba-client-3.6.23-20.el6.x86_64samba-common-3.6.23-20.el6.x86_64[root@7-102~]#rpm-qlsamba-client|grep"smbclient"//smbclient为客户端工具./usr/bin/smbclient/usr/share/man/man1/smbclient.1.gz[root@7-102~]#
1.2 在Windows服务端创建共享目录
1.创建要共享的目录test:
2. 创建两个系统用户user1和user2:
3. 设置共享:
4. 添加用户user1对于该共享目录具有读写的权限,即完全控制权限;user2对于该共享目录只读.
5. 查看windows服务端计算机所属工作组:
1.3 进入Linux端samba配置文件:
[root@7-102~]#vim/etc/samba/smb.conf...57[global]74workgroup=WORKSTATION//此处修改为windows服务端计算机所属工作组.75serverstring=SambaServerVersion%v
1.4 然后开始验证实验结果:
1. 在Linux客户端交互式访问共享的数据目录test_file:
[root@7-102~]#smbclient-L10.68.7.80-Uuser1Enteruser1'spassword:Domain=[YANGBIN-PC]OS=[Windows7Professional7601ServicePack1]Server=[Windows7Professional6.1]SharenameTypeComment--------------------ADMIN$Disk远程管理C$Disk默认共享IPC$IPC远程IPCtest_fileDiskUsersDisksessionrequestto10.68.7.80failed(Callednamenotpresent)sessionrequestto10failed(Callednamenotpresent)sessionrequestto*SMBSERVERfailed(Callednamenotpresent)NetBIOSoverTCPdisabled--noworkgroupavailable[root@7-102~]#
2. 使用用户user1从Linux客户端登录samba共享目录并上传文件/etc/fstab:
[root@7-102~]#smbclient//10.68.7.80/test_file-Uuser1Enteruser1'spassword:Domain=[YANGBIN-PC]OS=[Windows7Professional7601ServicePack1]Server=[Windows7Professional6.1]smb:\>lcd/etcsmb:\>putfstabputtingfilefstabas\fstab(393.0kb/s)(average393.1kb/s)smb:\>ls.D0FriNov2505:02:372016..D0FriNov2505:02:372016fstabA805FriNov2505:02:37201651148blocksofsize2097152.40843blocksavailablesmb:\>
3. 在windows服务端查看用户user1上传的文件fstab:
4. 使用用户user2查看并上传文件,上传失败则验证成功:
[root@7-102~]#smbclient//10.68.7.80/test_file-Uuser2Enteruser2'spassword:Domain=[YANGBIN-PC]OS=[Windows7Professional7601ServicePack1]Server=[Windows7Professional6.1]smb:\>ls.D0FriNov2505:02:372016..D0FriNov2505:02:372016fstabA805FriNov2505:02:37201651148blocksofsize2097152.40843blocksavailablesmb:\>lcd/etcsmb:\>putinittabNT_STATUS_ACCESS_DENIEDopeningremotefile\inittab//提示上传被拒绝.smb:\>
1.5 基于挂载的方式访问共享目录:
[root@7-102~]#mkdir/mnt/test[root@7-102~]#mount-tcifs//10.68.7.80/test_file/mnt/test-ousername=user1,password=user1[root@7-102~]#df-hTFilesystemTypeSizeUsedAvailUse%Mountedon/dev/sda2ext458G2.9G52G6%/tmpfstmpfs932M0932M0%/dev/shm/dev/sda1ext47.5G53M7.1G1%/boot/dev/sr0iso96603.7G3.7G0100%/media//10.68.7.80/test_filecifs100G21G80G21%/mnt/test[root@7-102~]#
END
2.1 建立共享samba目录文件,创建工作组,添加用户:
[root@7-103~]#mkdir-pv/data/sharedmkdir:createddirectory`/data'mkdir:createddirectory`/data/shared'[root@7-103~]#groupadddevelop[root@7-103~]#useradd-Gdevelopgentoo//-G<群组>:指定用户所属的附加群组;[root@7-103~]#useradd-Gdevelopcentos[root@7-103~]#useraddubuntu[root@7-103~]#echogentoo|passwd--stdingentooChangingpasswordforusergentoo.passwd:allauthenticationtokensupdatedsuccessfully.[root@7-103~]#echocnetos|passwd--stdincentosChangingpasswordforusercentos.passwd:allauthenticationtokensupdatedsuccessfully.[root@7-103~]#echoubuntu|passwd--stdinubuntuChangingpasswordforuserubuntu.passwd:allauthenticationtokensupdatedsuccessfully.
2.2 在Linux服务端安装samba server软件:
[root@7-103~]#yum-yinstallsamba[root@7-103~]#rpm-qasamba*samba-winbind-clients-3.6.23-20.el6.x86_64samba-common-3.6.23-20.el6.x86_64samba-winbind-3.6.23-20.el6.x86_64samba-3.6.23-20.el6.x86_64[root@7-103~]#
2.3 添加samba用户gentoo,centos和Ubuntu,密码为各自用户名:
[root@7-103~]#smbpasswd-agentooNewSMBpassword:Interruptedbysignal.[root@7-103~]#smbpasswd-agentooNewSMBpassword:RetypenewSMBpassword:Addedusergentoo.[root@7-103~]#smbpasswd-acentosNewSMBpassword:RetypenewSMBpassword:Addedusercentos.[root@7-103~]#smbpasswd-aubuntuNewSMBpassword:RetypenewSMBpassword:Addeduserubuntu.[root@7-103~]#
2.4 在samba配置文件进行配置:
[root@7-103~]#vim/etc/samba/smb.conf12[global]34workgroup=WORKSTATION//设置工作组为WORKSTATION.5serverstring=SambaServerVersion%v67;netbiosname=MYSERVER89;interfaces=loeth0192.168.12.2/24192.168.13.2/2410;hostsallow=10.68.7.//此处仅允许10.68.7.0/24网段主机访问.111213#logssplitpermachine14logfile=/var/log/samba/log.%m15#max50KBperlogfile,thenrotate16maxlogsize=50171819security=user//安全级别,user表示需由本服务器验证用户名及密码.20passdbbackend=tdbsam//该项表示samba用户密码以tdbsam格式保存,安全性很高.2122232425;security=domain26;passdbbackend=tdbsam27;realm=MY_REALM2829;passwordserver=<NT-Server-Name>3031;security=user32;passdbbackend=tdbsam3334;domainmaster=yes35;domainlogons=yes3637#theloginscriptnamedependsonthemachinename38;logonscript=%m.bat39#theloginscriptnamedependsontheunixuserused40;logonscript=%u.bat41;logonpath=\\%L\Profiles\%u42#disablesprofilessupportbyspecifinganemptypath43;logonpath=4445;adduserscript=/usr/sbin/useradd"%u"-n-gusers46;addgroupscript=/usr/sbin/groupadd"%g"47;addmachinescript=/usr/sbin/useradd-n-c"Workstation(%u)"-M-d/nohome-s/bin/false"%u"48;deleteuserscript=/usr/sbin/userdel"%u"49;deleteuserfromgroupscript=/usr/sbin/userdel"%u""%g"50;deletegroupscript=/usr/sbin/groupdel"%g"515253;localmaster=no54;oslevel=3355;preferredmaster=yes565758;winssupport=yes59;winsserver=w.x.y.z60;winsproxy=yes6162;dnsproxy=yes636465loadprinters=yes66cupsoptions=raw6768;printcapname=/etc/printcap69#obtainlistofprintersautomaticallyonSystemV70;printcapname=lpstat71;printing=cups727374;maparchive=no75;maphidden=no76;mapreadonly=no77;mapsystem=no78;storedosattributes=yes79808182[homes]83comment=HomeDirectories84browseable=no85writable=yes86;validusers=%S87;validusers=MYDOMAIN\%S8889[printers]90comment=AllPrinters91path=/var/spool/samba92browseable=no93guestok=no94writable=no95printable=yes9697;[netlogon]98;comment=NetworkLogonService99;path=/var/lib/samba/netlogon100;guestok=yes101;writable=no102;sharemodes=no103104105;[Profiles]106;path=/var/lib/samba/profiles107;browseable=no108;guestok=yes109110111;[public]112;comment=PublicStuff113;path=/home/samba114;public=yes115;writable=yes116;printable=no117;writelist=+staff118119//自定义共享:120[shared]121comment=sharedtestfile122path=/data/shared123writable=yes124guestok=yes注:关于samba配置文件的详细解释,可参考如下这篇博客:http://10166561.blog.51cto.com/10156561/1683136
2.5 测试配置文件是否有语法错误,以及显示最终生效的配置:
[root@7-103~]#testparmLoadsmbconfigfilesfrom/etc/samba/smb.confrlimit_max:increasingrlimit_max(1024)tominimumWindowslimit(16384)Processingsection"[homes]"Processingsection"[printers]"Processingsection"[shared]"LoadedservicesfileOK.Serverrole:ROLE_STANDALONEPressentertoseeadumpofyourservicedefinitions[global]workgroup=WORKSTATIONserverstring=SambaServerVersion%vlogfile=/var/log/samba/log.%mmaxlogsize=50idmapconfig*:backend=tdbcupsoptions=raw[homes]comment=HomeDirectoriesreadonly=Nobrowseable=No[printers]comment=AllPrinterspath=/var/spool/sambaprintable=Yesprintok=Yesbrowseable=No[shared]comment=sharedtestfilepath=/data/sharedreadonly=Noguestok=Yes[root@7-103~]#
2.6 启动samba服务:
[root@7-103~]#servicesmbstart;servicenmbstartStartingSMBservices:[OK]StartingNMBservices:[OK][root@7-103~]#
2.7 配置共享文件权限:
[root@7-103~]#setfacl-mgroup:develop:rwx/data/shared[root@7-103~]#set-muser:ubuntu:rx/data/shared[root@7-103~]#ls-ld/data/shareddrwxrwxr-x+3rootroot4096Sep2104:55/data/shared[root@7-103~]#
注:共享权限和文件系统权限二者缺一不可.必须都拥有写权限才能写入.
2.8 交互式数据访问:
[root@7-102~]#smbclient-L10.68.7.103-UgentooEntergentoo'spassword:Domain=[WORKSTATION]OS=[Unix]Server=[Samba3.6.23-20.el6]SharenameTypeComment--------------------sharedDisksharedtestfileIPC$IPCIPCService(SambaServerVersion3.6.23-20.el6)gentooDiskHomeDirectoriesDomain=[WORKSTATION]OS=[Unix]Server=[Samba3.6.23-20.el6]ServerComment----------------7-103SambaServerVersion3.6.23-20.el6WorkgroupMaster----------------WORKSTATION7-103[root@7-102~]#
2.9 测试结果
首先以一台Linux 7-102客户端分别用centos和Ubuntu用户登录samba服务,前者可上传文件,后者则只读:
[root@7-102~]#smbclient//10.68.7.103/shared-UcentosEntercentos'spassword:Domain=[WORKSTATION]OS=[Unix]Server=[Samba3.6.23-20.el6]smb:\>ls.D0WedSep2101:54:462016..D0WedSep2101:54:46201658930blocksofsize1048576.53326blocksavailablesmb:\>smb:\>lcd/etcsmb:\>putfstabputtingfilefstabas\fstab(262.0kb/s)(average262.0kb/s)smb:\>ls.D0WedSep2104:36:452016..D0WedSep2101:54:462016fstabA805WedSep2104:36:45201658930blocksofsize1048576.53326blocksavailablesmb:\>[root@7-102~]#smbclient//10.68.7.103/shared-UubuntuEnterubuntu'spassword:Domain=[WORKSTATION]OS=[Unix]Server=[Samba3.6.23-20.el6]smb:\>smb:\>ls.D0WedSep2104:36:452016..D0WedSep2101:54:462016fstabA805WedSep2104:36:45201658930blocksofsize1048576.53326blocksavailablesmb:\>lcd/etcsmb:\>putinittabNT_STATUS_ACCESS_DENIEDopeningremotefile\inittabsmb:\>
注:
#smbclient//10.68.7.103/shared-Ucentos//此处填写共享文件,不能包括共享文件的上级目录.
3.0 在windows客户端验证:
需要出现的结果是,用gentoo用户登录访问共享目录文件,可创建文件:
3.1 用Ubuntu用户登录访问共享目录,创建文件被拒绝,仅能读取:
结果验证成功!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。