FreeBSD 下安装Samba
在FreeBSD 下安装Samba
1. Samba 安装
-----------------
Samba有二进制安装的版本, 也有源代码安装版本. 我用的系统是FreeBSD,
Samba的二进制安装并不支持FreeBSD. 所以, 我就选择了源代码安装方式.
我使用的samba版本是 samba-3.0.21a.tar.gz
shell> tar zxvf samba-3.0.21a.tar.gz
shell> cd samba-3.0.21a/source
shell> ./configure
shell> make
shell> make install
shell> cp …/examples/smb.conf.default /usr/local/samba/lib/smb.conf
2. 创建用户
-------------
这里我不得不说一句,目前我还没看到网上有任何一篇文章仔细地解释samba的用户关系问题!
不厚道啊~~ 我是摸索了好久才得出以下认识的:
(1)samba用户管理使用smbpasswd和pdbedit命令
(2)samba认证使用的用户和组首先要在本地系统中存在
(3)samba只存储独立于本地系统的用户和口令信息,组则使用本地系统的组信息
首先在本地系统中创建用户user1和user2, 创建组group1和group2, user1属于group1,
user2属于group2.
然后再创建samba用户:
shell> /usr/local/samba/bin/smbpasswd -a user1
New SMB password:
Retype new SMB password:
shell> /usr/local/samba/bin/smbpasswd -a user2
New SMB password:
Retype new SMB password:
如果失败,则可能是本地系统没有事先建立同名帐号.
可以使用pdbedit -L列出现有samba用户清单, 如果清单中有新加入的用户名, 则说明用户
创建成功.
3. 配置Samba
-----------------
shell> vi /usr/local/samba/lib/smb.conf
下面是我实际搭建环境中的一个实例:
-----------------------------------
# Samba config file created using SWAT
# from 10.217.15.133 (10.217.15.133)
# Date: 2006/01/05 09:42:54
[global]
workgroup = MYGROUP
netbios name = SINA-NFS
server string = Sina NFS
log file = /usr/local/samba/var/log-%M-%I
max log size = 50
load printers = No
dns proxy = No
[it]
path = /data1/it
valid users = @group1, @group2
read list = @group1, @group2
write list = @group1, @group2
[driver]
path = /data2/driver
write list = @group1
guest ok = Yes
[software]
path = /data2/software
write list = @group1
guest ok = Yes
[patch]
path = /data2/patch
write list = @group1
guest ok = Yes
以上是通过SWAT配置后生成的最终配置文件,但实际上我手工配置时还在global部分加入了:
security = user
encrypt passwords = yes
smb passwd file = /usr/local/samba/private/smbpasswd
那上面配置要实现的目的是:
(1)所有用户都可以看到(browseable)共享目录it,driver,software,patch;
(2)group1的用户对共享目录it,driver,software,patch有读写权限;
(3)group2的用户对共享目录it有读写权限,对共享目录driver,software,patch只读;
(4)非group1和group2的用户对共享目录driver,software,patch只读,对共享目录it无读写权限;
4.设置共享目录权限
---------------------
shell> chmod -R 0777 /data1/it
shell> chmod -R 0777 /data2/driver
shell> chmod -R 0777 /data2/patch
shell> chmod -R 0777 /data2/software
5.启动samba
---------------
/usr/local/samba/sbin/smbd -D &
/usr/local/samba/sbin/nmbd -D &
6.自动运行samba
------------------
有两种方法:
(1)在/etc/rc.local加入以下内容:
/usr/local/samba/sbin/smbd -D &
/usr/local/samba/sbin/nmbd -D &
(2)在/etc/inetd.conf中加入以下内容:
netbios-ssn stream tcp nowait root /usr/local/samba/sbin/smbd -D smbd
netbios-ns dgram udp wait root /usr/local/samba/sbin/nmbd -D nmbd
swat stream tcp nowait/400 root /usr/local/samba/sbin/swat swat
第二种方法要保证inetd正常运行.
7.SWAT管理
-------------
默认情况下SWAT已被安装.
我试过通过执行/usr/local/samba/sbin/swat启动SWAT没有成功, 只有通过inetd.conf才可以成功启动.
启动成功后可以通过http://samba_server_ip:901/访问SWAT管理页面.
默认情况, SWAT使用本地系统的root用户作为管理帐号. 注意, 是系统用户, 不是samba的共享用户.
8.检查服务是否正常
---------------------
通过netstat -an看到服务端口已处理监听状态:
tcp4 0 0 *.901 . LISTEN
tcp4 0 0 *.139 . LISTEN
udp4 0 0 10.0.0.38.138 .
udp4 0 0 10.0.0.38.137 .
udp4 0 0 *.138 .
udp4 0 0 *.137 .
9.小技巧
-------------
(1)如何在一个共享目录中嵌入其它目录
有时我们需要使用多块磁盘, 那经常变更目录或更换磁盘非常麻烦, 我还不了解在samba中如何
使用多个磁盘支持同一共享目录. 所以, 我使用的方法是:
在已有共享目录中建立一个到其它磁盘的链接.
假设我要在共享目录it下建立一个到磁盘/data3上的目录iso的链接, 那么需要进行以下操作:
shell> cd /data1/it
shell> ln -s /data3/iso iso
shell> chmod -R 0777 /data3/iso
humen1 Tech