了解samba:
Samba是著名的开源软件项目之一,它在Linux/UNIX操作系统中实现了微软公司的SMB/CIFS网络协议,从而使平台的文件共享变得更加容易,选用Samba可以很好地解决不同操作系统之间的文件互访问题。
一,Samba软件的组成
1.Samba软件包的构成:
Samba大部分软件包已经在CentOS系统中安装好了,用户可以通过以下操作查询系统中samba相关软件包的安装情况。
[root@localhost ~]# rpm -qa | grep "^samba" samba-common-4.4.4-9.el7.noarch samba-common-libs-4.4.4-9.el7.x86_64 samba-libs-4.4.4-9.el7.x86_64 samba-client-libs-4.4.4-9.el7.x86_64 samba-common-tools-4.4.4-9.el7.x86_64 samba-4.4.4-9.el7.x86_642.Samba服务的程序组件
Samba服务器提供smbd,nmbd两个程序,分别完成不同的功能。其中,smbd负责为客户端提供服务器中共享资源(目录和文件等)的访问;nmbd负责提供基于NetBIOS协议的主机名称解析,以便windows网络中的主机提供查询服务。
安装完samba软件包后,管理员可以通过systemctl工具来控制samba服务器的启动,中止,开机自启。
[root@localhost ~]# systemctl start smb [root@localhost ~]# systemctl start nmb [root@localhost ~]# systemctl enable smb Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service. [root@localhost ~]# systemctl enable nmb Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.
二,主配置文件smb.conf
1.smb.conf配置文件
Samba服务的配置文件位于/etc/samba/目录中,其中smb.conf是主配置文件。
[root@localhost ~]# grep -v "#" /etc/samba/smb.conf [global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = root create mask = 0664 directory mask = 0775
在smb.conf文件中存在三个特殊的配置段。
[global]全局设置:这部分配置项的内容对整个Samba服务器都有效。
[homes]宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将自动映射到该用户的宿主文件夹中。
[printers]打印机共享设置:如果需要共享打印机设备,可以在这部分进行配置。 2.testparm工具
Samba服务器提供了一个配置文件检查工具——testparm工具可以对smb.conf配置文件的正确性进行检查,如果发现错误将会进行提醒。
[root@localhost ~]# 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 "[print$]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] workgroup = SAMBA printcap name = cups security = USER idmap config * : backend = tdb cups options = raw
默认安装的主配置文件中内容较少,关于smb.conf文件中的更多配置项,可以执行“man smb.cnf”命令查阅帮助或参考“/etc/samba/smb.conf.example”。
三,构建文件共享服务器
一,需要用户验证的共享
1.建立Samba用户数据库 :执行pdbedit -a -u vina命令可以添加一个名为vina的Samba共享用户,其中的-a选项表示添加,-u选项用于指定用户名称
1. [root@localhost ~]# useradd vina 2. [root@localhost ~]# pdbedit -a -u vina执行pdbedit -L 命令可以列出所有的Samba共享用户,结合-v选项可以输出更详细的内容。
1. [root@localhost ~]# pdbedit -L 2. vina:1000:当指定的Samba用户不在使用时,结合-x选项并指定samba用户名称,删除指定的samba账号。
[root@localhost ~]# pdbedit -x -u vina [root@localhost ~]# pdbedit -L vina Username not found!
2.设置用户访问权限
创建共享用户vanko,hunter,确认共享目录:
[root@localhost ~]# useradd vanko #创建系统用户 [root@localhost ~]# useradd hunter [root@localhost ~]# pdbedit -a -u vanko #创建Samba共享用户 [root@localhost ~]# pdbedit -a -u hunter [root@localhost ~]# mkdir /opt/mytools #新建本地测试目录 [root@localhost ~]# touch /opt/mytools/test.txt #新建测试文件
修改smb.conf配置文件,添加名为tools的共享目录配置段:
[root@localhost ~]# vi /etc/samba/smb.conf [tools] comment = you can get software tools from here path = /opt/mytools read only = yes valid users = vanko,hunter write list = hunter
重载加载smb.conf文件中的配置,或重启smb服务器:
1. [root@localhost ~]# systemctl reload smb 2.
四,用户映射及访问地址限制
进一步提供Samba共享服务的安全性,除了可以对指定的共享目录设置用户授权以外,还可以采取用户映射,访问地址限制等措施。
1.共享账号映射(别名)
1. [root@localhost ~]# vi /etc/samba/smbusers 2. vanko = sunboy player
设置完成共享用户的别名以后,若要正常启用账号映射功能,需要修改主配置文件/etc/samba/smb.conf,添加全局配置项“ username map = /etc/samba/smbusers ”,然后重新加载配置即可生效。
[root@localhost ~]# vi /etc/samba/smb.conf [global] username map = /etc/smbusers ....... [root@localhost ~]# systemctl reload smb
2.访问地址限制
[root@localhost ~]# vi /etc/samba/smb.conf [global] hosts allow = 192.168.2. ........ [root@localhost ~]# systemctl reload smb
注:当通过共享目录上传文件,创建子目录的默认权限,分别使用配置项directory mask和create mask进行指定。
[tools] ......... directory mask = 0755 #上传的目录的默认权限为755 create mask - 0644 #文件默认权限为644
五,Linux系统如何访问共享文件夹
1.安装samba客户端工具
[root@localhost ~]# yum -y install samba-client #安装samba客户端
2.查询目标主机的共享资源列表
[root@localhost ~]# smbclient -L 192.168.2.1 -U hunter Enter hunter's password: Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4] Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers IPC$ IPC IPC Service (Samba 4.4.4) tools Disk you can get software tools from here hunter Disk Home Directories Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4] Server Comment --------- ------- LOCALHOST Samba 4.4.4 Workgroup Master --------- ------- SAMBA LOCALHOST
3.登录并访问共享文件夹
选项:-U:指定经过授权的共享用户名称(或映射的别名),并输入正常密码。需要通过“ //主机名/共享名 ”的形式指定共享文件夹的位置。
[root@localhost ~]# smbclient -U sunboy //192.168.2.1/tools -U hunter Enter hunter's password: Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4] smb: \>
在smb:\>环境中,使用特定的命令可以对共享目录进行列表,上传,下载,例:ls用于列表目录,pwd命令查看当前路径,get命令和mget命令用于下载文件,put命令和mput命令用于上传文件。?和 help命令在线帮助。
六,使用mount挂载共享文件夹
1.挂载samba服务器中的tools共享目录挂载到本地
[root@localhost ~]# mount -o username=hunter //192.168.2.1/tools /smbdir mount: //192.168.2.1/tools 写保护,将以只读方式挂载