SAMBA服务器搭建

一、安装软件

yum -y install samba samba-common samba-client  

二、主要相关文件

/etc/samba/smb.conf    samba的主要配置文件

/etc/samba/smbusers    samba的用户别名,比如可以将root用别名administrator、admin代替等(作用:可以只告知samba用户该别名,这样可以保护真实的samba服务器/etc/passwd的用户不泄漏)

/etc/samba/lmhosts     samba的IP和域名对应,类似/etc/hosts文件功能

/etc/samba/smbpasswd        该文件为手动创建,用于存放samba用户及密码

三、smb.conf主要说明

[global]

workgroup = WORKGROUP
//说明:指明共享所在的工作组,可以是NT域名、工作组名
server string = samba server on Centos
//说明:客户端看到的服务器的描述信息
netbios name = centos_smb
//说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了
interfaces = lo eth0
//说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址
hosts allow = 192.168.1. 192.168.163. 192.168.153.
//说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。我这里只允许3个网段里的所有客户端访问samba server。(注释掉表示允许所有IP)
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)来完成认证。
我只需要user级别的安全验证就可以了。
username map = /etc/samba/smbusers
//说明:用来定义用户名映射,比如可以将root换成administrator、admin等。要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,以保护Linux的系统账号root。后面会介绍这个文件
encrypt passwords = true
//说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。
passdb backend = smbpasswd
//说明:passdb backend密码验证后端。目前支持的有三种:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。这里我选用smbpasswd。
smb passwd file =/etc/samba/smbpasswd
//说明:用来定义samba用户的密码文件。smbpasswd文件如果默认不存在,要手工新建。
log file = /var/log/samba/log.%m
//说明:设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)。
max open files = 1000
//说明:同一客户最多能打开的文件数目
socket options = TCP_NODELAY
//说明:用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。

[xxxxx] 共享目录
//说明:xxxxx表示共享名

comment = code string
//说明:comment是对该共享的描述,可以是任意字符串。
path = /home/songyd/code
//说明:path用来指定共享目录的路径。
writable = yes
//说明:writable用来指定该共享路径是否可写。这里我们允许写入,以满足文件双向共享。

writelist = mysql, jack

//说明:只允许mysql和jack2个用户对此资源可以写,其他的为read only
browseable = yes
//说明:browseable用来指定该共享是否可以浏览。
available = yes
//说明:available用来指定该共享资源是否可用。
guest ok = no
//说明:是否允许允许来宾访问
read only = yes
//说明:设置权限为只读权限
public = no
//说明:共享目录允许所有用户访问及上传文件
valid users = jack sunny
//说明:只允许jack sunny访问该共享资源

四、一个完整的smb.conf实例

[global]
workgroup = WORKGROUP
server string = samba server on Version %v
netbios name = centos_smb
interfaces = lo eth0
#hosts allow = 192.168.16. 192.168.20.
security = user
username map = /etc/samba/smbusers
encrypt passwords = true
passdb backend = smbpasswd
smb passwd file =/etc/samba/smbpasswd
log file = /var/log/samba/log.%m
max open files = 1000
socket options = TCP_NODELAY

[webfile]
comment = frontend web
path = /home/wwwroot/frontend/web
browseable = yes
writable = yes
create mask = 0664
directory mask = 0755
guest ok = no
public = no
available = yes

五、新建samba用户

smbpasswd -a mysql (mysql为/etc/passwd下存在的用户,不存在会报错)

New SMB password:
Retype new SMB password:
Added user mysql.

输入完该samba用户密码后,会在/etc/samba/smbpasswd文件生成mysql用户密码信息,如果不想让samba用户使用mysql作为samba用户名访问的话,则可以在/etc/samba/smbusers 设置改用户别名,如下写出了添加mysql后的smbpasswd文件和smbusers文件信息

[root@nginx samba]# cat smbpasswd
mysql:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:FDB5CFC19C8AC660A21CA41FE95E7D8:[U ]:LCT-5874994E: 
[root@nginx samba]# cat smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
mysql = sql     (samba用户可以使用sql作为samba帐号来访问samba服务器)

六、重启、启动samba

service smb start

service nmb start  (nmb作用是netbios,可以使用主机名方式访问samba)

原文地址:https://www.cnblogs.com/harlanzhang/p/6269941.html