位置:海鸟网 > IT > linux/Unix >

.Linux Samba Server的配置文件解析

错新网讯

Samba 使用/etc/samba/smb.conf 作为他的的主配置文件,直接修改并不直接生效,直到你在使用了

#service sma restart 

命令重启Samba服务之后才会生效。下面是smb.conf 文件的几个有用参数:

workgroup = WORKGROUP-NAME ##############设置加入工作组名称

server string = BRIEF COMMENT ABOUT SERVER ##############此选项是可选的,主要作用是Samba服务Windows系统注释。

Host allow = 192.168.1. 192.168.2. 127. ##############此项对安全性非常重要.它严格限制了可访问Samba 的范围.默认是允许所有IP访问.. 

Printcap name = /etc/printcap  ############设置打印机配置文件路径 

Load printers = yes  #########是否将打印机共享 

Printing = cups  #################打印机的类型.若用的打印机的是linux标准类型的则不要更改 

Guest account = pcguest ##################如果想让用户`pcguest`以匿名用户身份登陆..;就去掉前面的注释。并确保在/etc/passwd中有此用户。这里的pcguest可以根据需要改成用户自己设置的本地用户。 

Loginfile = /var/log/samba/%m.log ####################log会在此目录中为每个登陆用户(Samba用户)建立不同的日志文件。 

Passwd Server = ##################密码验证服务器。当用户从Windows通过Samba使用linux时。全自动传送登陆windows时的用户名与密码给Samba。然后Samba向windows server验证这两项信息是否正确。若不正确,则会出现对话框要用户重新输入用户名与密码。而这个密码服务器可以是NT SERVER(通常是主域控制器)或是另一个Samba Server。 因此若Security = share,则要删除关于密码服务器的那一行。 

Password Level -= 8 ##########################密码级别设置 

Encrypt password = yes ##############用户密码要加密。由于现在98/NT 皆用加密的密码。因此要有这一项,当然也可以要求使用不加密的密码。 

Smb Passwd file = /etc/samba/smbpasswd ############将密码验证服务器,设置为Samba server时,需要用此行来指定要验证的密码文件,这最重要的是密码文件设置的路径。 

Uin passwd sync = yes 

Passwd program = /usr/bin/passwd %u ##############接下来的两行设置用来容许WIN密码改变后可更新linux系统的密码,确定`encrypt passwords`和`smb passwd file `项被启用。 

Pam password change = yes ##############当用户要求更改密码时,使用PAM。不用本地口令程序/user/bin/passwd 

Username map = /etc/samba/smbusers ##############在此文件中设置对应的用户名称,例如:root=administrator admin 等,如果每个windows用户在samba服务器中都有账号,则可以不设置, 

Include = /etc/samba/smb.conf %m ##############此行允许用户自定义每台计算机的基本配置文件,%M代表NETBIOS正在连接的计算机的称。 

Obey pam restrictions = yew ##############当用户认证时,服从PAM的管理限制。 

Socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 ##############设置服务器和客户之间会话的Socket选项,此项设置将优化传输速度。 

Interfaces = 192.168.12.2/24 192.168.13.2/24 ##############如果用多网络界面须在此列出。 

Remote browse sync = 192.168.3.25 192.168.2.255 ##############本行和下一行是远程浏览设置 

Remote announce = 192.168.1.255 192.168.2.44 

# Browser Control Options 浏览控制选项 

local master = no 

oslevel = 33 

domain master = yes 

preferred master = yes 

domain logons = yes 

logon script = %M.bat ##############本行和下一行设置登陆脚本 

logon script = %U.bat 

wins support = yes ##############wins server支持 

wins server = w.x.y.z ##############wins 客户端设置 

wins proxy = yes ##############wins proxy 设置 

dns proxy = no ##############dns proxy设置,默认是不为客户端做DNS查询的 

[homes] ##############用户访问自己目录的设置 

browseable = no ##############用户私人目录,不需要给别人浏览 

writeable = yes ##############用户写入自己目录的权限 

[netlogon] 

guest ok = yes 

share modes = no 

[profiles] ##############默认profiles设置 

[printer] ##############打印机设置 

path = /var/spool/samba ##############打印机池(spool)用户须自创建目录 

