介绍
在小型网络中,例如家庭网络、或在非域主机中共享目录,通常你不想设置AD域或NT4域。本文描述了如何配置Samba作为独立服务:
- 允许匿名访问的共享;
- 支持Samba本地用户认证的共享;
允许访客访问的smb.conf
如下配置为,仅为支持访客访问的最小化配置。
[global]
map to guest = Bad User
log file = /var/log/samba/%m
log level = 1
server role = standalone server
[guest]
# This share allows anonymous (guest) access
# without authentication!
path = /srv/samba/guest/
read only = no
guest ok = yes
guest only = yes
认证访问的smb.conf
如下配置为,Samba作为Standlone server的最小化配置。
[global]
log file = /var/log/samba/%m
log level = 1
server role = standalone server
[demo]
# This share requires authentication to access
path = /srv/samba/demo/
read only = no
valid users = @demoGroup
inherit permissions = yes
- 可通过修改workgroup = xxxxx设置workgroup,该参数未设置时,默认使用WORKGROUP
- 最小化设置 log参数不是必须的,但其对出现问题的情况非常有用;
- 以上配置为最小化配置,你也可以添加其他参数。
创建本地用户账户
要在独立主机上提供身份验证,您必须在操作系统以及 Samba 数据库中创建帐户。默认情况下,Samba 使用 tdbsam 并将数据库存储在 /usr/local/samba/private/passdb.tdb 文件中。使用 smb.conf 文件中 passdb 可选参数可以设置数据库的存储位置。有关详细信息,请参阅 smb.conf 5 手册页。
- 在本地系统创建一个 demoUser 账户:
# useradd -M -s /sbin/nologin demoUser
- 在本地系统启用 demoUser 账户:
# passwd demoUser
Enter new UNIX password: Passw0rd
Retype new UNIX password: Passw0rd
passwd: password updated successfully
- 将demoUser账户添加到Samba数据库:
# smbpasswd -a demoUser
New SMB password: Passw0rd
Retype new SMB password: Passw0rd
Added user demoUser.
该密码将用于用户登陆Samba、域。
本地用户组管理
创建一个demoGroup用户组:
# groupadd demoGroup
添加demoUser账户到该用户组:
# usermod -aG demoGroup demoUser
创建共享目录
创建要共享的目录:
# mkdir -p /srv/samba/guest/
# mkdir -p /srv/samba/demo/
为共享目录设置ACL
设置如下的POSIX权限:
# chgrp -R demoGroup /srv/samba/guest/
# chgrp -R demoGroup /srv/samba/demo/
# chmod 2775 /srv/samba/guest/
# chmod 2770 /srv/samba/demo/
- 以上目录对于demoGroup的成员均有读写权限;
- 其他用户/srv/samba/guest/对拥有读权限,对/srv/samba/demo/没有权限;
- 上面目录权限中的第一位(2)是SGID位,代表新的文件被创建时,继承父目录的所属用户组;
若需要更多信息,请访问 使用POSIX ACL设置共享。
测试共享访问权限
每次更新 /etc/samba/smb.conf 文件,你应该使用testparm工具来验证Samba配置是否有效。可以执行如下:
# testparm -s
输出如下:
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
...
如果输出中显示了任何错误,你需要先修复它。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。