欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux使用Samba共享文件

程序员文章站 2022-05-11 17:28:31
...

创建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来允许用户访问自己的打印机,而不是直接派发账号密码,因为使用防火墙控制打印机访问更方便。

相关标签: Samba