读书人

Linux停架设Samba服务器

发布时间: 2012-08-14 10:39:57 作者: rapoo

Linux下架设Samba服务器

1. 基础概念

??? Samba(SMB是其缩写) 是一套让UNIx系统能够应用Microsoft网络通讯协议的软件,用于Linux和

??? Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux

??? 和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是

??? 需要架设服务器 的。

??? 在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,

??? 比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访

??? 问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器。

??? 在Windows网络中,看到共享文件功能可知道,直接就可以把共享文件夹当做本地硬盘来使用。在Linux

??? 中,就是通过Samba向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机

??? 上 使用;这在一 定意义上说和FTP是不一样的。

?

??? SMB(Server Message Block)通信协议是微软和英特尔在1987年制定的协议,主要作为Microsift网络

??? 的通讯协议, 而Samba则是将SMB协议搬到UNIX上来应用,Samba的核心是SMB协议。SMB是在会

??? 话层和表示层以及下部分应用层的协议。最近微软又将SMB改名为:CIFS(Common Internet File

??? System)。

2. 应用范围

??? Samba 应用范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix

??? 类的系统,没有必要用Samba,应该用NFS;而Samba主要是共享文件和共享打印机和其他硬件设备的

??? 服 务。

3. 服务理解及命令操作

3.1Samba有两个服务:smb和nmb,各自的功能是:

???? smb是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb服务器的话,

???? 只能通过IP来访问,比如在Windows的IE浏览器上打入下面的一条来访问;

???? \\192.168.1.168\共享目录

??? Global Setting 部分:

??? workgroup=MYGROUP:Windows主机的工作组名,Windows主机必须工作在同一个组中;

??? server string = Samba Server Version %v:显示在Window上的信息

??? log file,max log size均为日志配置。

??? 共享部分:??

? ? [Linux Share] #在Windows主机中看到的共享文件名,不一定与Linux中共享的文件名一样

??? comment = This is Linux Share Directory #对此目录的说明

??? path = /home/LinuxShare #Linux系统真实的共享目录,要写绝对路径

??? public = yes #是否允许所有人看到此目录,no为看不到

??? writable = yes #是否允许用户在此目录下科协,no为不可写,如果可写还需要该目录具有写权限

??? read only = yes #设置用户是否只读

??? create mode = 0700 #如果有可写权限,建立的文件默认的权限掩码

??? directory mode = 0775 #如果有可写权限,建立的目录默认的权限掩码

6. 案例

6.1 在Windows系统中不用输入密码访问Linux共享目录

??? (1) Linux下创建要共享的目录:mkdir /home/LinuxShare

??? (2) 编辑配置文件:vi smb.conf

??? 将文件中得内容修改:security=user改成:security=share

??? 在文件末尾添加:

??? [Linux Share]

??? comment = This is Linux Share Directory

??? path = /home/LinuxShare

??? public = yes

??? writable = yes

??? 保存,退出。

??? 测试配置参数是否正确命令:testparm

??? (3) 重启服务:service smb restart

??? (4) Windows下访问:运行中输入:\\192.168.1.168\LinusShare,若输入:\\192.168.1.168则打

??? 开Linux中所有共享目录。

6.2 在Windows系统中需要输入用户名才能访问Linux共享目录

??? (1) 更改:security = user

??? (2) 在smb.conf的securoty = user 下添加:smb passwd file = /etc/samba/smbpasswd

???????? 在共享部分添加:valid users = %S

??? (3) 新建smbpasswd文件:

??? touch /etc/samba/smbpasswd

??? smbpasswd -a FDC

??? NEW SMB passwd

??? Retype new SMB passwd:

??? (4) 服务重启。

6.3 在Linux中访问Windows中共享的目录

??? (1)查看服务器上的资源

??? 访问格式:smbclient -L //ip地址或计算机名? [-U 用户名]

??? smbclient -L //192.168.1.106

??? smbclient -L //192.168.1.106 -U Administrator

??? (2)以用户身份登录

??? smbclient //IP地址/共享文件夹 -U 用户

??? smbclient //192.168.1.168/FDC -U FDC

??? smbclient命令:

?? ?或help,![Shell Command],cd,lcd,dir或ls,exit或quit,get file1 file2,mget file1 fiel2 file3 filen,

??? md或mkdir,rd或rmdir,put file1 [file2],mput file1 file2 filen

6.4 Windows下访问Linux共享文件

??? 浏览器上输入:\\ip地址或计算机名或"开始","运行","\\192.168.1.168"

??? 这样就能看到这个机器上有什么共享的了,点鼠标操作完成;如果访问不了,不要忘记把Linux的防火墙

??? 规则清掉,或让相应的端口通过。

?

??? 其他方式:下载explore2fs软件:http://www.chrysocome.net/explore2fs,使用该软件访问。

6.5 Linux下smbfs文件系统的挂载(待验证)

??? smbmount '\\Windows主机IP\共享目录名' 挂载点 -o username

??? 例如:smbmount '\\192.168.1.106\WinLinux' /mnt/hgfs -o username="Administrator"

??? 说明:

??? 如果服务器是以share共享的,则无需用户名和密码就能挂载,如果出现要密码的提示,直接回车就行;

??? 也可以用smbmount 来挂载,这样就无需用mount -t smbfs来指定文件系统的类型了;

??? 对于挂载点,需要自己建立一个文件夹,比如可以建在/opt/smbhd或mnt/hgfs;

