1、前言
一般,我们项目中用到的linux服务器系统基本都是RedHat和CentOS;安装微软的系统基本都是用的Windows Server 2008 R2,下面介绍linux服务器中如何安装samba服务器、windows挂载samba服务器的具体步骤、linux挂载samba服务器的具体步骤。
2、安装samba服务器
- 已默认安装samba
默认情况下linux操作系统安装好了以后,默认是会有自带安装好的samba服务器,我们只需要对samba的核心文件进行配置即可,编辑/etc/samba/smb.conf文件即可; - 未默认安装samba
如果linux系统中不自带samba服务,此时我们可以通过yum或者rpm包这2种安装模式进行安装samba服务器:
yum -y install samba* #通过yum安装
安装完毕以后检查安装包:
rpm -qa |grep samba 可以看到有6个安装包:
samba-client-3.6.23-12.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-winbind-3.6.23-12.el6.x86_64
samba-winbind-clients-3.6.23-12.el6.x86_64
samba-common-3.6.23-12.el6.x86_64
samba-3.6.23-12.el6.x86_64
通过rpm安装的步骤:先下载rpm安装包,然后用rpm –ivh samba.rpm这种格式来进行安装,安装完毕以后可以通过如下命令检查是否已经安装上samba服务:
rpm –qa|grep samba
- 编辑samba的配置文件
vi /etc/samba/smb.conf
配置例子:
#====Global Settings ===
[global] #全局设置
workgroup = MYGROUP #定义组,可以自定义命名
server string = Samba Server Version %v
security = share #安全级别。
user: 必须提供账号密码才能使用
share: 任何人都可以共享文件
domain:把用户的账号密码通过第三方来认证
passdb backend = tdbsam smbpasswd ldapsam
#以哪种方式存放密码
load prienters = yes #是否启用打印机
cups options = raw #定义打印机的执行方式
#=== Share Definitions ===
[zjs] #共享目录标识
comment = zjs file share #说明
path =/home /share #samba服务器共享出来的目录
browsable =yes #browseable用来指定该共享是否可以浏览。
writable = yes #writable用来指定该共享路径是否可写。
guest ok = yes #意义同“public = yes”
create mask = 0777 #创建文件的权限
sync always = yes
valid user = cstc #如果全局security = user可以放开访问的smb用户
- 新建samba用户密码
useradd -s /sbin/nologin cstc #新建cstc用户,不可登陆系统,免登陆可不设置
smbpasswd –a cstc #设置cstc用户的密码
chmod –R 777 /home/share #设置共享文件权限,否则其他机器写入有问题
- 开启、关闭、重启samba服务
开启: service smb start
关闭:service smb stop
重启:service smb restart
chkconfig --level 35 smb on #开机启动
# testparm --测试配置是否正确
- 关闭iptables和selinux
1、关闭selinux:
getenforce #查看selinux的状态。
setenforce 0 #临时关闭selinux
#vi /etc/sysconfig/selinux
修改SELINUX值为:SELINUX=disabled,重启生效。 #永久关闭
2、关闭防火墙:
#service iptables status #查看状态
#service iptables stop #关闭防火墙
#chkconfig iptables off #开机不启动
- linux 下挂载:
mount -t cifs -o username=muzi,rw,passwd=123456 // 10.253.10.180 /nxjy /home/nxcj/files
Windows服务器映射samba服务器的共享目录
- 服务中tcp/ip netbios服务启用
- 网卡中协议的tcp/ip 下的netbios
浏览器或者资源管理器中输入举例:
此时已经能访问到samba服务器共享的/share目录
映射samba服务器的/share到windows的/z:
鼠标右击“share”这个共享目录,选择”映射网络驱动器“出现如下内容
默认的驱动器第一个即为”Z:”盘符,点击完成,此时磁盘映射已经做好,此时打开windows资源管理器,已经可以看到”Z:”
Linux挂载到samba服务器共享的目录
命令如下:
在要挂载linux服务器本地新建一个目录/test,然后samba服务器共享的/share挂载到本地的/test目录
mkdir /test
挂载命令:
mount.cifs -o username=xxxx,rw,passwd=123456 //192.168.xx.21/xxxx /home/xxxx/share
注://192.168.xx.21/xxxx的xxxx不是目录,而是配置文件中的识别符。输入的用户密码是前面已经创建好的smb用户密码,也可用系统账户密码。
此时查看挂载状态:
此时本地linux已经成功挂载到samba服务器的/share
注:有时我们需要查看服务器上都注册了哪些用户,这时我们就可以用下面的命令来查看了。
pdbedit -L
注:要想每次启动客户端机器的时候自动挂载,按以下步骤操作:
方法一、vim /etc/rc.local添加一行
Mount –t cifs -o username=xxxx,rw,passwd=123456 //192.168.xx.21/xxxx /home/xxxx/share
方法二、vim /etc/fstab下加入:
//192.168.xx.21/xxxx /home/xxxx/share cifs defaults,username=xxxx,passwd=123456,rw 0 0
- 常见问题
Win端挂载清除用户连接缓存,在cmd执行:net use * /delete
注意:执行命令前的前提是关闭所有的资源管理器窗口。
1、客户端一定要使用规定的账号挂载,否则会出现如下报错:
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
2、umount: /home/nxcj/files: device is busy.说明还有程序霸占着进程,只要执行以下命令查询并杀掉这个进程即可
fuser -m -k /home/nxcj/files #查询
fuser -m -v -i –k /home/nxcj/files #查询并直接杀死进程,同时会询问y/n
3、以下错误主要看命令是不是格式是正确的,主要就是要加用户名及密码,同时还要注意就是ip+标识符是否正确。
Retrying with upper case share name
mount error(6): No such device or address
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
4、不管是服务器端还是linux的客户端,都最好执行下这个命令,避免缺少cifs协议的包造成的损失。
yum install cifs* -y
yum install cifs-utils