一、软件准备
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
例子:
[homes]
comment = Home Directories
browseable = no
writable = yes
[public_share]
comment = This is my share
path = /home/public_share
browseable = yes
writable = yes
public = yes
guest ok = yes
[Company_File]
comment = This is company share
path = /home/CompanyFile
browseable = yes
writeable = yes
public = yes
guest ok = yes挂载成功!