一. 简介:
在一些中小型网络,或者企业的内部网中,利用Linux建立文件服务器是一个很好的解决方案。针对企业内部网中的绝大部分客户机采用Windows的情况,我们可以通过使用Samba来实现文件服务器功能。
Samba是在Linux及Unix上实现SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成。这里我们只介绍服务器程序。
我们首先介绍一些SMB协议的情况。SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP138、139两个端口的服务。NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统。这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被用于Lan Manager和Windows服务器系统中,实现不同计算机之间共享打印机和文件等。因此,为了让Windows和Unix/Linux计算机相集成,最好的办法就是在Unix/Linux计算机中安装支持SMB协议的软件。这样使用Windows的客户端不需要更改设置,就能像使用Windows NT或Windows 2000服务器一样,使用Unix/Linux计算机上的共享资源了。Samba使SMB协议运行在NetBIOS协议上,并且使用Windows的NetBEUI协议让Unix/Linux服务器可以在Windows的网络邻居上被访问到。
Samba的服务器程序可以实现以下主要功能:
◆ 文件及打印共享;
◆ 计算机名与IP的解悉;
◆ WINS服务的支持;
◆ 用户权限设置(如果配合Linux 的Quota还可以实现用户磁盘空间配额)。
二.samba 服务器的配置及使用
(假设虚拟机为samba服务器,真机为samba 的客户端。虚拟机IP: 192.168.0.122,真机IP:192.168.0.22)
首先你应该在服务器上用: yum install samba-common samba -y
你要添加一个本地用户作为samba用户,smbpasswd -a student
将本地用户添加到samba共享,那么在客户端就可以访问家目录了。( 默认将家目录共享出来)
samba 的住配置文件: /etc/init.d/smb.conf
注意要将selinux 设置成强制。vi /etc/sysconfig/selinux
此时你在客户端输入: smbclient -L //192.168.0.122 (列出服务器192.168。0.122上的所有共享目录)
smbclient -L //192.168.0.122 -U student
注意在企业中配置服务的时候会先将selinux关闭的,然后配置各种服务,配置好之后,然后再开启调试。
注意:假如有时候你以root身份编辑某个文件的时候,你会发现不能写进去,那是因为有1个交换文件的存在:如/etc/samba/smb.conf不能编辑,是因为存在/etc/samba/.smb.conf.swp的存在。你应该rm -rf /etc/samba/.smb.conf.swp
三.访问 CIFS 共享
通用 Internet 文件系统( CIFS )也称为服务器信息块( SMB ),是适用于 Microsoft Windows 服务器
和客户端的标准文件和打印机共享系统。 RHEL 可以用作 CIFS 文件和打印机共享的客户端以及服务器。
在本节中,我们将回顾连接到 CIFS 文件共享的四个基本方法:
1. 图形访问 CIFS 共享
转至 “位置” --> “ 连接服务器”。填写以下字段:
Service type: Windows share
Server: instructor.example.com
User Name: guest2001
Password: password
2. 手动挂载 CIFS 共享
[root@serverX ~]# mount -t cifs -o user=guest2001 //instructor.example.com/ftp /mnt
3. 持续挂载 CIFS 共享
将以下行添加到 /etc/fstab :
//instructor.example.com/ftp /mnt
cifs
credentials=/root/userpasswd 0 0
创建 /root/userpasswd :
user=guest2001
pass=password
四. 示例一:
vi /etc/samba/smb.conf
[share]
comment = mysamba
path = /mnt
writable = YES
//词条参数的意思就是指明这个路径的目录是可写的
public = YES
//允许匿名登录,所谓匿名登录就是你登录的时候不输入samba用户
此时你应该考虑下selinux,安全上下文
getsebool -a | grep samba 显示安全各种selinux服务的启动情况。
setsebool -P samba_enable_home_dirs(允许samba共享目录)
setsebool -P samba-export_all_ro on
setsebool -P samba-export_all_rw on
还有就是/mnt的目录具有可写的权限。
chmod 777 /mnt
测试:smbclient //192.168.0.122/share -U student
smbclient //192.168.0.122/share
(不加用户名,匿名访问)
ls 显示当前的samba共享的目录下的文件或目录
!ls 显示的是你登录之前的目录的所有文件或目录
put a.txt
(注意samba只能上传当前目录的文件,不能上传绝对路径的文件 eg:不能上传 put /etc/fstab)
示例二:
vi /etc/samba/smb.conf
[share]
comment = mysamba
path = /mnt
writable = YES (admin 的时候这个必须是YES,允许具有可写的权限)
public = YES
admin user = student
(赋予student用户管理员的权限,最高哦,)
此时给chmod 755 /mnt
测试:smbclient //192.168.0.122/share -U student
put b.txt
此时用student登录你可写可执行,而你用sushan 这个用户登录的话你只可以看,不可以写,因为其他人只有rx权限。用student连接的时候继承的root权限。
(注意samba只能上传当前目录的文件,不能上传绝对路径的文件 eg:不能上传 put /etc/fstab)
示例三:
vi /etc/samba/smb.conf
[share]
comment = mysamba
path = /mnt
writable = NO
public = YES
write list = student,sushan (可以写的人)
仅允许student,sushan 对该目录有写的权限,其他人为只读:
测试:smbclient //192.168.0.122/share -U student
put b.txt
smbclient //192.168.0.122/share
匿名用户就不能上传文件啊!
示例四:
vi /etc/samba/smb.conf
[share]
comment = mysamba
path = /mnt
writable = NO
public = YES
write list = student,sushan (可以写的人)
+student (对student的用户组中的用户可写)
仅允许student,sushan 对该目录有写的权限,其他人为只读:
测试:smbclient //192.168.0.122/share -U student
put b.txt
smbclient //192.168.0.122/share
匿名用户就不能上传文件啊!
示例五:
vi /etc/samba/smb.conf
[share]
comment = mysamba
path = /mnt
writable = NO
public = YES
特定用户使用,只有ww用户可写:
valid users = ww,qq (valid users = @net (组))
指明有效用户,值得是指明的这些用户可以登录进去,而下面的那个write list 是特别的指出只有ww 用户可写
write list = ww
browseable = no (使用smbclient //192.168.0.4/share -U ww无法看到,树级
目录 )
五.你自己创建一个目录,允许samba共享
[public]
comment = my samba for test
path = /samba
public = YES(允许匿名用户访问共享目录)
writable = yes (匿名用户和普通用户可写,匿名用户以nobody身份创建目录
chcon -R -t samba_share_t /samba
测试:
在客户端输入 samclient //192.168.0.122/public
可以上传下载等
六.你可以用图形化的共享samba服务,
yum install samba-swat -y
/etc/init.d/xinetd start
vi /etc/xinetd.d/swat
中的disable=no
only from 禁止
stat.html' target='_blank'>netstat -antlpe | grep 901
http://192.168.0.122:901
配置samba的网页配置,共享直接修改配置文件。共享出去。
七.
限制客户端系统的访问:
1. 按 IP 地址限制客户端系统访问特定的 CIFS 共享:
hosts allow = 192.168.0.254 127. (只允许本机和192,168.0.254访问)
2. 启用防火墙并添加如下规则限制 CIFS 共享访问:
[root@serverX ~]# iptables -A INPUT ! -s 192.168.0.0/24 -p udp --dport 137:138 -j REJECT
[root@serverX ~]# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 139 -j REJECT
[root@serverX ~]# iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 445 -j REJECT