Linux使用Samba共享文件
文章目录
创建samba服务器
(1)创建smb.conf文件
(2)在smb.conf文件中加入文件共享小节
(3)在smb.conf文件中加入打印机共享小节
(4)启动samba守护进程nmpd和smbd
配置samba服务器
核心配置文件是smb.conf,通常位于etc文件夹下,也可能在lib目录中,如 /usr/local/samba/lib。
smb.conf分为不同小节,每个小节名称用方括号包围,如 [global]。[global]节包含了整个服务器共有的配置,这些配置主要关于网络配置和访问控制的。[global]示例:
[global]
# server name
netbios name = name
# server description
server string = My server via Samba
# workgroup
workgroup = MYNETWORK
参数含义:
- netbios name:服务器名称,如果没填,将会使用UNIX主机名称。
- server string:服务器简介,默认为samba版本号
- workgroup:SMB工作组
服务器访问控制
在smb.conf文件中添加选项来控制访问服务器的用户和机器。下面是一些可以在[global]节和访问控制节中配置的选项:
- interfaces:让Samba监听某个网络或端口。例如
interfaces = 10.23.2.0/255.255.255.0
interfaces = eth0
- bind interfaces only :使用interfaces时,设置此项为yes,使Samba只对指定的端口服务。
- valid users:只允许指定的用户访问Samba。
- guest ok:设置为yes时共享对匿名用户可见。
- guest only:只允许匿名用户访问。
- browseable:设置共享内容是否对浏览器可见,设置为no时必须指定具体名字才能访问共享内容。
密码
访问Samba服务器要有密码验证,但是由于UNIX密码系统和windows密码系统不一样,必须要建立一套独立的密码系统,否则只能使用明文的网络密码(不安全)或者windows服务器。下面介绍使用samba的 Trival Database 来建立一套密码系统。它适合于小型网络。
在smb.conf的[global]小节中添加下列条目
security = user passdb
backend = tdbsam
obey pam restrictions = yes
smb passwd file = /etc/samba/passwd_smb
这几行代码能让你通过smbpasswd来操作Samba密码数据库。
** obey pam restrictions** 参数保证了用户通过smbpasswd 修改密码时需要遵照PAM的规则。你也可以passdb backend后指定TDB文件的路径,如tdbsam:/etc/samba/private/passwd.tdb。
注意:如果使用windows域,可以使用security = domain
让Samba使用域的用户名,这要求两端的用户名一致。
添加用户
为了让windows用户能访问Samba服务器,需要吧windows用户添加到服务器中,使用下列命令:
smbpasswd -a username
删除用户:
smbpasswd -x username
使用户暂时失效
smbpasswd -d username
**用户
smbpasswd -e username
修改密码
超级用户可以不加选项和关键字就修改任意用户的密码:
smbpasswd username
如果Samba服务正在运行,任何用户都可以在命令行修改自己的密码。
注意:在smb.conf文件中如果存在一行选项
unix passwd sync = yes
这会使Samba在更改smbpasswd时同时改掉linux登录密码。
启动服务器
如果不是使用发行版自带的samba包安装,可能需要手动启动samba服务器,使用下列命令启动:
nmbd -D -s smb.conf路径
smbd -D -s smb.conf路径
nmbd守护进程是一个NetBIOS名字服务器,而smbd才是真正处理共享请求的进程。-D选项用 于指定它们以守护进程模式运行。如果在smbd运行期间修改了smb.conf文件,可以用HUP信 号通知守护进程重读配置,或用发行版的服务重启命令(例如systemctl或initctl)来做到。
诊断和日志文件
运行时的日志文件通常在/var/log/samba/目录下。
配置文件共享
要和一个samba用户共享一个目录,需要在smb.conf文件中添加一个小节:
#共享的名称
[label]
path = path #共享的文件路径
comment = share description #
guest ok = no #是否允许匿名用户
writable = yes #是否可写
printable = no #是否可读
browserable = no #是否允许浏览器查看
veto files = /pattern/
#匹配此模式的文件不参与共享,每个模式用/包围。
共享home目录
在smb.conf文件中添加homes小节:
[homes]
comment = home directories
browseable = no
writable = yes
默认地,Samba会读取登录用户的/etc/passwd条目来获知他们的home目录。然而,如果不想用默认的做法(即让Windows的home目录与Linux的不同),可以在path参数处使用%S。 例如,下例就可以将一个用户的[homes]目录切换成/u/user:
path = /u/%S
Samba会将%S替换成当前的用户名。
共享打印机
通过在smb.conf中加入[printers]小节可以共享打印机,下面是使用标准UNIX打印系统CUPS的配置:
[printers]
comment = Printers
browseable = yes
printing = CUPS
path = cups
printable = yes
writable = no
要使用printing = CUPS参数,Samba必须配置和连接了CUPS库。如果需要,还可以配置guest ok =yes
来允许用户访问自己的打印机,而不是直接派发账号密码,因为使用防火墙控制打印机访问更方便。