参考:redhat linux samba smb 配置、RedHat Linux下Samba配置(简单配置)、Linux与Windows 共享文件Samba
目录
1 Samba 简介
2 Samba 功能和应用范围
3 samba 的安装及服务启动
4 Samba 服务器配置文件
5 samba 服务自动启动及其他工具
正文
1.Samba简介
Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;
不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的;
大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器;
我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。
2.Samba 功能和应用范围
Samba 应该范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,没有必要用Samba,应该用NFS更好一点;
那Samba 能为我们提供点什么服务呢?主要是共享文件和共享打印机。
3.samba 的安装及服务启动
3.1 samba 服务的安装
#rpm -qa|grep samba //此命令用于检查linux系统有没有装过samba
如安装过,则会显示
Samba-common- 2. 2.7a -7.9.0
Samba-client- 2. 2.7a -7.9.0
Samba- 2. 2.7a -7.9.0
后面显示的是版本信息
如果没有显示,则需要放入第一张光盘安装:
#rpm -ivh samba-common- 2. 2.7a -7.9.0.i386.rpm
#rpm -ivh samba- 2. 2.7a -7.9.0.i386.rpm
#rpm- ivh samba-client- 2. 2.7a -7.9.0.i386.rpm
当然也可以从图形化界面选择samba安装。
3.2 Samba 有两个服务器,一个是smb,另一个是nmb;
smb 是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb服务器的话,只能通过IP来访问,比如在Windows的IE浏览器上打入//samba服务器IP地址/共享目录 来访问。
而nmb是解析用的,解析了什么呢?就是把这台Linux机器所共享的工作组及在此工作组下的netbios name解析出来;
一般的情况下,在RPM包的系统,如果是用RPM包安装的Samba ,一般可以通过如下的方式来启动Samba服务器;
#service smb start //启动 Samba
#pstree | grep mbd //检查Samba是否启动
| -nmbd
| -smbd //出现这二行,就表明Samba已经启动
#service smb stop //停止
#service smb restart //重启
# pgrep smbd
# pgrep nmbd //查看服务器是否运行起来了
3.3 查看Samba 服务器的端口及防火墙;
查看这个有何用呢?有时你的防火墙可能会把smbd服务器的端口封掉,所以我们应该smbd服务器所占用的端口;下面查看中,我们知道smbd所占用的端口是139和445 ;
# netstat -tlnp |grep smb
tcp 0 0 0.0.0 .0:139 0.0.0.0:* LISTEN 10639/smbd
tcp 0 0 0.0.0 .0:445 0.0.0.0:* LISTEN 10639/smbd
如果您有防火墙,一定要把这两个端口打开。如果不知道怎么打开。可能你和我一样是新手,还是把防火墙规则清掉也行;
# iptables –F
或
# /sbin/iptables –F
3.4 查看Samba 服务器的配置文件;
如果我们是用Linux发行版自带的Samba软件包,一般情况下Samba服务器的配置文件都位于/etc/samba目录中:
服务器的主配置文件是smb.conf;
用户配置文件 smbpasswd、smbusers和lmhosts等;
还有一个文件是secrets.tdb,这个文件是Samba 服务器启动自动生成的。
4. 配置服务
知识点,samba有四种安全级别,它们分别是:
share:用户不需要账户就可登陆samba服务器
user:需在账户才可以登陆samba服务器
server:略
domain:略
以上是它的四个运行级别;share,user这二个级别适合用小型部门,如网吧等,这也是我要和大家讲的内容。
4.1 share级别的配置
其实这个级别的samba很简单,首先它不需要以用户和密码来验证登陆,所以就不必去配置samba用户了。
#cp /etc/samba/smb.conf /etc/samba/smb.conf.bak // 备份samba的配置文件
#vi /etc/samba/smb.conf // 找到 security = user 将它改成 security = share
#service smb restart // 重启samba服务器
这时我们在IE输入://sabma服务器的地址 就可以得到共享目录。
此时我们服务器上任没有设置任何共享目录,下面我们在服务器上设置一个共享目录。
#mkdir /mnt/text
#chmod 0777 /mnt/text
#vi /etc/samba/smb.conf
把光标移动配置文件的最后一行,在下面加入以下配置
# This is samba text
[text] //共享目录的名字
comment = text
path = /mnt/text //共享目录的路经
read only = no //指定该目录是否可以读
writable = yes //指定该目录是否可以写
public = yes //指定该目录是否可以guest访问
// 然后保存。
#service smb restart // 重启samba服务器
这时我们在IE输入://sabma服务器的地址,会得到text共享目录。
这里大家会看见已经有一个text的共享目录,此目录有“完全权限”。
可照此例子设定,上面所讲得是share级别的samba,很简单!
4.2 user级别的samba配置
Share级别的samba就是无需用户就可以访问服务器,而user级别的samba则需以samba用户和密码才能访问,所以我们先要设定一个samba用户,如下:
#vi /etc/samba/smb.conf //找到 security = share 将它改成 security = user
#useradd movie
#passwd movie //设置用户密码
#smbpasswd –a movie //设置sabam登陆的密码
#mkdir /mnt/text2
#chown movie.movie /mnt/text2 //设定文件夹text2为movie用户所有
#vi /etc/samba/smb.conf
把光标移动配置文件的最后一行,在下面加入以下配置
# This is movie’Service
[text2]
comment = text2
path = /mnt/text2
writable = yes
valid users = movie
public = no
// 然后保存。
#service smb restart // 重启samba服务器
这时我们在IE输入//sabma服务器的地址,会提示你输入samba用户和密码,输入用户:movie 和密码,进入。这时会看到多了“movie”、“text2”这二个目录,“movie”是movie用户的根目录,“text2”是我们刚刚设定的共享目录。如果我们不想使用“movie”用户的根目录共享,怎么办法呢,如下:
#vi /etc/samba/smb.conf
找到
[homes]
comment = Home Directories
browseable = no
writable = yes
在[homes]下面每行的前面加上符号“;”
;[homes]
; comment = Home Directories
; browseable = no
; writable = yes
// 然后保存。
#service smb restart // 重启samba服务器
这时我们在IE输入//sabma服务器的地址, movie目录就没了。
5.samba 服务自动启动及其他工具
5.1 samba自动启动
有如下两种方法,任选其一:
1)最简单的做法:手动设置
# setup
进入系统设置界面,选择system services,回车进入系统服务设置界面,找到smb服务,空格选中为*(即系统启动时自动启动的服务)
2)最标准的做法
A. 在 /etc/init.d 中作一个如下内容的脚本smbd
$smbspool=/var/spool/samba
$piddir=/var/run
$smbd=/usr/sbin/smbd
$nmbd=/usr/sbin/nmbd
if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
if [ -d $smbspool ]; then
rm -f $smbspool/*
fi
$smbd –D
$nmbd –D
elif [ "x$1" = "xstop" ]; then
kill `cat $piddir/smbd.pid`
kill `cat $piddir/nmbd.pid`
else
echo "$0 start|stop"
fi
B. 然后执行
ln -s /etc/init.d/smbd /etc/rc3.d/S99smbd
ln -s /etc/init.d/smbd /etc/rc0.d/K01smbd
5.2 Samba 在Linux 中的一些工具(服务器端和客户端);
smbcacls smbcontrol smbencrypt smbmount smbprint smbstatus smbtree
smbclient smbcquotas smbmnt smbpasswd smbspool smbtar smbumount
smbd nmbd mount
其中服务器端的是smbd、nmbd、smbpasswd ;其它的大多是客户端;
在Linux 中的常用工具mount(smbmount)和smbclient;Windows查看Linux共享的方法 ; 在Linux系统中查看网络中Windows共享文件及Linux中的Samba共享文件;一般的情况下,我们要用到smbclient;常用的用法也无非是下面的;
# smbclient -L //ip地址或计算机名
在Windows中访问Linux Samba服务器共享文件的办法;
这个简单吧,在网上领居,查看工作组就能看得到,或者在浏览器上输入如下的 //ip地址或计算机名,这样就能看到这个机器上有什么共享的了,点鼠标操作完成;如果访问不了,不要忘记把Linux的防火墙规划清掉,或让相应的端口通过;
5.3 smbfs文件系统的挂载;
mount 的用法,加载网络中的共享文件夹到本地机;mount就是用于挂载文件系统的,SMB做为网络文件系统的一种,也能用mount挂载;smbmount说到底也是用mount的一个变种;
mount 挂载smbfs的用法;
mount -t smbfs -o codepage=cp936,username=用户名,password=密码 , -l //ip地址/共享文件夹名 挂载点
或
mount -t smbfs -o codepage=cp936,username=用户名,password=密码 , -l //计算机名/共享文件夹名 挂载点
或
mount -t smbfs -o codepage=cp936 //ip地址或计算机名/共享文件夹名挂载点
smbmount的用法:
smbmount -o username=用户名,password=密码 , -l //ip地址或计算机名/共享文件夹名 挂载点
smbmount //ip地址或计算机名/共享文件夹名 挂载点
说明:
如果您的服务器是以share共享的,则无需用户名和密码就能挂载,如果出现要密码的提示,直接回车就行;您也可以用smbmount 来挂载,这样就无需用mount -t smbfs来指定文
件系统的类型了;
对于挂载点,我们要自己建立一个文件夹,比如我们可以建在/opt/smbhd,这由您说的算吧;
在mount的命令中,我们发现有这样的一个参数codepage=cp936,这是服务器端文件系统的编码的指定,cp936 就是简体中文,当然您可以用utf8等,编码不同时可能造成中文文件名显示乱码。