作者:许亮 奥林巴斯(深圳)工业有限公司 | SAP开发工程师/SAP Basis顾问 前言: 写这篇文章的目的是为了下一篇文章《HP-UX Samba服务配置》作铺垫的。毕竟大家对Linux操作系统以及Linux下的Samba服务要熟悉一些。不要感觉到有压力,其实HP-UX没什么大不了的,其实就是我们所谓的UNIX,只不过HP修改了其内核文件,并重新封装了它,再换个名字叫HP-UX。目前HP-UX只有极少数的大型企业在用,这跟它昂贵的服务费用有关,所以互联网上也很少有关HP-UX的文章,即使有,也是大家转来转去,尽在胡说的一些文章,参考价值并不高,我就在这方面浪费了不少的时间。 废话少说,下面就先来看看在Linux下是如何配置Samba服务的,有了在Linux下成功配置Samba服务的经验,在HP-UX(11.3i版本)上配置Samba服务就不会那么困难了,因为在HP-UX上安装Samba软件还必须得用HP-UX版本的Samba软件包,与正常的Samba软件包稍有差别。 一、软件准备 RHEL4系统中默认安装了samba服务器和客户机的所有软件包。通过以下命令来确认是否已存在软件包。 # rpm -qa|grep samba samba-client-3.0.10-1.4E samba-3.0.10-1.4E samba-common-3.0.10-1.4E 若没有,则到RHEL4的第2张安装光盘中去找,或者到网上去下载。 二、Samba服务的安装和配置 1、 Samba安装 安装命令为: # rpm –ivh 软件包名称 例如:# rpm –ivh samba-3.0.10-1.4E.rpm RHEL4系统中默认已经安装了与Samba服务相关的软件包。 2、 Samba服务器的配置 a. 在smb.conf文件中进行共享资源的配置 去掉注释,查看smb.conf配置文件中的有效配置,让我们来认识一下smb.conf配置文件。 # grep -v "^#" /etc/samba/smb.conf |grep -v "^;" 以上命令能有效的过滤掉配置文件中的注释文字。 [global] workgroup = MYGROUP server string = Samba Server printcap name = /etc/printcap load printers = yes cups options = raw log file = /var/log/samba/%m.log max log size = 50 security = user socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = no idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 template shell = /bin/false winbind use default domain = no
[homes] comment = Home Directories browseable = yes writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes 从以上内容可以看出smb.conf配置文件默认包括以下3部分内容: [global]部分是Samba服务器的全局设置,配置项的内容对整个Samba服务器有效。 [homes]部分设置了用户共享目录的属性,该部分中不包括的设置项则使用配置文件中的全局设置。 [printers]部分设置了Samba服务器中的打印机共享资源的属性,Samba服务器除了可以提供文件共享以外,还能够提供打印机的共享。 用户可以根据自己的应用需求在smb.conf配置文件中添加共享资源的设置,共享资源的名称需要放置在方括号([])中。没有特别的需求,就保持smb.conf配置文件中的[global]项配置为默认。 再来看看[global]全局配置中,常用配置项的含义表: 配置项 | 说明 | workgroup | 设置Samba服务器所在的工作组的名称,默认设置为 | server string | 设置Samba服务器的说明文字,用于描述Samba主机 | log file | 设置Samba服务器的日志文件,默认设置为”/var/log/samba/%m.log“,表示所有设置文件都保存在”/var/log/samba/“目录中,使用Samba服务器的每个客户机的日志分别为保存与客户机同名的”%m.log“文件中,”%m“表示客户端主机的名称。 | Max log size | 设置日志文件的最大容量,默认为50.表示KB,该设置项的数值单位是KB | security | 设置Samba服务器的默认安全级别为user,表示需要经过Samba服务器的用户认证后才能够访问服务器中的资源 |
对于security全局设置项的配置比较关键,该配置项去定了Samba服务器对客户机采取何种用户认证方式。Security设置项的值可以有以下4种: share:表示用户不需要帐户及密码即可登入Samba服务器。 user:表示由提供服务的Samba服务器负责检查用户及密码,是Samba默认的安全等级。 server:表示检查账户及密码的工作指定由另一台Windows服务器或Samba服务器来负责。 domain:表示指定Windows域控制器来验证用户的账户及密码。 b. Samba用户账号及用户目录设置 (1)smb.conf文件中对用户目录的默认设置: comment = Home Directories browseable = yes writable = yes
[homes]共享目录默认的配置项含义如下: comment:用于设置共享目录的说明信息。 browseable:设置为no时表示所有Samba用户的宿主目录都不能被看到,只有登录用户才能看到自己的宿主目录,这样设置可以加强Samba服务器的安全性。 writable:设置为yes时,表示用户可以对该共享目录写入,设置用户对自己的宿主目录具有写权限是比较合理的。 经过以上设置后,Samba服务器中的每个用户都会在服务器中拥有一个自己的共享目录(宿主目录)。 (2) 建立Samba用户账号 Samba服务器不使用Linux系统的用户账号进行用户认证,而是维护自己的用户账号文件。Samba服务器的用户账号文件保存在“/etc/samba”目录中,文件名是smbpasswd,初始状态smbpasswd文件不存在,在第一次使用smbpasswd命令创建Samba用户时自动建立。 在建立Samba用户账户之前先要建立同名的Linux系统用户账号。 # cd /etc/samba/ # adduser st02 # smbpasswd -a st02 New SMB password: Retype new SMB password: startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created. Added user st02.
注意:这里输入密码是不显示的。 smbpasswd命令除了可以添加Samba用户账户外,使用不同命令选项可以完成不同的账号维护工作。 -h:显示smbpasswd的命令格式帮助 -a:添加指定的用户账号 -d:禁用指定的用户账号 -e:启用指定的用户账号 -x:删除指定的用户账号 使用smbpasswd –d 命令禁用Samba用户账号时,,将在smbpasswd文件的用户记录中进行相应字段的标记。 使用smbpasswd –e 命令即是启用已经被禁用的Samba用户账号,将在smbpasswd文件中删除用户记录中的禁用标记。 smbpasswd命令不接任何参数时,将提示修改指定Samba用户的口令,口令的修改会体现在smbpasswd文件的用户记录中。 使用smbpasswd命令建立Samba用户账号时应注意一下几点: -> Samba用户账号使用独立的smbpasswd文件保存用户的账号和加密口令信息。 -> Samba服务器中的用户账号应该具有与其同名的Linux系统用户账号,因为Samba用户是使用同名的系统账号身份来访问Linux资源(文件和目录)的。 -> Samba用户的口令和同名系统用户的口令是独立的,可以相同也可以不相同,需要分别进行维护和更改。 -> 当Samba用户不需要登录Linux系统时,同名的系统用户账号可以不设置口令,因为空密码的系统用户是无法登陆Linux系统的。 可以看出Samba服务器中的用户账号与Linux系统账号是相对独立但是又有所关联的,在实际的应用中移动要注意两者之间的以上几点关系。 c. 添加公共目录设置 在Samba服务器的默认设置中没有公共目录的设置,需要手动进行添加。 对于公共目录有如下要求: (1) 任何Samba的用户都可以访问公共目录并对目录有读写权限; (2) 任何用户在公共目录中都以Linux中nobody系统用户的身份出现,即在公共目录中任何用户建立的文件都属于nobody系统用户。 在对smb.conf文件进行设置之前需要建立公共目录在Linux系统中对应的目录“/home/public”,并设置该目录的属主和属组为nobody。 # mkdir /home/public # chown nobody.nobody /home/public # ls -ld /home/public drwxr-xr-x 2 nobody nobody 4096 Jun 10 13:30 /home/public 在smb.conf文件中添加名为[public]的共享资源,并设置如下内容: [public] path = /home/public public = yes only guest = yes writable = yes
d. 对smb.conf文件配置的测试 测试命令为:# testparm e. Samba服务器的启停命令 Samba服务器的启动脚本位于目录“/etc/init.d”中,脚本文件的名称是smb。 # ls -l /etc/init.d/smb -rwxr-xr-x 1 root root 2020 Jan 3 2005 /etc/init.d/smb 启动Samba服务器: # service smb start Starting SMB services: [ OK ] Starting NMB services: [ OK ] 查看Samba服务的服务状态: # service smb status smbd (pid 3886 3882) is running... nmbd (pid 3887) is running... 停止Samba服务器: # service smb stop Shutting down SMB services: [ OK ] Shutting down NMB services: [ OK ] 三、实现Windows主机访问Samba服务器: 1、 在“运行”中输入Samba服务器的IP地址,并回车 2、 在弹出的登录界面中输入Samba的账户st02及密码: 3、 访问Samba服务器成功: 四、Linux主机访问Windows共享文件 1、 在Windows主机中创建共享目录 2、 使用sbmclient命令来连接Windows共享目录 使用来宾账号Guest(密码为空)来登录访问Windows的共享资源 # smbclient //192.168.1.254/share -U Guest Password: Domain=[XULAU] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager] smb: /> dir . D 0 Wed Jun 10 05:46:45 2009 .. D 0 Wed Jun 10 05:46:45 2009 360safefixavi.exe A 402952 Sun May 31 07:49:21 2009 avseq03.wmv A 8062020 Sat Jun 6 03:11:22 2009 EasyInstallMakerV2.2_XiaoSD.exe A 1341058 Sat May 30 08:46:03 2009 FireFox 3.0.8.exe A 7339968 Mon Apr 20 07:18:42 2009 kav8.0.0.506sch.exe A 38302992 Thu Dec 4 20:22:00 2008 mysql-5.1.35.tar.gz A 35152597 Fri Jun 5 23:51:45 2009 53615 blocks of size 1048576. 5523 blocks available smb: /> exit
3、 使用mount命令挂载Windows共享目录 # mkdir /winshare # ll /winshare total 0 # mount -t smbfs -o username=Guest //192.168.1.254/share /winshare Password: # ll /winshare total 88480 -rwxr-xr-x 1 root root 402952 May 31 07:49 360safefixavi.exe -rwxr-xr-x 1 root root 8062020 Jun 6 03:11 avseq03.wmv -rwxr-xr-x 1 root root 1341058 May 30 08:46 EasyInstallMakerV2.2_XiaoSD.exe -rwxr-xr-x 1 root root 7339968 Apr 20 07:18 FireFox 3.0.8.exe -rwxr-xr-x 1 root root 38302992 Dec 4 2008 kav8.0.0.506sch.exe
挂载成功!
|