使用Smaba共享资源
时间:2006-04-20 来源:gridpc
Samba提供了在Linux和其他系统之间资源共享的一种方式,Samba是在Linux平台下使用SMB()协议通过网络共享文件和打印机,它所支持的操作系统有Windows、OS/2、Linux。本文就以RedHatAS3(update3)为例,简单介绍一下Samba的配置及其管理。
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportLists]-->一、 <!--[endif]-->Samba的安装
<!--[if !supportLists]-->1. <!--[endif]-->首先到www.samba.org下载Samba的最新版本。
#wget http://us1.samba.org/samba/ftp/samba-3.0.14a.tar.gz
<!--[if !supportLists]-->2. <!--[endif]-->解开tar文件
#tar –xzvf samba-3.0.14a.tar.gz
如图一
<!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->3. <!--[endif]-->编译
#cd samba-3.0.14a/source
#./autogen.sh (生成配置脚本)
如图二
<!--[if !vml]--><!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
#./configure (建立二进制文件)
如图三
<!--[if !vml]--><!--[endif]-->
#./make (生成二进制文件)
如图四
<!--[if !vml]--><!--[endif]-->
#./make install (安装二进制文件和文档)
如图五
<!--[if !vml]--><!--[endif]-->
系统会把所有的文件安装到/usr/local/samba下。
安装完,将/usr/local/samba/bin和/usr/local/sbin加到系统的PATH环境变量里,命令如下:
#vi /etc/profile
在文件的末尾加上:
export PATH=$PATH:/usr/local/samba/bin:/usr/local/samba/sbin
export MANPATH=/usr/local/samba/man:$MANPATH
#source /etc/profile
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportLists]-->二、 <!--[endif]-->配置Smaba
Samba的配置文件smb.conf,首先将/root/samba-3.0.14a/packaging/RedHat/smb.conf拷贝到/usr/local/samba/lib下。通过修改这个文件用户就可以从Windows或者Linux客户端访问服务器上的文件以及使用服务器上的打印机了。这个文件有很多节,每节描述不同的设置,基本都是“属性=值”的设置方式。下面讲讲几个主要的设置:
[global]节定义一些全局变量。
workgroup=groupname (NT域名或工作组名)
server string=comment (Samba服务器描述)
hosts allow=ip_addr (允许访问的主机)
printcap name =/etc/printcap (打印机配置信息文件)
load printers =yes (允许使用共享打印机)
printing = bsd (对bsd, sysv, plp, lprng, aix, hpux, qnx支持)
guest account = pcguest (可以访问的guest帐户,此帐户必须在/etc/passwd)
log file = /var/log/samba/log.smbd (日志文件)
max log size = 50 (日志文件长度为50Kb)
security = user (用户级安全)
password level = 8 (口令长度)
username level = 8 (用户名长度)
encrypt passwords = yes (加密口令)
smb passwd file = /etc/samba/smbpasswd (smb口令文件)
interfaces = 192.168.12.2/24 192.168.13.2/24 (多个网卡接口)
[tmp]节定义临时目录,用于共享文件,只有读权限。
path = /tmp (临时目录)
read only = no (只读权限)
public = yes (共享)
[public]节定义共享的的目录,但是staff组可以有写权限。
path = /home/samba (共享的目录)
public = yes (允许共享)
read only = yes (只读权限)
write list = @staff (可以有写权限的组)
[home]定义共享的主目录。
comment =/home/root (提供的服务为用户主目录服务)
browseable =no (指定其它用户能否浏览该用户主目录)
writable =yes (用户访问该目录时具有读取和写入权限,只有读权限时,设置为no)
[printers]用于指定共享网络打印机
browseable = yes (若取值为yes,则允许其它用户访问打印机。否则,限制其它用户的访问权。)
printable =yes (可以打印)
public =yes (打印客户帐户)
writable =no (打印机不可写入)
[cdrom]光驱共享的设置
path = /mnt/cdrom (设备加载点)
ready only = yes (设备只读)
public = yes (该设备所有人可用)
[fredsdir] 私有目录
path =pathname (指定私用目录路径)
valid users =usr1 usr2 (指定使用该私用目录的合法用户)
public = no (该私用目录不对其他用户共享)
writable = yes (指定的用户对该私用目录具有写权限)
printable =yes (可打印)
其中“#”和“;”开头的行都是注释,但是不同的是,以“;”开头的行是配置时的设置,如果需要配置只要简单去掉“;”,根据需要更改即可。配置完成后,使用下面的命令测试配置:
#testparm
如图六
<!--[if !vml]--><!--[endif]-->
<!--[if !supportLists]-->三、 <!--[endif]-->启动Samba进程
Samba需要的三个进程:
Nmbd:主要负责所有的名字注册和解析任,必须先于其他两个Daemon启动。
Smbd:提供文件和打印的服务,也负责授权,紧随Nmbd启动。
Winbindd:当Samba是WindowsNT4或者ADS域的成员时启动,一般不用。
其中前面的两个进程是必须的。
1.首先,编辑/etc/services,添加相应的端口号。
#vi /etc/services
添加:
netbios-ssn 139/tcp
netbios-ssn 139/ucp
netbios-ns 137/tcp
netbios-ns 137/udp
2.使用inetd管理Samba
在/etc/inetd.conf添加下面的内容:
netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd
重新启动inetd就可以使Samba设置生效
#kill –HUP inetd
3. 如果不打算使用inetd管理Samba,或者系统不是用inetd管理Samba的话,可以简单的启动Samba作为后台Daemon。
编辑/etc/rc.local
#vi /etc/rc.local
添加:
/usr/local/samba/sbin/nmbd –D
/usr/local/samba/sbin/smbd -D
启动后使用下面的命令查看:
#ps –efl|grep nmbd
#ps –efl|grep smbd
如图七
<!--[if !vml]--><!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportLists]-->四、 <!--[endif]-->Samba用户管理
1.创建口令文件
Samba的口令格式是:
用户名:用户id:加密的口令(如果没有使用smbpasswd更新口令,那么就是32个X):NT口令():帐户标识(U:用户W:可信用户D:禁止使用N:无口令):最后一次更改的时间(LCT-00000000):被忽略的字段
使用如下脚本(mksmbpasswd.sh)产生smbpasswd文件
mksmbpasswd.sh文件:
#!/bin/sh
awk 'BEGIN {FS=":"
printf("#\n# SMB password file.\n#\n")
}
{ printf( "%s:%s:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[UD ]:LCT-00000000:%s\n", $1, $3, $5) }'
转换后的smbpasswd文件格式:
如图八
<!--[if !vml]--><!--[endif]-->
# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
#chmod 600 /etc/samba/smbpasswd
mksmbpasswd.sh并不拷贝/etc/passwd的口令到/etc/samba/smbpasswd。
如图九
<!--[if !vml]--><!--[endif]-->
2.更改用户Samba口令
#smbpasswd username
如图十
<!--[if !vml]--><!--[endif]-->
3. 加密口令文件
确保/etc/samba/smb.conf中下面的内容不被注释
encrypt password = yes
smb passwd file = /etc/samba/smbpasswd
如果想保持用户的系统口令和Samba口令一致,也就是说,在用户使用passwd更改系统口令时,相应的Samba口令也会一起更改,那么就要使用pam_smbpass模块。为了启用这个功能,需要编辑/etc/pam.d/system-auth文件,
添加:
password required /lib/security/pam_smbpass.so nullok user_authtok try_first_pass
<!--[if !supportLists]-->五、<!--[endif]-->访问Samba资源
1.Linux客户端
#smbclient //hostname/sharename -U username
如果口令正确,会看到smb:\>提示符,表示已经连接到共享的目录了,可以输入help,得到相关命令的帮助。
如图十一
<!--[if !vml]--><!--[endif]-->
使用下面的命令列出网络上的主机和共享的目录:
#smbclient –L host_name
如图十二
<!--[if !vml]--><!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
退出可以使用exit或者quit命令。
2.Windows客户端
在Windows下通过点击网上邻居就可以访问Linux共享的资源了。
如图十三
<!--[if !vml]--><!--[endif]-->
当然,也可以使用命令行工具,把linux下的共享目录挂载到Windows下作为网络盘使用,命令如下
C:\net use device_name: \\server_name\path
如图十四
<!--[if !vml]--><!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
然后,在“我的电脑”里就可以看到Linux下共享的资源了。
如图十五
<!--[if !vml]--><!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
通过对Samba的安装,配置,管理的简单介绍,希望可以起到抛砖引玉的作用。
参考文献:www.samba.org
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->
<!--[if !supportEmptyParas]--> <!--[endif]-->