项目五 配置与应用samba服务
项目五 配置与应用Samba服务
【项目说明】
在一些中小型网络、或者企业的内部网中,利用Linux建立文件服务器是一个很好的解决方案。针对企业内部网中的绝大部分客户机采用Windows的情况。我们可以通过使用Samba来实现文件服务器功能。
要实施完成此项目需要完成以下3个任务。
任务一:安装Samba与共享用户的家目录:
任务二:配置学校Samba服务器;
任务三:配置企业级Samba权限。
本任务的主要内容是实现如下功能:员工可以在本公司内流动办公,无论在任何一台机器上工作,都能把自己的文件放到服务器中,同时不能使用服务器上的shell.
【任务实施】
安装好Samba软件,SMB中有关于用户家目录就已经设置好了默认共享,只要启动服务,然后在增加用户和指定不可用的shell即可。
第一步:Samba软件的安装
使用如下命令安装Samba服务软件
【mount /dev/cdrom /mnt】挂载光盘。
【cd /mnt/Packages】进入软件所在目录。
【rpm -ivh samba-3.6.9-164.e16.x86_64.rpm】通过rpm安装samba软件。或者配置好YUM源,然后通过以下命令安装。
【yum install -y samba】通过YUM 源安装,前提是搭建好YUM源。
【rpm-qa samba】查询软件的安装情况。
第二步:查看和备份Samba的配置文件
cat /etc/samba/smb.conf 查看Samba服务的配置文件
c p /etc/samba/smb.conf /etc/samba/smb.conf.bak 备份配置文件
第三步:服务的启动与停止
/etc/init.d/smb start 启动Samba服务
/etc/init.d/smb stop 停止Samba服务
/etc/init.d/smb restart 重启Samba服务
chkconfig smb on 设置开机后Samba服务自动启动
第四步:新建Samba用户
通过以下命令新建Samba用户
useradd yhy -s /dev/null 新建yhy用户
smbpasswd -a yhy 设置yhy用户的Samba访问密码
第五步:window客户端访问
在window的客户端通过地址栏里面输入\\服务器IP ,然后输入第四步建立好账号以及密码,即可访问服务器上Samba服务,通过windowXP系统访问的效果
第六步:linux客户端访问
Linux客户端通过smbclient//192.168.106.4/yhy-U yhy 命令访问,按ENter键后输入Samba用户yhy密码,即可访问Samba服务器上的资源
第七步:Samba软件的卸载
如果Samba服务器不在使用,可以通过以下命令卸载Samba服务
rpm -e samba 卸载Samba软件包。
任务二:配置学校Samba服务
此任务的关键是不同组对同一个目录的权限设置,student目录属于students用户组,并设置权限为7,通过权限来实现teachers对student目录的访问
第一步:建立用户以及群组
groupadd students建立学生群组
groupadd teachers建立教师群组
useradd -g student student1 建立教师用户并加入相应群组
useradd -g teachers teacher1 建立教师用户并加入相应群组
第二步:建立Samba用户
【smbpasswd -a student1】设置student1用户的Samba访问密码,并使student1用户具有Samba访问权限。
【smbpasswd -a teacher1】设置teacher1用户的Samba的访问密码,并使teacher1用户具有Samba访问权限。
第三步:建立共享目录以及设置文件夹权限
【mkdir /home/student】建立共享目录。
【chgrp students /home/student】设置共享目录的所属组为students.
【chmod 757 /home/student】设置共享目录的权限。
【chmod g+s /home/student】设置特殊权限。该目录下所建文件的所属组都会变成和该目录一样的权限。
第四步:备份配置文件
【cp /etc/samba/smb.conf /etc/samba/smb.conf.bak】备份配置文件。
【pdbedit -L】列出Samba用户列表,读取passdb.tdb数据库文件。
【pdbedit -Lv】列出Samba用户列表的详细信息。
【pdbedit -c "[D]" -u username】暂停该Samba用户的账户。
【pdbedit -c"[]" -u username】恢复该Samba用户的账户。
第六步:编辑Samba配置文件的共享参数
通过【vim /etc/samba/smb.conf】命令编辑、etc/samba/smb.conf文件,在最后增加的内容如下
1、全局设置
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
workgroup = MYGROUP
下面的这句话是后加的,加入的意义为:使WIN用户可以看到主机的名字,但我将此行注释掉后,没看到什么影响。
netbios name = express
下面设置的是服务器的字符串,相当于NT中的计算机说明部分
server string = Samba Server
下面的选项对于安全性很重要。他允许你对是否可以进行本地网络连接的机器进行了限制。
hosts allow = 192.168.1.50 192.168.1.43 192.168.1.44 192.168.1.45 192.168.1.46 192.168.1.47 192.168.1.48 192.168.1.49
如果想要自动共享打印机而不是个别地进行单独设置,使用下面的选项:
printcap name = /etc/printcap
load printers = yes
除非你是非标准的,否则下面的选项对于你说清楚打印系统的类型并不是很必要。当前支持的打印系统主要有以下几类:
# bsd, sysv, plp, lprng, aix, hpux, qnx, cups
printing = cups
如果想要一个guest账号的话就不用注释下面的行。你必须把这个加入到/etc/passwd中,否则用户“nobody“会被使用。
; guest account = pcguest
下面的选项告诉samba对不同的机器连接使用不同的日志文件。小心如果你允许访问的机器太多的话,文件可能极多哟!!!:)
log file = /var/log/samba/%m.log
设置log文件的大小(KB)(# Put a capping on the size of the log files (in Kb).)
max log size = 0
安全格式。大多数用户使用用户级安全。详见security_level.txt。
security = share
使用密码服务选项,仅用于security = server模式
参数列表可以包括:
# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]
# 或自动查找域控制器
# password server = *
; password server =
对于所有的上面和下面的组成部分的_n_characters密码所允许的匹配级别
; password level = 8
; username level = 8
你可能想使用密码编码。见在samba文档中的ENCRYPTION.txt, Win95.txt和WinNT.txt。
除非你已经仔细的读过了那些文档,否则不要**下面的选项:
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
当samba被建成为支持SSL的模式时,下面需要从大量的假的错误中保持smbclient。(原文如下:
# The following is needed to keep smbclient from spouting spurious errors
# when Samba is built with support for SSL.
; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt
下面的选项需要允许从windows对linux系统的密码进行修改。
# 注意:上面带有'encrypt passwords' 和'smb passwd file'选项使用这些。
# 另: 如果仅是允许工作站改变加密的SMB密码那么你不需要这些。它们允许Unix密码与SMB密码保持同步。
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
你可以使用PAM的密码改变控制标记。如果**的活,当一个SMB客户端请求代替了在密码程序列表时,PAM将用于密码改变。对于大多数的设置,不改变密码字符参数而**这个也是可能的。
pam password change = yes
Unix用户可能映射不同的SMB用户名。
username map = /etc/samba/smbusers
在每一台机器的基础上,使用下面的行可以使你定制你的配置。%m以连接机器的netbios名代替。
; include = /etc/samba/smb.conf.%m
这个参数控制samba是否服从于PAM账号和对话管理指示。默认情况下是使用PAM仅清除文本证明且忽略任何的账号或对话管理。注意:当加密密码=yes时,samba总是忽略PAM的证明。
obey pam restrictions = yes
很多人都会发现这个选项优化了性能。详见speed.txt和帮助手册页。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
配置samba使用多重接口。
如果你有多个网络接口的话,必须把他们在下面列出来。详见man。
; interfaces = 192.168.12.2/24 192.168.13.2/24
配置请求播出同步到远程浏览器,或从一个主机同步浏览器列表或从/到整个子网(如下)。
; remote browse sync = 192.168.3.25 192.168.5.255
使主机将自己广播到本地的子网。
; remote announce = 192.168.1.255 192.168.2.44
浏览器控件选项:
如果你不想让你的samba在你的网络中变成一个主浏览器,那么设置local master为no,否则将采用正常的规则。
; local master = no
os level决定在主浏览器的中被提取的优先级。默认值是很合理的。
; os level = 33
域master指定samba是域主浏览器。这允许samba在子网之间比较浏览列表。如果你已经有了一个Win NT的主域控制器的话,就不要设置这个选项。
; domain master = yes
首选master使samba在启动时拒绝一个本地浏览器的选出,且给他一些小的较高的机会让其来选出。
; preferred master = yes
如果你要samba成为Win95工作站的域登录服务器的话则**它。
; domain logons = yes
如果你**了domain logons,那么你可以让每一台机器或每一个用户登录角本运行一个指定的登录批处理文件。原文如下:if you enable domain logons then you may want a per-machine or per user logon script run a specific logon batch file per workstation (machine)
; logon script = %m.bat
每一个用户名都运行一个指定的登录批处理文件
; logon script = %U.bat
# 存储动态的profile(仅针对95与NT)
# %L 代表netbios name, %U 是一个用户名
# 不能注释掉下面的[Profiles]共享。
; logon path = \%L\Profiles\%U
支持WINS部分:告诉samba组件的NMBD去**WINS服务。
; wins support = yes
WINS服务器-告诉samba组件的NMBD成为一个WINS客户端。
注意:samba即可以是一个WINS服务器,也可以是一个客户端,或都不是。
; wins server = w.x.y.z
WINS代理-原文如下,没法翻译(Tells Samba to answer name resolution queries on behalf of a non WINS capable client,),执行这件事必须要求在网络中至少有一个Wins服务器。默认情况下是NO。
; wins proxy = yes
# DNS Proxy – 告诉samba是否经过DNS的nslookup试着去解析NETBIOS名。1.9.17的内置默认值是yes,目前已经改为1.9.18的no。
dns proxy = no
实例保存可以很简洁-系统默认值是_no_
注意:可以在每一个共享基础上设置
; preserve case = no
; short preserve case = no
默认实例是对于所有的DOS文件都大写
; default case = lower
对于此选项要很小心-它可能带来一些想不到的事情。
; case sensitive = no
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
如果不想要samba不承认已经映射为guest的用户,可用如下设置
; map to guest = bad user
如果想创建netlogon目录给域登录,不要注释下面的内容。
; [netlogon]
; comment = Network Logon Service
; path = /usr/local/samba/lib/netlogon
; guest ok = yes
; writable = no
; share modes = no
想提供一个指定的不固定的共享profile那么就不要注释下面的内容,默认使用用户主目录。
;[Profiles]
; path = /usr/local/samba/profiles
; browseable = no
; guest ok = yes
注意:如果你有一个BSD风格的打印系统,则没有必须单独的特别指定每一个打印机。
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
设置public=yes表示允许’guest account’打印
guest ok = no
writable = no
printable = yes
下面的内容对人们共享文件是有用的。
;[tmp]
; comment = Temporary file space
; path = /tmp
; read only = no
; public = yes
公用的可访问的目录,除了在staff组中的成员外,对其它人为只读
;[public]
; comment = Public Stuff
; path = /home/nw
; public = yes
; writable = yes
; printable = no
; write list = @staff
私有打印机,仅仅fred本人可用。打印池中的数据将被放到fred的主目录中。注意:fred用户无论在什么地方都必须对打印池有写访问的权限。
;[fredsprn]
; comment = Fred's Printer
; valid users = fred
; path = /home/fred
; printer = freds_printer
; public = no
; writable = no
; printable = yes
私有目录,仅能对fred开放。注意fred对这个目录需要写访问的权限。
;[fredsdir]
; comment = Fred's Service
; path = /usr/somewhere/private
; valid users = fred
; public = no
; writable = yes
; printable = no
允许你制作配置文件去引入的连接到这里的每一台机器都有不同的目录的服务。
使用%U选去配置用户名,%m代替连接到的机器名。
;[pchome]
; comment = PC Directories
; path = /usr/local/pc/%m
; public = no
; writable = yes
公共可访问的目录,对所有的用户都可读/写。注意:在这个目录中的所有由用户创建的文件都会被标识成默认用户所有。所以有访问仅限的用户可以删除别的用户的文件。很明显这个目录必须是可以被默认用户写的。另一个用户当然可以指定,这样所有的文件都将被那个用户所替代。
[public]
path = /tmp/aaaa
public = yes
guest ok = yes
writable = yes
printable = no
下面的两个例子是怎样共享一个目录给两个用户,在这个共享目录中他们可以放置文件且分别属于各自所有。在这个设置中,目录将可以被两个用户同时使用且在其上有粘滞位保护。很明显,可以扩展为多个用户的情况。
;[myshare]
; comment = Mary's and Fred's stuff
; path = /usr/somewhere/shared
; valid users = mary fred
; public = no
; writable = yes
; printable = no
; create mask = 0765
以下是个人实际的设置
[sharedir]
path = /home/nw
public = yes
guest ok = yes
writable = yes
第七步:启动服务
【/etc/init.d/smb restart】或【service smb restart】重启samba服务。
【chkconfig smb on】设置Samba服务在服务器重启后自动启动。
第二步:建立用户群主
【groupadd marketusers】建立市场部用户组。
【groupadd salesusers】建立销售部用户组。
【useradd user -s /sbin/nologin】建立user用户,并指明不可用的shell.
第三步:设置文件夹权限
【chmod 770 sales market】设置sales和market两个文件夹的权限为770.
【chmod 777 pub】设置pub文件夹的权限为777.
【chown : marketusers market】设置market文件夹的所属组为marketusers组。
【chown :salesusers sales】设置sales文件夹的所属组为salesusers组。
第四步:备份配置文件
【cp /etc/samba/smb.conf /etc/samba/smb.conf.bak】备份配置文件。
第五步:编辑Samba配置文件的共享参数
通过【vim /etc/samba/smb.conf】命令编辑/etc/samba/smb.conf文件,在最后添加如下内容:
第六步:建立Samba用户
【smbpasswd -a user】建立Samba用户
第七步:客户端的连接测试
通过【\\服务器IP】形式在Windows的客户端访问共享目录。在DOS仿真的窗口,可以通过【net use】命令查看当前正在会话的网络连接,通过【net use \\服务器IP /del】命令中断当前正在会话的网络连接。在测试阶段,如果不中断当前正在会话的网络连接,就无法使用令一个用户访问Samba.
子任务二:配置企业特殊文件权限
第一步:分析企业需求
第二步:建立共享目录
【mkdir /home/sales】建立销售部共享文件夹。
【mkdir /home/markets】建立市场部共享文件夹。
第三步:建立用户以及群组
【groupadd sales】建立sales用户组。
【groupadd markets】建立markets用户组。
【useradd -g sales salesuser】建立salesuser用户并加入sales组中。
【useradd -g markets marketsuser】建立marketsuser用户并加入markets组中。
【useradd ceo】建立ceo账号。
第四步:建立Samba访问账号
【smbpasswd -a salesuser】建立Samba用户salesuser。
【smbpasswd -a marketsuser】建立Samba用户marketsuser。
【smbpasswd -a ceo】建立Samba用户ceo.
第五步:设置文件夹权限
【chgrp sales /home/sales】修改/home/sales文件夹的所属组为sales组。
【chgrp market /home/market】修改/home/market文件夹的所属组为market组。
【chgrp ceo /home/sales】修改/home/sales文件夹的所有者为ceo组。
【chgrp ceo /home/market】修改/home/market文件夹的所有者为ceo组。
【chmod 770 /home/sales】修改/home/sales文件夹的权限为770。
【chmod 770 /home/market】修改/home/market文件夹的权限为770.
【chmod g+s /home/sales】为/home/sales目录加上setgid标识。
【chmod g+s /home/market】为/home/market目录加上setgid标识。
第六步:备份配置文件
【cp /etc/samba/smb.conf /etc/samba/smb.conf.bak】备份配置文件。
第七步:编辑【vim /etc/samba/smb.conf】命令编辑smb.conf配置文件,更改后的内容如下:
第八步:配置Samba服务在系统中运行
【/etc/init.d/smb restart】或【service smb restart】重启Samba服务。
【chkconfig rpcbind on】设置rpcbind开机后自动启动。
【chkconfig smb on】设置Samba开机后自动启动。
子任务三 配置企业严格文件权限
第一步:功能分析
其实实现这个子任务主要靠加载独立的配置文件,只要把独立的文件设置好相应的权限就可以了。在SMB主配置文件中加入独立的配置文件,其他不用设置。用户的增加和前面的子任务没有区别,在此略过。
第二步:复制配置文件
首先把原始的smb.conf文件复制出来,后面加上相应的用户或用户组,如smb.conf.user、smb.conf.group等。
第三步:配置各自的配置文件
子任务四 Samba服务器特别设置
第一步:熟悉Samba服务器的用户控制语句
public=no #不准许匿名用户访问
browseable=no #隐藏目录,知道目录同样可以访问,系统默认yes
valid user=用户或列表或@用户组 #可访问的用户或列表或用户组
writable=yes #共享权限可写,目录本身要可写
wrist list=用户或列表或@用户组 #可写用户列表或用户组
readonly=yes #是否设置只读(系统默认yes,可以不写)
creat mask=0744 #控制客户机创建文件的权限(系统默认0744)
directory mask=0744 #控制客户机创建目录的权限(系统默认0744)
第二步:配置Samba的几个关键字段
第三步:熟悉批量增加SMB用户语句
第四步:熟悉管理SMB的用户账号命令
第五步:熟悉Linux客户端的访问测试方法