??? 在mount的命令中,有这样的一个参数codepage=cp936,这是服务器端文件系统的编码的指定,

??? cp936就是简体中文,当然可以用utf8等其他编码;

??? 如果挂载了远程的smbfs文件系统出现的是简体中文乱码,就要考虑挂载时要指定编码了。

7. 常见异常解决

7.1 session setup failed: NT_STATUS_LOGON_FAILURE

??? Samba的用户应该与具Linux系统用户账号同名来访问系统资源,samba用户密码独立于系统,同名的系

??? 统账号不设密码,为安全起见,不能登录系统。

??? 原因:Samba所使用过的账户必须是系统中现存的用户。

??? 解决:smbpasswd -a FDC

???? # -a添加指定的用户帐号

???? # -d禁用指定的用户帐号???? # -e启用指定的用户帐号???? # -h显示smbpasswd的命令格式帮助???? # -x删除指定的用户帐号

7.2 Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.24]

???? Server not using user level security and no password supplied.

???? Server requested LANMAN password (share-level security) but 'client lanman auth' is disabled

???? tree connect failed: NT_STATUS_ACCESS_DENIED

???? 解决:在/etc/samba/smb.conf的[global]字段里面加入:

?????? client lanman auth = yes???? 这时既可以用smbclient连接,也可以用mount挂载,还可以通过gnome里面的“连接到服务器“来连接。7.3 指定具体的用户访问???? [Linux Share]

???? comment = This is Linux Share Directory

???? path = /home/LinuxShare

???? valid users = FDC

???? public = yes

?? ? writable = yes

7.4 用户权限设定无效

???? 设定具体的用户访问Linux下的共享文件,除了需要在smb.conf中配置writable=yes之外,还需该用户

???? 对共享资源有写权限,最简单的实现办法是赋予其他人对目录写权限:

???? chmod o+w /LinuxShare

???? 最佳方法是将设置权限的用户加入到目录对应的组中,对组授权,进行统一管理。

7.5 Error returning browse list :NT_status_ok

????? 原因:用smbclinet //Windows主机IP/WinLinux -U Administrator,来访问xp上的共享文件,但是

????? 用

????? smbclient -L? //Windows主机IP, 来查看xp上的共享资源时,却得到Error returning browse list??

????? :NT_status_ok的提示。

????? 解决方法:

????? 修改WINDOWS注册表的值/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa

????? /restrictanonymous 为0,重启WINDOWS的系统则可解决。

7.6 Tree connect failed: NT_STATUS_BAD_NETWORK_NAME

8. Samba官方文档

??? http://samba.org/samba/docs/man/Samba-HOWTO-Collection/

9. Samba打印机共享

??? 在smb.conf文件中配置如下两行,即可自动的添加打印机列表:

??? # -------------------- Printing Options -----------------------
??? load printers = yes
??? cups options = raw??? #表示自动加载共享打印机

??? RHEL默认的打印系统是cups,打印机的配置文件是/etc/cups/printers.conf,性能配置文件是

??? /etc/printcap.

??? 系统默认的打印机配置:

??? [printers]
?????? comment = All Printers
? ? ?? path = /var/spool/samba #存放发送给打印机的文件的缓冲目录
?????? browseable = no #标示是否在Samba网络中显示在共享列表中,建议设为yes
?????? guest ok = no #设为yes标示不需要对用户进行身份认证即可访问
?? ? ? writable = no
?????? printable = yes #取值为yes标示此共享为打印共享,否则为磁盘共享

?? 示例:设置个人打印机的配置案例:

?? [printers]
??????? comment = FDC's Printer

??????? valid users = FDC
??????? path = /var/FDC
??????? browseable = no
??????? guest ok = no
??????? writable = no
??????? printable = yes

??????? public = no # 不共享打印机

10. Samba共享权限管理:设置口令文件

????? (1)首先将Linux中的系统用户口令文件(/etc/passwd)导入到samba口令文件中(/etc/samba

????? /smbpasswd):

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

????? (2)给smbpasswd等文件及文件夹设置访问权限

????? chown root.root /etc/samba/smbpasswd

????? chmod 600 /etc/samba/smbpasswd

????? chomd 600 /etc/samba

????? (3)若要手动添加一个用户,则首先要保证Linux中存在该用户存在

????? useradd SambUser

????? passwd SambPasswd

????? smbpasswd -a SambUser

11. 匿名用户可读可写的实现

????? (1)修改smb.conf文件

????? # cd /etc/samba

????? # mv smb.conf smb.confBAK? #备份文件

????? touch smb.con #重新创建一份配置文件

????? 在新创建的配置文件中加入以下内容:

????? [Global]
????? workgroup = Linux
????? netbios name = Linux_FDC
????? server string = Linux Samba Server TestServer
????? security = share
????? [Linux Share]
????? path = /home/LinuxShare
????? writeable = yes
????? browseable = yes
????? guest ok = yes

????? (2)建立响应目录并授权

????? mkdir -p /home/LinuxShare

????? id nobody #查看nobody用户信息

????? chown -R nobody:nobody /home/LinusShare

????? (3)启动smb服务

????? service smb restart

????? (4)查看smb进程

????? pgrep smbd

????? (5)访问Samba服务器共享

????? Linux下:smbclient -L //192.168.1.168

????? Win下: \\192.168.1.168

1 楼 gudong2945 2011-08-24 很猛,很强大。

读书人网 >UNIXLINUX

热点推荐