Samba 这个套件的功用,可以让你把 Linux 服务器变成 Windows 里的“网络上的芳邻”中的一台电脑,提供档案服务器的服务,即使在没有网域管理(Domain)的局域网路环境中,也可以提供比 Windows 网络上的芳邻更多的权限控管。
本教学只介绍两种常用的配置方式:
开放式的设定
需要身份验证的设定
安装好 Samba 套件之后,就可以开始进行设定了。
安装 Samba
使用 Apt 安装 Samba 套件:
启用 Samba 服务:
尔后如果有修改 Samba 的设定,只要输入下列指令重新加载即可:
开放式的设定
开放式的意思,就是不用任何身份验证,就可以存取提供 Samba 服务的服务器。以下的范例,是设定局域网路里的任何用户都可存取服务器,并分享 [/tmp] 里的档案:
编辑 /etc/samba/smb.conf,设定如下:
[global]
#欲加入的群组名称
workgroup = WORKGROUP
#在“网络上的芳邻”显示的电脑名称,如果不设定,就会以目前的 HostName 去掉网域名称显示。
netbios name = FileServer
#服务器的注解
server string = Samba 档案服务器
#设定哪些电脑可以存取服务器(以空白隔开)
hosts allow = 192.168.1.0/255.255.255.0 127.0.0.1
#显示繁体中文
client code page = 950
#身份验证的方式
security = share
#分享 [/tmp]
[tmp]
path = /tmp
comment = 档案暂存区
public = yes
writable = yes
create mode = 0666
directory mode = 0777
重新启动 Samba 服务:
需要身份验证的设定
如果你希望用户要连到服务器时,必须先输入帐号、密码才可以进入,并且可以存取自己的家目录及 [/tmp],请依照下列设定:
编辑 /etc/samba/smb.conf,设定如下:
[global]
#欲加入的群组名称
workgroup = WORKGROUP
#在“网络上的芳邻”显示的电脑名称,如果不设定,就会以目前的 HostName 去掉网域名称显示。
netbios name = FileServer
#服务器的注解
server string = Samba 档案服务器
#设定哪些电脑可以存取服务器(以空白隔开)
hosts allow = 192.168.1.0/255.255.255.0 127.0.0.1
#显示繁体中文
client code page = 950
#身份验证的方式
security = user
#将密码加密传输
encrypt passwords = yes
#指定密码档位置
smb passwd file = /etc/samba/smbpasswd
#让用户可以存取自己的家目录
[homes]
comment = 个人资料夹
public = no
browseable = no
valid users = %S
writable = yes
create mode = 0600
directory mode = 0700
#分享 [/tmp]
[tmp]
path = /tmp
comment = 档案暂存区
public = no
writable = yes
create mode = 0666
directory mode = 0777
建立 Samba 的密码档,并转换用户到这个密码档:
cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
chmod 600 /etc/samba/smbpasswd
chown root.root /etc/samba/smbpasswd
重新启动 Samba 服务:
你必须要再设定用户的密码才可以存取:
其它有用的参数
以下介绍其它有用的参数,这些参数必须放在宣告的分享资源的区段下:
public = yes|no
设定针对 Guest 是否“显示”该分享项目。
browseable = yes|no
设定是否“显示”分享项目。
valid users = 用户列表
允许“检视”该分享项目的用户,可输入“用户名称”或“@群组名称”,如有多个项目,请用“,”分隔。
invalid users = 用户列表
不允许“检视”该分享项目的用户,可输入“用户名称”或“@群组名称”,如有多个项目,请用“,”分隔。
read only = yes|no
是否唯读。
writable = yes|no
是否可以写入。
write list = 用户列表
允许“写入”该分享项目的用户,可输入“用户名称”或“@群组名称”,如有多个项目,请用“,”分隔。
create mode = 权限
建立档案时默认的权限。
directory mode = 权限
建立目录时默认的权限。
force user = 用户名称
建立档案或目录时默认的用户。
force group = 群组名称
建立档案或目录时默认的群组。
Samba 的变量
%S: 取代目前的“资源名称”,所谓的“资源名称”就是在 [ ] 里面的内容。
ex: valid users = %S
%U: 代表目前登入的使用者的使用者名称。
%m: 代表 Client 端的 NetBIOS 名称。
%g: 代表登入的使用者的群组名称。
%M: 代表 Client 端的 Internet 主机名称,就是 HOSTNAME。
%L: 代表 SAMBA 主机的 NetBIOS 名称。
%h: 代表目前这部 SAMBA 主机的 HOSTNAME。
%H: 代表使用者的家目录。
%I: 代表 Client 端的 IP。
%T: 代表目前的日期与时间。
新增 Samba 用户
关于 Samba 上的用户帐号,有一些规则要说明:
Samba 上的用户帐号必须是已存在于 Linux 系统的帐号。
Linux 系统与 Samba 用户的密码是不同的,它们有各自的密码档。
Samba 的密码档位于 /etc/samba/smbpasswd。
因此,如果你要新增 Samba 用户,你就必须先在 Linux 系统增加一个本机用户,新增本机用户之后,再输入下列指令将用户的帐号及密码加入至 Samba 的密码档:
smbpasswd -a UserName
以后如果只是要变更该用户的密码,只要输入:
smbpasswd UserName
用户自行变更密码
原本 Samba 有提供一个 Swat 套件,就是 Samba 的网页管理接口,不过,我觉得似乎不太够用(给管理者用还可以)。如果我希望用户可以自行变更 Linux 系统的密码,并同步变更 Samba 的密码,那就要试试 ChangePassword 套件:
从本站下载 ChangePassword 套件至 [/tmp]
cd /tmp
wget http://www.vixual.net/download/source/ChangePassword/changepassword-0.9.tar.gz
tar -xzvf changepassword-0.9.tar.gz
cd changepassword-0.9
./configure --enable-cgidir=/var/www/cgi-bin --enable-smbpasswd=/etc/samba/smbpasswd --disable-squidpasswd
请注意,上面(第 5 行)的 “/var/www/cgi-bin” 请改为你的网站的 cgi-bin 路径。
然后继续下列步骤:
这样就安装完成了,以后你就可以到 “http://host.example.com/cgi-bin/changepassword.cgi” 同步变更 Linux 系统及 Samba 的密码。
网页管理接口
这个套件(Swat)其实不是那么必要(尤其是有了上面的 ChangePassword 套件之后),但仍然列出安装步骤给大家参考:
安装 Samba-Swat 套件:
apt-get install samba-swat
编辑 /etc/xinetd.d/swat,搜寻:
改成:
继续搜寻:
改成允许连线的位址:
only_from = 192.168.1.0/24
重新启动 Xinetd:
从浏览器输入连线位址:
http://host.example.com:901/
参考网页
Samba: User and Group Based Controls
Samba Documentation
鸟哥的 Linux 私房菜
网管专区
Samba 设定