linux上安装配置samba服务器
在linux上安装配置samba服务器
在这给大家介绍一个不错的家伙,samba服务。如果您正在犯愁,如何在Windows和Linux之间实现资源共享,就请看看这篇详解,希望能帮您解决困扰。
先简单介绍一下,SMB(Server Messages Block,信息服务块)是在局域网上共享文件和打印机的一种协议,通过它可以使局域网内的Windows、linux和Unix等系统共享文件和打印机等资源。在linux上可以运行SMB的软件很多,最常用的就是Samba。如果您使用的是REDHAT 9,在那三张光盘中就提供了samba服务器的RPM包。
安装samba服务器的RPM包
像在linux下安装配置其他服务一样,先要安samba有关的RPM包:
1)Samba-common:包括samba服务器和客户端均需要的文件(在第一张光盘中)
2)Samba:samba服务端软件(在第一张光盘中)
3)Samba:samba客户端软件(在第一张光盘中)
说明一下,列出这些要安装的rpm包包只是为了说明清楚些,其实只要用个“samba*”就全搞定了。为了老少皆宜,我把所有操作过程都帖了过来,连不会挂载光驱的朋友都应该能看懂吧。
1)
[root@linux root]# mount /mnt/cdrom
[root@linux root]# cd /mnt/cdrom/RedHat/RPMS/
[root@linux RPMS]# rpm -ivh rpmdb-redhat-9-0.20030313.i386.rpm
warning: rpmdb-redhat-9-0.20030313.i386.rpm: V3 DSA signature: NOKEY, key ID
db42a60e
Preparing... ###################################### [100%]
1:rpmdb-redhat ################################### [100%]
这一步是准备工作,把REDHAT 9的C盘中的rpmdb-redhat包安上,可以解决安装时的依赖关系错误。
[root@linux RPMS]# cd
[root@linux root]# umount /dev/cdrom
[root@linux root]# mount /mnt/cdrom
既然samba的包都在REDHAT 9的A盘,就在光驱中放入A盘,mount挂载一下。
mount: /dev/cdrom already mounted or /mnt/cdrom busy
mount: according to mtab, /dev/cdrom is already mounted on /mnt/cdrom
[root@linux root]# cd /mnt/cdrom/RedHat/RPMS/
[root@linux RPMS]# rpm -ivh samba* --aid
安装所有以samba开头的包,加上—aid参数,就把安装时所需的其他包也安上了,很方便。
warning: samba-2.2.7a-7.9.0.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ##################################### [100%]
1:libjpeg ##################################### [ 14%]
2:libtiff ##################################### [ 29%]
3:libpng ##################################### [ 43%]
4:cups-libs ##################################### [ 57%]
5:samba-common ################################## [ 71%]
6:samba ##################################### [ 86%]
7:samba-client #################################### [100%]
修改配置文件
[root@linux RPMS]# vi /etc/samba/smb.conf
在[global]部分做如下修改:
1) workgroup = WORKGROUP (改一下工作组名)
2) hosts allow = 192.168.138. (写一个允许访问这服务器的网段,末尾有“.”)
3) security=user
samba有四种安全等级:
share:用户不需要账户及密码即可登录samba服务器
user:由提供服务的samba服务器负责检查账户及密码(默认)
server:检查账户及密码的工作由另一台windows或samba服务器负责
domain:指定windows域控制服务器来验证用户的账户及密码)
4) encrypt passwdords=yes (去掉前面的注释“;”)
smb passwd file = /etc/samba/smbpasswd (密码文件的位置)
在文件末尾添加如下内容:
[samba] (共享文件夹名)
comment=This is my samba server (这是注释行,可以不写东西)
path=/samba (指定要共享文件的位置)
writable = yes
browseable =yes
read only = yes
create mode=0664 (这是文件权限)
directory mode=0777 (这是目录权限)
保存退出。vi编辑器使用,按“i”,修改添加;先按“esc”,再按“:”输入“wq”即是保存退出,输入“q!”是不存盘退出。
启动samba服务
[root@linux samba]# service smb start (启动samba服务)
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@linux samba]# testparm (检查配置文件的正确性)
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[samba]"
Loaded services file OK.
Press enter to see a dump of your service definitions
创建一个samba用户
该用刻户在windows下有没有都无所谓。
1)建一个系统用户
[root@linux samba]# useradd samba (建一个名叫samba的用户)
[root@linux samba]# passwd samba (给samba用户添加密码)
Changing password for user samba.
New password: (密码要六位以上,不显示在屏幕上)
BAD PASSWORD: it does not contain enough DIFFERENT characters
Retype new password: (确认密码)
passwd: all authentication tokens updated successfully.
2)然后创建samba帐户
[root@linux samba]# smbpasswd -a samba
(-a必须加,为了生成密码文件smbpasswd,该密码是windows登陆Linux的samba用户密码)
New SMB password:
Retype new SMB password:
unable to open passdb database.
Added user samba.
3)查看一下生成的用户名、密码
[root@linux samba]# vi /etc/samba/smbpasswd
samba:500:A9C604D244C4E99DAAD3B435B51404EE:ACB98FD0478427CD18949050C5E87B47:[UX ]:LCT-468268E6:
4)重新启动samba服务
[root@linux samba]# service smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
最后阶段,进行测试
1)先按照主配置文件所指定的位置,建好要共享的资源。
[root@linux usr]# mkdir samba (建/usr/samba文件夹)
[root@linux usr]# chmod 777 /usr/samba (samba服务器受本地文件系统权限和共享权限两种权限,而且是取最严格的权限,为了方便就把本地权限都给足好了)
[root@linux usr]# cd samba
[root@linux samba]# vi aaa.txt
2)在Windows客户机的地址栏中输入samba服务器ip(如“\\192.168.138.110)
OK了,在linux搭建的samba服务器上资源可以供Windows客户端访问了。
Linux Samba服务器配置小记
公司需求:
1. 公司搭建Samba服务器,将对公司数据进行统一的有效管理;
2. 所有员工在公司局域网内不论在哪台电脑上工作,都能访问并能将自己的文件数据保存在Samba文件服务器上。
3. 销售部,技术部都拥有各自部门的共享目录,其他部门不允许访问;
4. Samba服务器只供公司内部使用,并限量员工的使用空间。
根据网络拓扑进行Samba服务器的部署步骤;
一、建立公司员工账号及技术与销售组;
二、将相关员工加入技术及销售组;
三、建立销售及技术共享的目录,并更改目录相关权限;
四、安装并配置Samba服务器;
五、利用quota进行磁盘配额;
关于如何建账号,组这里就不再叙述。直接从第三步开始进行部署;
[root@server ~]# mkdir /home/sales
[root@server ~]# mkdir /home/jishu
[root@server ~]# chgrp jishu /home/jishu
[root@server ~]# chmod 770 /home/jishu
[root@server ~]# chgrp sales /home/sales
[root@server ~]# chmod 770 /home/sales
安装并配置Samba;
[root@server ~]# rpm -qa samba*
samba-common-3.0.23c-2
samba-3.0.23c-2
samba-client-3.0.23c-2
默认系统已经安装好Samba组件;
设置smb.conf配置文件如下:
[root@server ~]# vi /etc/samba/smb.conf
具体相关配置文件里面的参数,有兴趣自己去搜索相关资料;
#设置主机方面的参数;
[global]
#与Linux主机名称有关的设置信息
workgroup = keywise 工作组设置
netbios name=server Samba服务器的NETBIOS名称
server string = This is liang’s Samba Server
#与语言有关的设置信息
unix charset=utf8
display charset=utf8
dos charset=cp950
#与日志文件有关的设置信息
log file = /var/log/samba/%m.log 日志存放位置
max log size = 50
#与密码有关的设置信息
security = user 访问需要提供密码
encrypt passwords=yes 是否加密
smb password file=/etc/samba/smbpasswd 密码放置文件
#新增每个用户的默认目录及群组用户目录,如下图;
编辑完smb.conf文件后,保存退出;
然后设置可使用Samba的账号与密码;
先查看并确认密码文件是否存在,若不存在,得自行建立;
[root@server ~]# ls -l /etc/samba/smbpasswd
-rw------- 1 root root 207 Jul 6 01:15 /etc/samba/smbpasswd
新增用户并查看/etc/samba/smbpassword;如下图;添加samba账户之前,确认系统中有相关账号;
测试smb.conf语法设置的正确性;
[root@server ~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[temp]"
Processing section "[homes]"
Processing section "[jishu]"
Processing section "[sales]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
启动并观察SMB服务
[root@server ~]# /etc/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@server ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2667/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 2667/smbd
udp 0 0 192.168.1.50:137 0.0.0.0:* 2671/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 2671/nmbd
udp 0 0 192.168.1.50:138 0.0.0.0:* 2671/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 2671/nmbd
注:Samba默认会启动多个端口,TCP端口139,445;UDP端口137,138;
测试SAMBA
l 使用匿名账号查看,密码为空;看到相关的工享目录;
l 使用jack账号查看,能看到自己的家目录;每个拥有SAMBA账号的用户,看到的目录都和自己的账号同名;
l 开始在客户端进行测试;利用一个账户进行测试;在测试时,遇到相关LINUX防火墙安全性问题;因此建议先关闭防火墙,或建相应的规则允许通过;如下图:
l 利用一个属于sales组的账户,访问sales共享目录,出现如下错误;
查看由于账号没有加入sales组;因为/home/sales目录所属组为sales;因此没权限访问;
[root@server ~]# ll /home
total 72
drwxrwx--- 2 root jishu 4096 Jul 6 06:21 jishu
drwx------ 2 liang liang 4096 Jul 6 06:16 liang
drwx------ 2 root root 16384 Jun 26 08:43 lost found
drwxrwx--- 2 root users 4096 Jul 6 01:16 public
drwxrwx--- 2 root sales 4096 Jul 6 02:30 sales
将账户加入相应组;
[root@server ~]# vi /etc/group
jishu:x:504:jack
sales:x:505:tom
然后利用net use * /del 删除已建连接;重新用Jack账号访问;
能成功看到属于自己的私有目录;并对目录有写入权限;
l 看对技术目录有没有权限写入,测试一下;因为Jack属于技术组;因此应该对jishu目录有写入权限;
OK,测试成功;SAMBA基本配置完成;
由于服务器空间有限,还得利用quota限制用户及组的空间使用;
Quota的前提,磁盘空间必须为独立的分区;可以依据不同的用户及组来加以限制使用硬盘空间;这里以/home为例;
比如限制每个用户的hardlimit为50MB;而softlimit为40MB;
1、修改/etc/fstab, 如下图;
[root@server ~]# vi /etc/fstab
[root@server ~]# mount–a
[root@server ~]# sync;sync;sync; reboot
建立quota所需要的设置文件;
[root@server ~]# quotacheck -avug
quotacheck: Scanning /dev/hda6 [/home] quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
done
quotacheck: Checked 10 directories and 21 files
quotacheck: Old file not found.
quotacheck: Old file not found.
[root@server ~]#
以上提示为找不到相关设置文件;只能自行建立;
[root@server ~]# touch /home/aquota.user; touch /home/aquota.group
[root@server ~]# quotacheck -avug
quotacheck: Scanning /dev/hda6 [/home] done
quotacheck: Checked 10 directories and 23 files
[root@server ~]#
启动quota
[root@server ~]# quotaon -av
/dev/hda6 [/home]: group quotas turned on
/dev/hda6 [/home]: user quotas turned on
[root@server ~]#
设置用户磁盘配额;
[root@server ~]# edquota -u jack
磁盘配额也基本完成;如果要对组进行配额,就执行以下命令;这里就不多言了;
[root@server ~]# edquota -g jishu
所有的配置步骤基本完成,由于在学习阶段;希望博友们多指教不足之处,并提相关建议,博主在此有礼了,THX;
技术改变世界! --狂诗绝剑