linux系统中samba的安装与配置
发布时间:2018-12-28 14:48:24
作者:ynkulusi
好些年前的配置安装日志了,留给需要的人参考吧。
1、检查Samba服务包是否已安装
[root@hulusi home]# rpm -qa |grep samba
samba-common-3.6.9-168.el6_5.i686
samba-3.6.9-168.el6_5.i686
samba-winbind-3.6.9-168.el6_5.i686
samba-winbind-clients-3.6.9-168.el6_5.i686
说明samba已经安装,如果没有安装,运行下面命令安装
#yum install samba
2、查看Samba服务器需要防火墙开的端口
[root@hulusi home]# netstat -anlp |grep smb
3、防火墙添加相应端口数据
[root@hulusi home]# vim /etc/sysconfig/iptables #增加以下两项,还可以增加137、138及UDP端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
4、启动配置samba
#chkconfig smb on #设置 Samba开机自动启动
#service smb start #启动Samba服务
#chkconfig nmb on #设置Samba别名服务自动启动
#cp /etc/samba/smb.conf /etc/samba/smb.confbak #备份配置文件
5、smb.conf配置文件常用参数说明
[global] 全局参数
workgroup:指定samba所要加入的工作组
server string:指定在浏览列表里的机器描述,和MS WINDOWS 里配置网络时的描述是一样的
netbios name:指定samba的NetBIOS名,可以通过该名访问共享;可以不设置,samba将会使用机器的DNS名的第一部分,如果你的机器的DNS名是host1.domain,就用host1
security:安全配置参数,有user、share、server和domain4个值,user 、share是常用的security = user
这是samba的默认配置,这种情况下要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。 securtiy = share 这是几乎没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
log file:指定日志文件的名称,路径一般放在/var/log/samba,可以在文件名后加个宏%m表示对每台访问samba的机器都单独记录一个日志文件。
例如: log file = /var/log/samba/log.%m,
如果host1、host2这台机器访问过samba,就会留下log.host1、log.host2这两个日志文件。
max log size :指定最大日志文件的大小,以KB为单位,例如: max log size = 50k
username map :指定一个文件包含来自客户机的用户名与Linux系统用户名之间的映射,文件的格式是每行一个映射
[share] 共享资源参数
comment :对共享的描述,可以是任意的字符串
path :提供共享服务的路径,可以用%u %m这样的宏来代替路径里的unix用户和客户机的Netbios名。
writeable :指定共享路径是否可以写,值是yes或no
browseable :指定共享是否可以浏览,默认是yes
available:指定共享资源是否可用,默认是yes,设为no则关闭该资源的共享服务,用户无法连接到该资源上。
valid users:设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalid users:设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
force user:指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
force group:指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
read list:设定此名单内的成员为只读(用户名/@组名)
write list:若指定了valid users或设定为只读时,则只有此名单内的成员才可作写入动作(用户名/@组名)
create mask:创建文件的权限
directory mask:目录的控制权限
printable:是yes/否no允许打印
hide dot ftles:是yes/否no隐藏隐藏文件
public:是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
guest ok:是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read only:是yes/否no以只读方式共享当与writable发生冲突时也writable为准
allow hosts:设定只有此网段/IP的用户才能访问共享资源,用 except IP去除网段/IP限制
deny hosts:设定只有此网段/IP的用户不能访问共享资源
[homes]
若设了[homes]所有,参数除外browseable与共享资源的参数相同
browseable = yes
用户从Windows访问时如用户tom,将会列出其主目录tom和homes目录,homes目录下的内容与主目录完全相同,而browseable = no只列出其主目录tom。
编辑配置文件,新建一个smb.conf文件,添加如下信息
#vim /etc/samba/smb.conf
[global] #找到这一行(全局设置标签),在此行下面添加如下行:
workgroup = WORKGROUP #工作组名称改为 Windows 网络所定义的工作组名
server string = Samba Server #设置samba服务器的主机名称
security = user #设置samba服务器安全级别为user,即以账号和口令访问
netbios name = SambaServer #设置Samba服务器访问别名
#在配置文件的末尾添加以下自定义内容
[SambaServer] #在Windows网上邻居中看到的共享目录的名字
comment = SambaServer #在Windows网上邻居中看到的共享目录的备注信息
path = /home/SambaServer #共享目录在系统中的位置
public = no #不公开目录
writable = yes #共享目录可以读写
valid users=SambaServer #只允许SambaServer用户访问
保存配置退出,测试配置文件用#testparm命令
6、添加访问linux共享目录的账号SambaServer
用户家目录为/home/SambaServer, 用户登录终端设为/bin/false(即使之不能登录系统)
#cd /home #进入/home目录
#mkdir SambaServer #建立SambaServer文件夹
#touch samba.txt #创建测试文件samba.txt
#useradd SambaServer -d /home/SambaServer -s /bin/false #添加SambaServer用户,不可以登录系统
#chown SambaServer:SambaServer /home/SambaServer -R #配置文件夹归属权限
7、将用户SambaServer添加入到Samba用户数据库,并设置登录共享目录的密码为:123456
#smbpasswd -a SambaServer
New SMB password: 输入该用户用于访问Samba共享文件的密码
Retype new SMB password: 再次确认输入该密码
Added user SambaServer. #提示添加用户成功
#特别注意:这里设置的密码是用户登录Samba共享目录的密码,不是用户登录linux系统的密码
smbpasswd -a username #设置访问共享用户密码
smbpasswd -x username #删除用户
smbpasswd -d username #禁用用户
smbpasswd -e username #恢复禁用
smbpasswd -n username #设置用户密码为空
/etc/samba/smbpasswd 这个是旧版 samba 在使用的,新的已经改用 tdbsam,所以不再使用
在 /etc/samba/smb.conf的[global]中加入passdb backend = tdbsam,执行 pdbedit -L -v 就可以看到 samba 用户信息
# cat smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam:/etc/samba/passdb.tdb
follow symlinks = yes
wide links = yes
wide links = yes
unix extensions = no
config file = /etc/samba/conf.d/smb.conf.%U #配置文件所在目录,%U指用户名
tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd -a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。
pdbedit -a username:新建Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表的详细信息。
pdbedit -c “[D]” -u username:暂停该Samba用户的账号。
pdbedit -c “[]” -u username:恢复该Samba用户的账号。
8、重启Samba服务器
#service smb restart
9、在Windows客户端访问测试
运行界面输入 “\\ip”或者 \\SambaServer #服务器别名,回车之后,会跳出来登录框,输入账号SambaServer 密码123456,即可访问共享目录
至此,CentOS linux samba服务器配置完成
10、其他配置说明
①.Samba定义的变量:
%S 当前服务器名
%P 当前服务器的根目录
%u 当前服务器的用户名
%g 当前用户所在的主工作组
%U 当前对话的用户名
%G 当前对话的用户我主工作组
%H 当前服务器用户的home目录
%v Samba服务器的版本号
%h 运行Samba服务器的主机名
%m 客户机的NetBios名
%L 服务器的NetBios名
%M 客户机的主机名
%N NIS服务器名
%p NIS服务器的Home目录
%R 所采用的服务器等级
%d 当前服务进程的ID
%a 客户机和结构
%I 客户机的IP
%T 当前日期和时间
②.SWAT(Samba Web Administration Tool)工具使用
SWAT 是通过浏览器对 Samba 进行管理的工具之一。通过 SWAT ,可以在 Samba 允许访问范围内的客户端,用浏览器对服务端的 Samba 进行控制。在线文档的阅览、smb.conf 的确认和编辑,以及密码的变更、服务的重启等等都可以通过 SWAT 来完成,它的直观让 Samba 变得温和化,对那些不喜欢文本界面管理服务器的朋友来说,是一个强大的工具。
安装 SWAT,首先,通过 yum 在线安装 SWAT
# yum -y install samba-swat # 在线安装 SWAT
配置 SWAT,编辑 /etc/xinetd.d/swat ,对其进行配置,只允许内网以及本地的客户端对 SWAT 进行访问。
# vi /etc/xinetd.d/swat # 编辑 SWAT 的配置文件
only_from = 127.0.0.1 # 找到此行,在下面添加如下行:
only_from = 192.168.0.0 # 添加此行,只允许内网范围对 SWAT 进行访问
disable = yes # 找到此行,将 yes 改为 no
disable = no # 变为此状态
启动 SWAT,在启动 SWAT 之前,先将防火墙中 SWAT 使用的 901 号端口开放。
# vi /etc/sysconfig/iptables #编辑防火墙规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 901 -j ACCEPT #开放SWAT的901端口
# service iptables restart #重新启动防火墙,使新的规则生效
由于 SWAT 的启动是通过超级服务器,所以只要重新启动 xinetd 即可启动 SWAT 。
# service xinetd restart # 重新启动超级服务器,启动 SWAT
在swat页面我们可以看到有8个选项,每个选项可以配置samba的不同功能。
HOME:Samba相关程序及文件说明。
GLOBALS:设置Samba的全局参数。即smb.conf文件的[global]。
SHARES:设置Samba的共享参数。
PRINTERS:设置Samba的打印参数。
WIZARD:Samba配置向导。
STATUS:查看和设置Samba的服务状况。
VIEW:查看Samba的文本配置文件,即smb.conf。
PASSWORD:设置Samba用户,可以修改密码,新建删除用户。
测试 SWAT
在服务端启动 SWAT 后,我们就可以通过 SWAT 允许范围(本文以内网192.168.0.0及本地127.0.0.1为例) 内的客户机的浏览器中,通过 http://服务器的内网IP:901 来访问服务端的 SWAT 了。如下所示:
1.在浏览器中输入“http://服务器的内网IP:901”(本文以笔者测试环境的“http://192.168.0.9:901”为例。请各自替换为您的服务器内网IP地址。),然后输入 root 用户的用户名及密码进入 SWAT 的管理首页;
2.确认出现如下 SWAT 管理中心的首页:
通过 SWAT 管理 Samba 与直接修改 smb.conf 的方式,在本质上并无差异,但通过浏览器访问的方式,可以使 Samba 的管理更加温和化,更加适用于不擅长使用文本界面、直接修改配置文件的朋友。
linux 访问windows文件配置
通常我们使用Samba都是在Windows上访问做为Samba服务器的Linux。但是在某些时候情况会反过来,你可能需要从Linux上访问Windows共享出来的目录。幸运的是,Samba本身也支持这种类型的访问。
3.从Linux访问Windows上的共享目录,需要安装smbclient工具。在CentOS上则使用yum命令安装:
# yum install samba-client
安装好smbclient工具,就可以使用mount命令来挂载Windows上的共享目录了:
# mount -t cifs -o windowsusername=username //windows-machine/share /mnt/winshare 计算机名访问
# mount -t cifs -o username=user,password=passwd //192.168.1.100/share /mnt/winshare IP
1、检查Samba服务包是否已安装
[root@hulusi home]# rpm -qa |grep samba
samba-common-3.6.9-168.el6_5.i686
samba-3.6.9-168.el6_5.i686
samba-winbind-3.6.9-168.el6_5.i686
samba-winbind-clients-3.6.9-168.el6_5.i686
说明samba已经安装,如果没有安装,运行下面命令安装
#yum install samba
2、查看Samba服务器需要防火墙开的端口
[root@hulusi home]# netstat -anlp |grep smb
3、防火墙添加相应端口数据
[root@hulusi home]# vim /etc/sysconfig/iptables #增加以下两项,还可以增加137、138及UDP端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
4、启动配置samba
#chkconfig smb on #设置 Samba开机自动启动
#service smb start #启动Samba服务
#chkconfig nmb on #设置Samba别名服务自动启动
#cp /etc/samba/smb.conf /etc/samba/smb.confbak #备份配置文件
5、smb.conf配置文件常用参数说明
[global] 全局参数
workgroup:指定samba所要加入的工作组
server string:指定在浏览列表里的机器描述,和MS WINDOWS 里配置网络时的描述是一样的
netbios name:指定samba的NetBIOS名,可以通过该名访问共享;可以不设置,samba将会使用机器的DNS名的第一部分,如果你的机器的DNS名是host1.domain,就用host1
security:安全配置参数,有user、share、server和domain4个值,user 、share是常用的security = user
这是samba的默认配置,这种情况下要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。 securtiy = share 这是几乎没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
log file:指定日志文件的名称,路径一般放在/var/log/samba,可以在文件名后加个宏%m表示对每台访问samba的机器都单独记录一个日志文件。
例如: log file = /var/log/samba/log.%m,
如果host1、host2这台机器访问过samba,就会留下log.host1、log.host2这两个日志文件。
max log size :指定最大日志文件的大小,以KB为单位,例如: max log size = 50k
username map :指定一个文件包含来自客户机的用户名与Linux系统用户名之间的映射,文件的格式是每行一个映射
[share] 共享资源参数
comment :对共享的描述,可以是任意的字符串
path :提供共享服务的路径,可以用%u %m这样的宏来代替路径里的unix用户和客户机的Netbios名。
writeable :指定共享路径是否可以写,值是yes或no
browseable :指定共享是否可以浏览,默认是yes
available:指定共享资源是否可用,默认是yes,设为no则关闭该资源的共享服务,用户无法连接到该资源上。
valid users:设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalid users:设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
force user:指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
force group:指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
read list:设定此名单内的成员为只读(用户名/@组名)
write list:若指定了valid users或设定为只读时,则只有此名单内的成员才可作写入动作(用户名/@组名)
create mask:创建文件的权限
directory mask:目录的控制权限
printable:是yes/否no允许打印
hide dot ftles:是yes/否no隐藏隐藏文件
public:是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
guest ok:是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read only:是yes/否no以只读方式共享当与writable发生冲突时也writable为准
allow hosts:设定只有此网段/IP的用户才能访问共享资源,用 except IP去除网段/IP限制
deny hosts:设定只有此网段/IP的用户不能访问共享资源
[homes]
若设了[homes]所有,参数除外browseable与共享资源的参数相同
browseable = yes
用户从Windows访问时如用户tom,将会列出其主目录tom和homes目录,homes目录下的内容与主目录完全相同,而browseable = no只列出其主目录tom。
编辑配置文件,新建一个smb.conf文件,添加如下信息
#vim /etc/samba/smb.conf
[global] #找到这一行(全局设置标签),在此行下面添加如下行:
workgroup = WORKGROUP #工作组名称改为 Windows 网络所定义的工作组名
server string = Samba Server #设置samba服务器的主机名称
security = user #设置samba服务器安全级别为user,即以账号和口令访问
netbios name = SambaServer #设置Samba服务器访问别名
#在配置文件的末尾添加以下自定义内容
[SambaServer] #在Windows网上邻居中看到的共享目录的名字
comment = SambaServer #在Windows网上邻居中看到的共享目录的备注信息
path = /home/SambaServer #共享目录在系统中的位置
public = no #不公开目录
writable = yes #共享目录可以读写
valid users=SambaServer #只允许SambaServer用户访问
保存配置退出,测试配置文件用#testparm命令
6、添加访问linux共享目录的账号SambaServer
用户家目录为/home/SambaServer, 用户登录终端设为/bin/false(即使之不能登录系统)
#cd /home #进入/home目录
#mkdir SambaServer #建立SambaServer文件夹
#touch samba.txt #创建测试文件samba.txt
#useradd SambaServer -d /home/SambaServer -s /bin/false #添加SambaServer用户,不可以登录系统
#chown SambaServer:SambaServer /home/SambaServer -R #配置文件夹归属权限
7、将用户SambaServer添加入到Samba用户数据库,并设置登录共享目录的密码为:123456
#smbpasswd -a SambaServer
New SMB password: 输入该用户用于访问Samba共享文件的密码
Retype new SMB password: 再次确认输入该密码
Added user SambaServer. #提示添加用户成功
#特别注意:这里设置的密码是用户登录Samba共享目录的密码,不是用户登录linux系统的密码
smbpasswd -a username #设置访问共享用户密码
smbpasswd -x username #删除用户
smbpasswd -d username #禁用用户
smbpasswd -e username #恢复禁用
smbpasswd -n username #设置用户密码为空
/etc/samba/smbpasswd 这个是旧版 samba 在使用的,新的已经改用 tdbsam,所以不再使用
在 /etc/samba/smb.conf的[global]中加入passdb backend = tdbsam,执行 pdbedit -L -v 就可以看到 samba 用户信息
# cat smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam:/etc/samba/passdb.tdb
follow symlinks = yes
wide links = yes
wide links = yes
unix extensions = no
config file = /etc/samba/conf.d/smb.conf.%U #配置文件所在目录,%U指用户名
tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd -a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。
pdbedit -a username:新建Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表的详细信息。
pdbedit -c “[D]” -u username:暂停该Samba用户的账号。
pdbedit -c “[]” -u username:恢复该Samba用户的账号。
8、重启Samba服务器
#service smb restart
9、在Windows客户端访问测试
运行界面输入 “\\ip”或者 \\SambaServer #服务器别名,回车之后,会跳出来登录框,输入账号SambaServer 密码123456,即可访问共享目录
至此,CentOS linux samba服务器配置完成
10、其他配置说明
①.Samba定义的变量:
%S 当前服务器名
%P 当前服务器的根目录
%u 当前服务器的用户名
%g 当前用户所在的主工作组
%U 当前对话的用户名
%G 当前对话的用户我主工作组
%H 当前服务器用户的home目录
%v Samba服务器的版本号
%h 运行Samba服务器的主机名
%m 客户机的NetBios名
%L 服务器的NetBios名
%M 客户机的主机名
%N NIS服务器名
%p NIS服务器的Home目录
%R 所采用的服务器等级
%d 当前服务进程的ID
%a 客户机和结构
%I 客户机的IP
%T 当前日期和时间
②.SWAT(Samba Web Administration Tool)工具使用
SWAT 是通过浏览器对 Samba 进行管理的工具之一。通过 SWAT ,可以在 Samba 允许访问范围内的客户端,用浏览器对服务端的 Samba 进行控制。在线文档的阅览、smb.conf 的确认和编辑,以及密码的变更、服务的重启等等都可以通过 SWAT 来完成,它的直观让 Samba 变得温和化,对那些不喜欢文本界面管理服务器的朋友来说,是一个强大的工具。
安装 SWAT,首先,通过 yum 在线安装 SWAT
# yum -y install samba-swat # 在线安装 SWAT
配置 SWAT,编辑 /etc/xinetd.d/swat ,对其进行配置,只允许内网以及本地的客户端对 SWAT 进行访问。
# vi /etc/xinetd.d/swat # 编辑 SWAT 的配置文件
only_from = 127.0.0.1 # 找到此行,在下面添加如下行:
only_from = 192.168.0.0 # 添加此行,只允许内网范围对 SWAT 进行访问
disable = yes # 找到此行,将 yes 改为 no
disable = no # 变为此状态
启动 SWAT,在启动 SWAT 之前,先将防火墙中 SWAT 使用的 901 号端口开放。
# vi /etc/sysconfig/iptables #编辑防火墙规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 901 -j ACCEPT #开放SWAT的901端口
# service iptables restart #重新启动防火墙,使新的规则生效
由于 SWAT 的启动是通过超级服务器,所以只要重新启动 xinetd 即可启动 SWAT 。
# service xinetd restart # 重新启动超级服务器,启动 SWAT
在swat页面我们可以看到有8个选项,每个选项可以配置samba的不同功能。
HOME:Samba相关程序及文件说明。
GLOBALS:设置Samba的全局参数。即smb.conf文件的[global]。
SHARES:设置Samba的共享参数。
PRINTERS:设置Samba的打印参数。
WIZARD:Samba配置向导。
STATUS:查看和设置Samba的服务状况。
VIEW:查看Samba的文本配置文件,即smb.conf。
PASSWORD:设置Samba用户,可以修改密码,新建删除用户。
测试 SWAT
在服务端启动 SWAT 后,我们就可以通过 SWAT 允许范围(本文以内网192.168.0.0及本地127.0.0.1为例) 内的客户机的浏览器中,通过 http://服务器的内网IP:901 来访问服务端的 SWAT 了。如下所示:
1.在浏览器中输入“http://服务器的内网IP:901”(本文以笔者测试环境的“http://192.168.0.9:901”为例。请各自替换为您的服务器内网IP地址。),然后输入 root 用户的用户名及密码进入 SWAT 的管理首页;
2.确认出现如下 SWAT 管理中心的首页:
通过 SWAT 管理 Samba 与直接修改 smb.conf 的方式,在本质上并无差异,但通过浏览器访问的方式,可以使 Samba 的管理更加温和化,更加适用于不擅长使用文本界面、直接修改配置文件的朋友。
linux 访问windows文件配置
通常我们使用Samba都是在Windows上访问做为Samba服务器的Linux。但是在某些时候情况会反过来,你可能需要从Linux上访问Windows共享出来的目录。幸运的是,Samba本身也支持这种类型的访问。
3.从Linux访问Windows上的共享目录,需要安装smbclient工具。在CentOS上则使用yum命令安装:
# yum install samba-client
安装好smbclient工具,就可以使用mount命令来挂载Windows上的共享目录了:
# mount -t cifs -o windowsusername=username //windows-machine/share /mnt/winshare 计算机名访问
# mount -t cifs -o username=user,password=passwd //192.168.1.100/share /mnt/winshare IP
分类:linux
评论数:0
阅读数:821