网络文件共享(Ftp,NFS,Samba)――Samba
S
amba主要用来在Windows与Linux之间的文件共享工具,用户的认证和授权都可以由samba自己来定义和实现,并且支持打印共享、名称解析、服务的喧称(即有浏览权),samba客户端可以通过远程连接samba服务器来上传和下载文件。
Samba服务的主要程序:
【smbd:提供对服务器中文件、打印资源的共享访问,
【nmbd:提供基于NetBIOS主机名称的解析, 使用udp的137、138端口】
smb使用tcp的139端口
cifs使用tcp的44 5端口
软件包:
samba.i386
-
3.0.33-3.14.el5
Samba的服务脚本:/etc/init.d/smb
Sambade 配置目录为:/etc/samba,配置文件为:/etc/samba/smb.conf,它默认定义的三个字段即
[global]
Global (全局)参数
该部分设置整个系统的规则,定义了一些公共变量
,如
netbios name=web
定义Windows系统“网上邻居”中所见的机器名
,如
workgroup=SambaServer
定义服务器的工作组名
,如
server string=Samba Server
对主机的说明信息
如:
hosts allow=
192.168.0.105
guest account=
thg
定义smb用户名称
,如
security=user
、[homes]、[printers]
。
Nmbclient是可以用来进行调试的程序。
Smbfs程序是使用SMB协议工作的文件系统。
Smbumount程序用于卸载Smbmount建立的共享资源目录
。
如printer字段:
[printers]
comment = All Printers
(定义注释描述信息)
path = /var/spool/samba
(定义打印队列或共享目录)
browseable = no
(定义浏览权限,此处表示除了用户自己可看到外,其他人都不允许浏览)
guest ok = no
(定义是否允许来宾账号访问的,此处表示不允许来宾账号访问)
writable = no
(定义是否可写的,此处表示不可写)
printable = yes
还有例如:
valid users=@mygroup
(用来定义对那些用户来自定义共享的,此处表示对mygroup组的 用户均可共享)
V
alid users=+natasha(表示允许natsaha用户共享)
write list=wendy
(用来定义谁具有写权限的,此处表示wendy用户在访问共享时具有写权限)
public=yes(表示可见)
read only=no(表示只可写)
getbool -a | grep samba(查看与samba相关的bool值)
setsebool -P samba_enable_home_dirs on(修改samba的bool
值 可以让用户访问自己的家目录)
chcon -R -t samba_share_t /path/to/samba_share_DIR(让samba客户端可以访问samba服务器的共享目录)
1)
如何利用Samba来实现针对不同的用户具有不同的共享权限呢?
实验要求
:添加两个附加组都为mygroup组的用户natasha和wendy,让wendy具有访问与可写权限,让natasha具有访问权限;再添加一个mary的用户,让mary只有浏览权限;新建一个属主为root属组为mygroup权限为775的共享目录/
shared,
并用smbclient客户端进行访问。并且把防火墙设为Enforcing状态。
实验环境:
samba
―
server:192.168.0.105
S
amba
―
client:192.168.0.106
在samba
―
server上做设置:
[root@station19 ~]# rpm -qa | grep samba
(查看已安装的samba软件包)
samba-client-3.0.33-3.14.el5
samba-common-3.0.33-3.14.el5
[root@station19 ~]# yum list all | grep samba
(列出samba软件包)
samba.i386
-
3.0.33-3.14.el5
samba-client.i386
-
3.0.33-3.14.el5
samba-common.i386
-
3.0.33-3.14.el5
samba-swat.i386
-
3.0.33-3.14.el5
system-config-samba.noarch
-
1.2.41-5.el5
[root@station19 ~]# yum -y install samba
(安装samba包)
[root@station19 ~]# service smb start
(启动samba服务)
Starting SMB services:
[ OK ]
Starting NMB services:
[ OK ]
[root@station19 ~]# chkconfig smb on
(添加到开机自启动列表)
[root@station19 ~]# netstat �Ctunlp
(查看是否启动成功,即137、138、139、445端口是否开放了)
tcp 0
0 0.0.0.0:139 0.0.0.0:* LISTEN 30749/smbd
udp 0 0 192.168.0.103:137 0.0.0.0:* 30752/nmbd
udp
0
0 0.0.0.0:137 0.0.0.0:* 30752/nmbd
udp 0 0 192.168.0.103:138 0.0.0.0:* 30752/nmbd
udp
0
0 0.0.0.0:138 0.0.0.0:* 30752/nmbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 30749/smbd
[root@station19 ~]# grep -v -E "#|^;" /etc/samba/smb.conf
(查看samba所有定义的选项)
[root@station19 ~]# vim /etc/sysconfig/selinux
(开启selinux)
SELINUX=enforcing
[root@station19 ~]# groupadd mygroup
(添加mygroup组)
[root@station19 ~]# useradd -G mygroup natasha
(添加natasha用户,并制定附加组为mygroup组)
[root@station19 ~]# useradd -G mygroup wendy
(添加wendy用户,并制定附加组为mygroup组)
[root@station19 ~]# useradd mary
(添加mary用户)
[root@station19 ~]# cd /
(切换到根目录)
注一定要在根目录下建共享目录shared/)
[root@station19 /]# mkdir shared/
(建共享目录)
[root@station19 /]# chown root
:mygroup shared/
(修改属主为root属组为mrgroup)
[root@station19 /]# chcon -R -t samba_share_t
/shared/
(修改共享目录标签)
[root@station19 /]# chmod 775 shared/
(修该目录权限)
[root@station19 /]# ll -Zd /shared/
(查看目录详细信息)
drwxrwxr-x root mygroup root:object_r:samba_share_t /shared/
[root@station19 /]#
touch thg.txt(创建两个文本文件,用来方便测试使用)
[root@station19 /]#
touch.tg.txt
[root@station19 shared]# ls
tg.txt thg.txt
[root@station19 ~]# vim /etc/samba/smb.conf
(编辑主配置文件)
[shared]
comment=shared
path=/shared/
(注这里一定要把目录路径指正确)
public=yes
(对所有用户都可见)
browseable=yes
(允许非登录用户浏览)
valid users=@mygroup,nobody
(对mygroup组的用户具有访问权限)
write list=wendy
(是wendy用户可写)
[root@station19 ~]# testparm
(测试主配置文件语法的正确性)
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[shared]"
Loaded services file OK.
[root@station19 ~]# smbpasswd -a natasha
(给用户添加smbpasswd账号)
(注:用户必须是事先存在的一个系统用户)
[root@station19 ~]# smbpasswd -a wendy
[root@station19 ~]# smbpasswd -a mary
[root@station19 ~]# service smb restart
(重启samba服务)
[root@station19 ~]# netstat �Ctunlp
[root@station19 ~]# getenforce
(再次确认selinux状态)
[root@station19 ~]# smbclient -L 127.0.0.1
(先用本机测试)
在samba
―
client上做测试:
[root@station6 ~]# smbclient //192.168.0.105/shared -U natasha%natasha
(使用natasha用户名和natasha密码登陆查看共享情况)
Domain=[STATION19] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
smb: \> ls
. D 0 Thu Mar 4 22:13:17 2010
.. D 0 Thu Mar 4 21:54:31 2010
thg.txt 0 Thu Mar 4 22:06:50 2010
tg.txt 29 Thu Mar 4 22:45:20 2010
36979 blocks of size 1048576. 32176 blocks available
smb: \> put thg.txt
NT_STATUS_ACCESS_DENIED opening remote file \thg.txt
smb: \> lcd /etc
smb: \> ls
. D 0 Thu Mar 4 22:13:17 2010
.. D 0 Thu Mar 4 21:54:31 2010
thg.txt 0 Thu Mar 4 22:06:50 2010
tg.txt 29 Thu Mar 4 22:45:20 2010
36979 blocks of size 1048576. 32176 blocks available
smb: \> get thg.txt
getting file \thg.txt of size 0 as thg.txt (0.0 kb/s) (average 0.0 kb/s)
smb: \> ls
. D 0 Thu Mar 4 22:13:17 2010
.. D 0 Thu Mar 4 21:54:31 2010
thg.txt 0 Thu Mar 4 22:06:50 2010
tg.txt 29 Thu Mar 4 22:45:20 2010
36979 blocks of size 1048576. 32176 blocks available
smb: \> rm thg.txt
NT_STATUS_MEDIA_WRITE_PROTECTED deleting remote file \thg.txt
smb: \> ls
. D 0 Fri Mar 5 00:39:19 2010
.. D 0 Thu Mar 4 21:54:31 2010
thg.txt
(表明natasha用户不可删除thg.txt)
tg.txt
29 Thu Mar 4 22:45:20 2010
57 Fri Mar 5 00:39:19 2010
36979 blocks of size 1048576. 32176 blocks available
[root@station6 ~]# smbclient //192.168.0.105/shared -U wendy%wendy
(wendy用户登录)
Domain=[STATION19] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
smb: \> ls
. D 0 Thu Mar 4 22:45:20 2010
.. D 0 Thu Mar 4 21:54:31 2010
thg.txt 0 Thu Mar 4 22:43:04 2010
tg.txt 29 Thu Mar 4 22:45:20 2010
36979 blocks of size 1048576. 32176 blocks available
smb: \> get tg.txt
(可下载)
getting file \tg.txt of size 29 as tg.txt (5.7 kb/s) (average 5.7 kb/s)
smb: \> rm tg.txt
(可以删除tg.txt了)
smb: \> ls
. D 0 Thu Mar 4 22:46:07 2010
.. D 0 Thu Mar 4 21:54:31 2010
thg.txt 0 Thu Mar 4 22:43:04 2010
36979 blocks of size 1048576. 32176 blocks available
smb: \> exit
[root@station6 ~]# smbclient -L 192.168.0.105 -U mary%mary
(mary用户只可见)
Domain=[STATION19] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
Sharename Type Comment
--------- ---- -------
shared Disk shared
IPC$ IPC IPC Service (Samba Server Version 3.0.33-3.14.el5)
station90 Printer station90
station Printer station
Server Printer Server
qqq Printer qqq
mary Disk Home Directories
Domain=[STATION19] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
Server Comment
--------- -------
Workgroup Master
--------- -------
MYGROUP
[root@station6 ~]# smbclient //192.168.0.105/shared -U mary%mary
(mary用户没有访问此共享权限)
Domain=[STATION19] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
tree connect failed: NT_STATUS_ACCESS_DENIED
**************************************************************************
[root@station6 ~]# mount -t cifs -o username=wendy //192.168.0.105/shared /mnt
(可挂载共享,文件系统类型为cifs)
[root@station19 ~]# vim /etc/fstab
(添加共享到开机自定还挂载列表,只需了解,很少使用)
//192.168.0.105/shared /mnt cifs username=nodody 0 0