Samba的配置文件为/etc/samba/smb.conf,通过修改这个配置文件来完成我们的各种需求。打开这个配置文件,你会发现很多内容都用”#”或者”;”注视掉了。先看一下未被注释掉的部分:
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
主要有以上三个部分:[global], [homes], [printers]。
(1)[global] 定义全局的配置
(2)[homes] 该部分内容共享用户自己的家目录
当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。
(3)[printers] 该部分内容设置打印机共享
其中:
”workgroup”用来定义工作组,一般情况下,需要我们把这里的”MYGROUP”改成”WORKGROUP”(windows默认的工作组名字)。
security = user #这里指定samba的安全等级。关于安全等级有四种:
> share:用户不需要账户及密码即可登录samba服务器
> user:由提供服务的samba服务器负责检查账户及密码(默认)
> server:检查账户及密码的工作由另一台windows或samba服务器负责
> domain:指定windows域控制服务器来验证用户的账户及密码。
load printers 和 cups options 两个参数用来设置打印机相关。
passdb backend = tdbsam # passdb backend (用户后台),samba有三种用户后台:smbpasswd,tdbsam和ldapsam.
1.smbpasswd
该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。
2.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用户账号。
3.ldapsam
基于LDAP账户管理方式验证用户。首先要建立LDAP服务,设置“passdb backend = ldapsam:ldap://LDAP Server”
[myshare]常用参数 其中[]里面的MyShare指定共享名,一般就是网络邻居里面可以看见的文件夹的名字。
comment = My share
path = /samba //共享路径
browseable = Yes //可以被浏览,就是在网络邻居中能看到共享名
read only = No //可读写
guest ok = Yes //允许匿名访问,这个也需要设置,否则匿名无法访问
valid users = samba //有效的用户和组
invalid users = xll //无效用户和组
read list = samba //只读用户和组(如果read only = No,只读用户需要在此设置)
write list = samba //可读写用户和组(如果read only = Yes,可读写用户需要在此设置)
allow hosts = 192.168.100.236 //允许访问主机列表,支持通配符
deny hosts = 192.168.100.0/24 //禁止访问主机列表,支持通配符
实战:
[global]部分
把”MY GROUP”改成”WORKGROUP”
把”security = user” 修改为 “security = share”
然后在文件的最末尾处加入以下内容:
[share]
comment = share all
path = /samba
browseable = yes
public = yes
writable = no
mkdir /samba
chmod 777 /samba
sudo /etc/init.d/samba restart #重启samba服务
[global] 部分内容如下:
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
然后加入以下内容:
[myshare]
comment = share for users
path = /samba
browseable = yes
writable = yes
public = no
mkdir /samba
chmod 777 /samba
添加用户 因为在[globa]中”passdb backend = tdbsam”,所以要使用”pdbedit” 来增加用户,注意添加的用户必须在系统中存在。
useradd user1 user2
pdbedit -a user1 # 添加user1账号,并定义其密码
pdbedit -a user2
pdbedit -L # 列出所有的账号
sudo /etc/init.d/samba restart #重启samba服务
如果在[globa]中用”passdb backend = smbpasswd
sudo smbpasswd -a <username> # 把用户加入Samba中
当然, < username > 是否需要写取决于是否处于root权限下