先满足前提条件配置静态ip,有相应的系统用户(文章中会有匿名访问的方法),为了实验的测试,要关闭防火墙,放行Samba的流量
由于Samba服务包文件的依赖关系过多,所以选择用yum安装,执行以下操作删除系统默认的yum配置文件,并编写yum配置文件:
yum配置文件的内容如下:
执行以下命令,安装Samba服务的所有有依赖关系的软件包:
安装成功后,执行vim /etc/samba/smb.conf命令,进入Samba服务的配置文件中,增加共享目录(在这之前我们要有用来共享的目录文件,以及系统用户账号)
Samba服务默认存在的配置文件如下:
在 “smb.conf ” 文件中存在三个特殊的配置段:
[ global ] :全局设置:这部分配置项的内容对整个Samba服务器都有效。
[ homes ] :宿主目录的共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将自动映射到该用户的宿主文件夹中。
[ printers ]:打印机共享设置:如果需要共享打印机设备,可以在这部分进行配置
Smb.conf文件中常见的配置项及含义说明:
常见全局配置项的含义
workgroup:所在工作组名称;
server string:服务器描述信息;
security:安全级别,可用值如下:User(本服务器验证连接)、server(指定另一台服务器验证)、ads(由Windows域控制器验证);
log file:日志文件位置,“%m” 变量表示客户机地址;
passwd backend:设置共享账户文件的类型;
comment:对共享目录的注释、说明信息;
path:共享目录在服务器中对应的实际路径;
browseable:该共享目录在“网上邻居”中是否可见;
guest ok:是否允许所有人访问,等效于“public” ;
writable:是否可写,与 read only 的作用相反;
我们想要共享某个目录时,在配置文件的最后另起一行,按照上面的格式输入相应的信息,就可以了
以上是我要共享的目录,目录属主为用户“test”,为了方便,权限给到了最大,在实际中可以根据情况设置相应的权限,在smb.conf配置文件中写入以下字段:
其中各项含义如下:
comment:共享目录的描述信息;
path:设置对应共享目录在服务器上的文件夹路径;
public:是否所有人可以访问共享目录;
read only:是否只读,与 “writable” 作用相反;
valid users:共享目录的授权设置,允许哪些用户访问共享目录,这里设置了两个用户 “ test”和 “root”。也可授权一个组,可以使用:“@组名” 的形式,但也需要为组内的每个系统用户创建对应的Samba共享用户。
write list:设置共享目录为 “只读” 后,也可以单独授予某些用户有写入的权限(这里授权“root” 用户可以写入);
写入上述信息后,保存退出即可,若要共享多个目录,另起一行以同样的格式写入即可;
保存退出后,可以使用:“testparm” 命令工具对 “smb.coonf ”配置文件的正确性进行检查,如果发现有错误将会进行提醒。如下:
没有提示错误,接下来启动smb服务,并查看smb服务状态:
访问共享目录的用户密码不是系统用户的密码,但用户名一样,我们还要使用 “ pdbedit -a ” 创建和系统用户对应的Samba共享用户,如下:
执行相同的操作把用户root也添加到共享用户即可。
命令pdbedit -L:可以列出所有的Samba共享用户,若只想查看某个用户,可以指定用户名作为参数,结合 “ -v” 可以输出更详细的信息,如:pdbedit -vL test(输出共享用户test的详细信息)
使用 “ -x ” 选项并指定用户名,也可删除共享用户,例如:“ pdbedit -x -u test”可以删除共享用户test
共享用户建立后,就可以使用客户端验证了:
以上“myshare”为我们设置的共享目录,“test”是默认共享的用户宿主目录
为了安全起见,也可以将一个共享用户映射为多个不同的名称(别名),这样就可以通过共享用户的别名和密码来访问共享资源了,需要先编写别名的文件,格式如下:
新打开一个文件
写入以下内容:
上述内容时把共享用户 “test” 创建了三个别名,分别是 “ mike” “ jerry” “terry”
创建别名文件后,若要正常启用共享账号的别名,还需要修改主配置文件 “ /etc/samba/smb.conf”,添加全局配置项:“username map = /etc/samba/smbusers”,等号后面的路径为我们编写的别名文件路径;
【注意,当Samba服务的配置文件有改动的话,一定要重启(systemctl restart smb)或重载(systemctl reload smb)服务】
也可以在smb的全局配置中通过 “ hosts allow” 和“ hosts deny” 来进行访问限制,前者用于指定仅允许访问共享的客户机地址,后者用于指定仅拒绝访问共享的客户机地址,两者任选其一即可。
访问地址限制一般应用于[ global ] 全局配置部分,也可应用于某个具体的共享配置段部分,限制的对象可以是主机名、ip地址或者网络段地址(省去主机部分),多个地址之间以逗号或空格进行分隔。如下:仅允许来自192.168.4.0/24、173.17.0.0/16 网段的客户机访问Samba服务器
也可以在共享目录或全局配置项中添加以下字段,表示允许匿名访问:
map to guest = Bad User
也可以在Linux客户端*问Samba服务器,简单的方法就是将共享目录挂载到本地目录,访问也方便,具体格式如下: