2007年11月3日星期六

Samba基本安全配置

创建用户密码

安装samba的时候会自动导入系统中的用户,但密码为空,假设你日常登录的用户名是myname,我们来设置密码:

sudo smbpasswd myname
......
sudo pdbedit -Lwu myname
[sudo] password for myname:
myname:1000:FB085DBF72E92604AAD3B435B51404EE:F62C03CB1000CBF94244057FD4E829F4:[U ]:LCT-472C5667:
如果密码为空,则上面输出中两个长字符串会是两长串X。你可以在这里设置一个和shell登录不同的密码。

没找到pdbedit为已有用户添加密码的方法,据说添加新用户时会要求密码,没试。

smbpasswd通过直接与Samba服务器通讯来管理用户和密码。所以相对于服务器密码后端无关。服务器密码后端即使不是smbpasswd,smbpasswd形式密码到默认的SAM密码转换应该也会由服务器完成。

配置文件

服务器配置文件是/etc/samba/smb.conf,这里主要列出需要添加和修改的部分,其余默认:
[global]
browseable = No
hosts deny = all
hosts allow = 192.168.0.33 127.
security = user
encrypt passwords = true
invalid users = root nobody

[winapps]
comment = Windows Program Files
path = /home/myname/share
writable = yes
valid users = myname
browseable = no
create mode = 0644
directory mode =0755
sync always = Yes
我们主要看global字段的设置:
  • 用户使用smbclientnet view之类的命令查看服务器上有哪些共享的资源时,什么也看不到,这是browseable的功劳
  • 两个host语句则限制了可以访问服务器的ip地址,127.表示127.0.0.1,注意不要省略小数点。这里deny和allow的设置顺序好象并无关系,当两者发生冲突时,hosts allow优先。
  • security保证了访问服务器需要密码,即访问服务器时会有提示输入密码,如果密码为空,可以直接回车,如匿名用户
  • 对密码进行加密
  • 禁止root和匿名用户访问,不过让人迷惑的是你还能看到Anonymous login successful的字样,以及一些关于服务器的信息:Domain=[MSHOME] OS=[Unix] Server=[Samba 3.0.26a],除此之外你什么也看不到,即使只是查询有哪些共享资源,你都会得到一个错误消息。
最后,大家可以参考一下Samba:整合 Windows Network,本文也借鉴了其中的许多内容。