browseable = no ##############此行存放打印机的临时文件 

set public = yes to allow user `guest prinr ##############如果设置,则允许guest用户使用打印机 

printable = yes ##############用户是否可以打印 

[temp] 

read only = no ##############是否只读或可写入 

public = yes ##############是否共享 

配置share级别的服务器

workgroup = linux

hosts allow = 192.168.1. ##############如不想限制可注释掉 

printcap = /etc/printcap 

load printers = yes 

printers = lprng 

guest account = abc ##############这需要指定一个用户帐号abc是samba中已存在的一个用户帐号 

logfiles = /var/log/samba/%m.log 

maxlog size = 50 

security = share 

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF =8192 

##注:其它可能以按smb.conf默认设置 

##重启服务 

测试samba命令testparm 

====================================================================== 

配置USER 级别的服务器 

在share级的基础配置上修改: 

security = user 

添加: 

guest account = zjz 

encrypt passwords = yes 

smb passwd file = /etc/samba/smbpasswd ##############当配置文件/etc/smb.conf进行user级的设置后需要设置samba密码文件.建立smbpasswd帐号和口令。使其与/etc/passwd的帐号和口令相同。 

方法如下: 

1:建立本地帐号,生成口令文件夹/etc/passwd,把/etc/passwd里的用户都加到/etc/samba/smppassword文件中 

注意:该过程是先在本地建立帐号和密码,然后再把口令文件传给/etc/samba/smbpasswd,顺序不能相反。因本地帐号的口令和samba服务器中的帐号的口令是不相同的。 

#adduser zjz 

#passwd zjz 

#cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd 

这里的`/etc/samba/smbpasswd和smbpassspwd和smbpasswd file = /etc/samba/smbpasswd`r 路径要相同. 

2:利用smbpasswd命令来为刚才建立的帐号设立samba server 口令。 

注意:使用smbpasswd 命令修改用户口令时。被修改的samba帐号的本地系统用户帐号须已经存在。 

#smbpasswd zjz 

重启samba服务。USER级服务器配置完毕。 

注意:如果不能实现WIN计算机和Samba资源互访。可以在各自的主机中添加对方的主机名和IP地址,然后再测试:方法如下: 

在linux系统/etc/hosts中添加:win-IP Win hostname (192.168.0.11 mywinpc) 

在windows系统c:\windows\hosts中添加:win-IP Win—hostname 

配置Server级服务器 

server级的安全性比USER级更高。在suer级配置的基础上修改: 

security = server 

添加: 

password server = libtserver ##############密码服务器,这里是用win2k主域控制器libserver”来做密码服务器。当然也可以用另一个samba server来做密码服务器。 

注释掉smbpasswd file = /etc/samba/smbpasswd 

设置完后,用testparm和smbclient命令进行调试。这样当一台win NT/98计算机登陆libserver域服务器时,同时也登陆了Samba Server 上。不过这时的用户帐号和密码在libserver和Samba server 上应该是相同的。如果是已经加入的libserver主域控制器的计算机就可以输入用户帐号和密码来打开Samba Server 的共享文件。其它计算机虽然也和samba server 在同一个网段上,但如果不用libtserver和samba server 共有的用户帐户和密码登陆。就不能访问samba. 

【相关文章】

修改配置文件

[root@linux-zlg home]# cd /etc/samba

[root@linux-zlg samba]# vi smb.conf

^^^^^^^^^^^^^^^^^^^^^^内容如下^^^^^^^^^^^^^^^^^^^^^^

[global]

   workgroup = MYGROUP      建议设置为同windows一样的工作组名如workgroup

   server string = Samba Server    网上邻居访问时备注注信息中可以看到  

;   hosts allow = 192.168.1. 192.168.2. 127.     允许访问的网络或主机地址

   printcap name = /etc/printcap

   load printers = yes                 自动加载打印机列表

   printing = cups                    打印系统名称

;  guest account = pcguest 如不设,则默认匿名帐号为nobody

   log file = /var/log/samba/%m.log

   max log size = 0                0为不限制,如指定,则单位为KB。

   

security = user     安全级别:share/user/server/domain后两种需指定验证的服务器

#  password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name] 

# or to auto-locate the domain controller/s

#   password server = *

;   password server = <NT-Server-Name>           安全级别的后两种需要的验证服务器

   encrypt passwords = yes

   smb passwd file = /etc/samba/smbpasswd

   pam password change = yes

# Unix users can map to different SMB User names

;  username map = /etc/samba/smbusers     Windows和Linux之间的用户映射文件

;   include = /etc/samba/smb.conf.%m

   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 定义网络socket 方面的一些参数,能实现更好的文件传输效率。

; interfaces = 192.168.12.2/24 192.168.13.2/24   指定samba使用的网络接口,多个网络接口可用

;   local master = no  是否允许nmbd守护进程成为局域网中的主浏览器

#================= Share Definitions ================

[homes]

   comment = Home Directories

   browseable = no

   writable = yes

   valid users = %S  表与共享名同名的用户。如多个用户则空格分开,组群名前加@

   create mode = 0664   设置新文件权限

   directory mode = 0775 设置新目录权限

 [printers]      打印共享定义

   comment = All Printers

   path = /var/spool/samba

   browseable = no

# Set public = yes to allow user 'guest account' to print

   guest ok = no

   writable = no

   printable = yes

[sharedoc]

   comment = share test

   path = /home/sharedoc

;   valid users = mary fred

   public = no

   writable = yes

;   printable = no

;   create mask = 0765

[pub]

   comment = public folder

   path = /home/pub

   public = yes

   writable = yes

;   printable = no

;   create mask = 0765

^^^^^^^^^^^^^^^^^^^^^内容完毕^^^^^^^^^^^^^^^^^^^^^^^^^^

[root@linux-zlg samba]# service smb restart

[root@linux-zlg samba]# service smb reload    修改了smb.conf后,可用此命令重新载入配置文件

[root@linux-zlg root]# smbclient -L localhost    查看本机的共享

added interface ip=192.168.80.10 bcast=192.168.80.255 nmask=255.255.255.0

added interface ip=192.168.0.10 bcast=192.168.0.255 nmask=255.255.255.0

Password:     直接回车

Anonymous login successful

Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.7a]

……

==========================================================

建立samba用户

当安全级别为用户模式时,需要创建samba用户。

1、如需要把user1加入到samba用户中,可用以下命令:

[root@linux-zlg root]# smbadduser user1:user1     后面的user1为在windows中进行访问时输入的用户名,不一定在windows系统中存在。但在linux中的user1用户必须已存在。

ERROR: user1 is already in /etc/samba/smbpasswd SKIPPING...

[root@linux-zlg root]# smbpasswd user1           修改samba用户的口令 

2、也可使用mksmbpasswd.sh脚本文件一次性把linux系统用户全部加入到samba用户中: 

[root@linux-zlg root]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

其它

[root@linux-zlg root]# chkconfig --level 35 smb on   设置开机自动启动服务

[root@linux-zlg root]# smbstatus 查看当前访问状态

[root@linux-zlg root]# testparm                    检查smb.conf中的语法有无错误

Load smb config files from /etc/samba/smb.conf

[root@linux-zlg root]# testparm /etc/samba/smb.conf lgxh 192.168.80.1  查看允许客户端访问的资源

[共享名]

comment = 任意字符串

说明:comment是对该共享的描述,可以是任意字符串。

path = 共享目录路径

说明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。

browseable = yes/no

说明:browseable用来指定该共享是否可以浏览。

writable = yes/no

说明:writable用来指定该共享路径是否可写。

available = yes/no

说明:available用来指定该共享资源是否可用。

admin users = 该共享的管理者

说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。

例如:admin users =bobyuan,jane(多个用户中间用逗号隔开)。

valid users = 允许访问该共享的用户

说明:valid users用来指定允许访问该共享资源的用户。

例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)

invalid users = 禁止访问该共享的用户

说明:invalid users用来指定不允许访问该共享资源的用户。

例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)

write list = 允许写入该共享的用户

说明:write list用来指定可以在该共享下写入文件的用户。

例如:write list = bobyuan,@bob

public = yes/no

说明:public用来指定该共享是否允许guest账户访问。

guest ok = yes/no

说明:意义同“public”。