Samba 配置
1. 安装Samba服务器
如果用户在安装Linux 时已经安装了Samba ,就无需再安装了可以通过下列命令确定是否已经安装了Samba
[root@ smb_server root]# rpm –qa | grep samba samba-commom -2.2.7a-7.9.0 samba-2.2.7a-7.9.0 samba-client-2.2.7a-7.9.0 redhat-config-samba-1.0.4-1 samba-swat-2.2.7a-7.9.0
若出现这5个软件包,则表示已经安装了Samba ,否则必须安装Samba 。
[root@smb_server root]# mount /dev/cdrom /mnt/cdrom
将光盘挂载到 /mnt/cdrom目录]
[root@smb_server root]# cd /mnt/cdrom/RedHat/RPMS
切换到放置rpm文件的目录
[root@smb_server root]# rpm -ivh samba-commom -2.2.7a-7.9.0i386.rpm
这是Samba 必备的程序,必须安装
[root@smb_server root]# rpm -ivh samba-2.2.7a-7.9.0.i386.rpm
安装Samba 服务器程序,可以使我Windows 主机访问Samba 服务器共享的资源。
如果需要使Linux 主机访问Windows 主机上的共享资源,则还应该安装Samba 客户端程序。
[root@smb_server root]# rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm
2. Samba的全局参数的配置
Samba 最主要的配置文件是 /etc/samba/smb.conf,其中有很多选项可以设置,但作为初学者,只需要掌握其中一小部分选项的设置就可以配置所需要的Samba服务器了。在了解基本配置的基础上,就能很快架设一个基本的Samba服务器。在基本配置文件中,也只用到其中一小部分命令选项。
全局参数的配置在[global]字段中,没有出现(或被注释)的参数,Samba 采用的是默认配置。 # This is the main Samba configuration file. You should read the # smb.conf(5) manual page in order to understand the options listed # here. Samba has a huge number of configurable options (perhaps too # many!) most of which are not shown in this example #================== Global Settings ============================ [global] #这是配置文件中关于全局参数的设置部分。 ………… workgroup = SMBGROUP #这是设置服务器所要加入的工作组的名称,会在Windows 的“网上邻居”中能看到MYGROUP工作组,可以在此设置所需要的工作组的名称。 netbios name=smb-server #设置出现在“网上邻居”中的主机名。默认情况下,则使用真正的主机名。 server string = Samba Server #这是设置服务器主机的说明信息,当在Windows 的“网上邻居”中打开Samba 上设置的工作组时,在Windows 的资源管理器窗口,会列出“名称”和“备注”栏,其中“名称”栏会显示出Samba服务器的NetBios名称,而“备注”栏则显示出此处设置的“Samba Server”。当然,可以修改默认的“Sambe Server”,使用自己的描述信息。 hosts allow = 192.168.1. 127 #这里是设置允许什么样的IP地址的主机访问Samba服务器。默认的情况下,hosts allow选项被注释,表示允许所有IP地址的主机访问。 guest account = pcguest #设置当访问那些被设置了“guest ok=yes”参数的资源时所要使用的帐号名。默认的帐号为”nobody”,如果不想用默认的值,则应该去掉注释用的分号,用你想要的帐号(如pcguest、 zhangsan等 ),然后,你必需将这一新帐号加入到/etc/passwd文件中去。 client code page=950 设置客户端访问Samba 服务器时所使用的字符编码表(code page),默认值为850,如果Samba 服务器要使用年中文名称来来命名共享的资源,要将此值改为950 log file = /var/log/samba/%m.log #这一选项要求Samba服务器为每一个连接的机器使用一个单独的日志文件,指定文件的位置,名称。Samba会自动将%m转换成连接主机的NetBios名。 max log size = 0 指定日志文件的最大容量(以KB为单位),设置为0,表示没有限制。默认值为5000。 max disk size =1000 #设置能够共享的最大磁盘空间,单位为MB,默认值为0,表示不作任何限制。 max open file =100 #设置同一客户端最多能打开文件的数目,默认值为10000个。 security = user #设置Samba服务器的安全等级。默认情况下,使用user等级。 #Samba服务器一共有四种安全等级。 share: 使用此等级,用户不需要帐号及密码可以登陆Samba服务器。 user: 使用此等级,由提供服务的Samba服务器检查用户帐号及密码。 server: 使用此等级,检查帐号及密码的工作可指定另一台Samba服务器负责。 domain: 使用此等级,需要指定一台Windows NT/2000/XP服务器(通常为域控制器),以验证用户输入的帐号及密码。 ; password server = #如果安全等级为“server”或“domain”,则使用此选项指定要验证密码的主机名。 password level = 8 username level = 8 #设置当验证用户口令和帐号时最多允许几个大小写字不同。默认值为0。 encrypt passwords = yes #设置当Samba客户端将帐号及密码传送到服务器端时,是否采取密码加密的方式。客户的操作系统如果是Windows 95 OSR2 及NT SP3以后的版本,应该将此选项的值设为yes,默认值为no。 smb passwd file = /etc/samba/smbpasswd #设置在Samba服务器上存放加密的密码文件的位置(注意:Samba服务器与Linux采用不同的密码文件)。
3. 设置Samba密码文件
smb.conf 文件中有“smb password file =/ect/samba/smbpassword”一行设置项,现在就要创建该设置项所指定的/ect/samba/smbpassword密码文件(若是用Windows NT/2000Server 来验证密码,则可以跳过此段内容)。以root帐号登录,然后按下列步骤进行:
[root@smb_server root]#cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd [root@ smb_server root]# chmod 500 /etc/samba [root@ smb_server root]# chmod 600 /etc/samba/smbpasswd
此步骤是将未加密的/etc/passwd文件转换成加密的smbpasswd文件。基于保密的原则,将/etc/samba目录的权限设为500,该文件的权限设为600,以避免他人取得密码文件。
完成之后再利用smbpasswd命令,设置/ect/samba/smbpassword文件中每个帐号所使用的密码。(下面以fred为例。注意:此处设置的密码是fred要访问Samba服务器的密码,并非登录Linux 主机的密码,默认设置”UNIX password sync=YES”, 则登录Linux 主机的密码将改变,与Samba服务器的密码一致,如果希望这两个密码不一致,则设置”UNIX password sync=NO”)
[root@smb_server root]# smbpasswd fred New SMB password: 此处输入密码 Retype SMB password: 重新输入密码 Password changed for user fred 看到这一句表示密码设置成功。
4. 启动Samba服务器
可以执行下面的命令来启动Samba服务器:
[root@ smb_server Root]# service smb start
当能看到下面的显示,就表示启动成功。
Starting SMB service [确定] Starting NMB service [确定]
如果要暂停或重新启动Samba服务器,只要将上面命令中的start 改为stop或restat就可以了。
也可以让系统在每次开机时就启动Samba服务器。执行ntsysv命令,进入Service设置画面,选择smb选项,单击确定即可。
5. 测试Samba配置文件
设置好smb.conf文件之后,执行下面的命令测试smb.conf的设置语法是否正确。
[root@smb_server root]# testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[tmp]" Processing section "[public]" Processing section "[fredsdir]" Loaded services file OK. Press enter to see a dump of your service definitions
表示正确。
检查正常后,一定要记得执行
[root@smb_server root]# service smb restart
命令,重新启动Samba服务器。
6. 设置共享资源参数
comment #针对共享资源所作的说明、注释部分 browseable #设置用户是否可以看到此共享资源。默认值为yes,若将此参数设置为no,用户虽然看不到此资源,但是拥有权限的用户仍可直接输入该资源的网址来访问该资源。 writable #设置共享的资源是否可以写入。若共享资源是打印机,则不需设置此参数 #设置可访问的用户。系统会自动将%S转换成登录帐号。 create mode # 设置文件的访问权限,默认值为0744。 directory mode 设置目录的访问权限,默认值为0755。 path #若共享资源是目录,则指定目录的位置;若为打印机,则指定打印机队列的位置。 read only #设置共享资源是否只读或可以写入,默认值为yes。若共享资源为打印机时,此参数无任何意义。这一项与writable相反。 Public #等同于guest ok选项,表示是否允许用户不使用帐号和密码便能访问此资源。如果起用此功能,当用户没有帐号和密码时,则会利用“guest account=”所设置的帐号名登录。该选项默认值为no,即不允许没有帐号即密码的用户使用此资源。 avalible #设置是否启用此共享资源。默认值为yes。若将此参数设置为no,则不管其他参数设置为什么,所有人均不得使用此资源。 valid users
7. 配置Samba文件共享举例
[global] ………… #采用前面的[global]配置 [homes] #用来配置用户访问自己的目录 comment = Home Directories #注释 browseable = no #用户私人目录,不给别人浏览(并不是不允许别人访问) writable = yes #允许用户写入自己的目录 valid users = %S #可访问的用户局限于用户自己。%s会被自动转换为登录帐号。 create mode = 0664 #文件的访问权限 directory mode = 0775 #目录的访问权限 #This one is useful for people to share files [tmp] #这个部分为所有用户提供临时共享的方式 comment = Temporary file space #注释文字 path = /tmp #指定位置 read only = no #可以读写 public = yes #允许用户不用帐号和密码访问 [public] # 这个部分为所有用户提供可以共同访问的目录。允许staff组用户写入,但其他用户只可访问,不能写入。 comment = Public Stuff path = /home/samba public = yes writable = yes printable = no write list = @staff # write list参数是用来设置具有写权限的用户列表。这里只允许staff组的成员有写的权限 [fredsdir] #这个部分用来设置某一用户fred的访问权限。 comment = Fred’s Service path = /usr/fred/private valid users = fred #只有fred可以访问(注意:即使security=share,也不代表用户登录Linux 主机后可以访问任意资源。)该共享目录 public = no writable = yes printable = no
说明:配置文件修改后,要重新用testparm测试配置文件,重新启动Samba 服务器程序。
8. 使用共享的目录
现在以Windows 2000为例,介绍***用户如何读取Linux 所共享的资源。
A.以fred帐号登录Windows ,然后在“网上邻居” 中找到前面所设置工作组smbgroup。
B.双击工作组smbgroup图标,将看到Samba 服务器smb_server
C.双击服务器smb_server图标,若在Windows 中使用的密码与Linux 的用户密码相同,即可以看到服务器上所共享的资源(表示登录Linux 主机成功)。
D.若在Windows 中使用的密码与Linux 的用户密码不同,则会出现“输入网络密码对话框”,输入st1在SMB中设置的用户密码(由于设置了”unix password sync=YES”,所以此处输入的密码一定要是smb密码)
E.双击所要访问的共享目录(如***sdir),出现所示“输入网络密码”窗口,输入***的密码(因为***sdir共享目录只允许***访问,所以在此要输入***的smb密码)
9.配置Samba打印共享
Samba中涉及打印共享的参数主要有以下几个
在[global]字段中涉及共享打印机的主要字段 printcap name =/etc/printercap #这是指定打印机配置文件的位置。打印守护进程读取printcap文件中的配置信息,监视打印机的工作情况。 load printers #指定是否要加载打印机(使打印机可以共享)。默认值为yes。 #如果用户想要自动载入打印机列表,而不是个别地安装,则必须在此指定以上两项 printing =cups # 指定打印系统类型。只有在你的打印系统不是标准的情况下,才必须指定,否则不必指定。指定打印系统类型将影响到smb.conf文件中与打印机相关的命令(如print,lpq,lppause,lpresune)的执行方式。默认的打印系统类型为bsd,其他的类型还有 sysv,plp,lprng,hpux,qnx,cups。
10. 配置共享打印机
A. 在Linux Samba 服务器上配置本地打印机
B. 获得 Adobe Postscript Driver
按下列步骤进行
(1)到http://www.adobe.com/下载简体中文版Adobe Postscript Driver,文件名为Winstchs.exe。
(2)在Windows 环境(如Windows 2000 Professional)下安装。
(3)进入Windows 计算机C:WINNTsystem32spooldrivers目录,从子目录w32x86和WIN40中挑选出表1所示的8个文件,并且将文件名字母全部改为大写。
ADFONTS.MFM | ADOBEPS4.HLP | ADOBEPSU.DLL | DEFPRTR.PRO |
ADOBEPS4.DRV | ADOBEPS5.DLL | ADOBEPSU.HLP | ICONLIB.DLL |
(4)在Linux 计算机上创建/usr/share/cups/目录, 表1所示的8个文复制到此目录下。
C.设置smb.conf的打印共享配置
[global] ………… #按上文将有关共享打印机的几个主要配置参数写到此处。 [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 #共享打印机,writable必须设置为no printable = yes #允许用户更改打印机队列中的文件 [fredsprn] #该共享的打印机只允许fred私人使用 comment = Fred’s Printer valid users = fred path = /home/fred #打印机队列是fred的用户目录,要主义fred必须有权访问该目录。 printer = freds_printer #设置共享打印机的名称,此参数又可以写成“printer name=”,该参数如果放在[global]字段,所有打印服务用到的打印机名都将是一样的 public = no writable = no printable = yes
D. 为Windows 客户机准备打印驱动
为了给Windows 客户机准备打印驱动,可以运行cupsaddsmb命令。执行如下的操作将打印机驱动程序放置在/etc/samba/drivers目录下。
创建/etc/samba/drivers目录
[root@smb_sever root] #mkdir /etc/samba/drivers
运行cupsaddsmb命令,以root身份执行该命令,共享所有打印机
[root@smb_sever root]# cupsaddsmb -a -U root
E. 从Windows 客户机访问Samba 共享打印机
当配置好Samba 共享打印机之后,合法用户就可以在Windows 的网上邻居看到被共享的打印机。双击共享的打印机,在弹出的窗口中确认安装此打印机驱动即可。
11. 在Linux环境下应用Samba服务
在Linux平台客户机上使用Windows 计算机提供的共享资源或Linux Samba 服务器提供的共享资源,通常有两种方法。分别是使用smbclient命令和使用smbmount命令。
现在以使用Windows 计算机提供的共享资源为例分别介绍这两种方法。先在Windows 中设置共享的文件夹,Windows 计算机NetBios名为win,IP地址为192.168.0.3,共享的文件夹共享名为share_dir。Linux计算机名为lin,且安装了smb组件。
A. 使用smbclient命令
在Linux计算机上,执行以下命令
[root@lin root] # smbclient -L win
或者
[root@lin root] # smbclient -L 192.168.0.3
结果在Linux计算机上列表显示出win所提供的所有共享信息。
在Linux计算机上,执行以下命令
[root@lin root] # smbclient //win(或IP地址)/share_dir -U tom
其中tom是Windows 计算机上的用户。系统提示输入tom的密码,输入正确后,系统提示
smb:>
此时,就可以向使用FTP客户的方法使用smbclient。
使用smbmount命令
知道某台主机所共享的资源后,执行smbmonut命令将远程共享挂载到本地。
[root@lin root] # mkdir –p /mnt/smb/win_share_dir
先创建挂载点目录
[root@lin root] #smbmount //win/share_dir /mnt/smb/win_share_dir
将远程共享//win/share_dir//win/share_dir挂载到本地目录/mnt/smb/win_share_dir
这样就可以象访问本机目录一样操作此挂载的目录了。若要卸载已挂载的目录,则执行umount命令即可。
[root@lin root]#umount /mnt/smb/win_share_dirAlso tagged