首页 > 代码库 > samba-FTP
samba-FTP
一、Samba基本共享
1,概念
实现windows与linux系统之间的共享
支持打印服务
使用SMB/CIFS协议
2,主要软件包
samba-common
服务器端 samba
客户机端 samba-client
3,主要程序
smbd 提供对文件/打印资源的共享访问 TCP 139 TCP 445
nmbd 提供netbios主机名称解析 UDP 137 UDP 138
4,系统服务脚本
/etc/init.d/smb
5,主配置文件
/etc/samba/smb.conf
6,配置文件检查工具
testparm
7,smb.conf配置解析
[global] samba全局设置,对整个samba有效
[homes] 设置了用户共享目录属性,不包括全局
[printers] 打印机共享
[myshare] 自定义共享目录设置
samba安全级别
security
share 匿名共享
user 要用户名和密码,由samba服务器检查(默认)
server 由指定服务器认证
domain 域控制器来验证
常见共享目录配置项
path=/共享路径
writable=yes 是否可写
browseable=no 是否可浏览(默认可以)
readonly=yes 是否只读
public=yes 是否允许guest访问 = guestok=yes
guestonly=yes 是否只允许guest访问
comment=public 描述,说明
readlist=tom,@gr 只读用户访问列表
writelist=tom,@gr 读写用户访问列表
validusers=tom,@gr 允许使用服务的用户列表
directorymask=0755 创建目录的默认权限
createmask=0644 创建文件的默认权限
8,服务优化
deadtime= 10 10分钟不对服务器操作就中断连接
clientcode page = 936 客户端支持中文
9,客户端访问
windows
UNC路径 \\服务器地址\共享名
netuse * /del (windows客户端删除连接信息)
Linux
#smbclient -L 服务器显示指定samba服务器共享列表
#mount-t cifs -o username=administrator //ip/public/mnt/smbfs
#smbstatus 显示当前服务器的连接状况信息(server上面)
smbclient //服务器IP地址/共享名
mount服务器IP地址/共享名 挂载目录
mount –o username=用户名 服务器IP地址/共享名 挂载目录
#umount/mnt/smbfs
二、Samba共享的访问控制
1,samba帐号:
samba账号必须系统真实存在
samba账号密码独立的,和系统密码没关系
#pdbedit-a smb01 添加密码
-L smb01 查看共享账户信息
-x smb01 删除帐号
#smbpasswdsmb01 重设密码
2,别名映射
username map = /etc/samba/smbusers
/etc/samba/smbusers格式
共享账户 = 别名1 别名2 ..
3,访问地址限制
hosts allow = 客户端地址
hosts deny = 客户端地址
客户端地址格式
以空格分隔多个地址
主机名或IP地址
网络地址 192.168.10. 或者192.168.10.0/255.255.255.0
1. 查询共享列表
[root@svr2~]# smbclient -L //192.168.4.5
2. 访问共享目录(仿FTP方式)
[root@svr2~]# smbclient //192.168.4.5/tools
3. 访问共享目录(直接挂载)
[root@svr2~]# mkdir /mnt/smbdir
[root@svr2~]# mount //192.168.4.5/tools/mnt/smbdir
4. 在Wind7真机上共享一个目录,在Linux客户机上访问
练习十二:用户认证的共享设置
1. 添加共享账号(设置密码)
[root@svr1~]# useradd nick
[root@svr1~]# useradd hunter
[root@svr1~]# pdbedit -a nick
[root@svr1~]# pdbedit -a hunter
[root@svr1~]# smbpasswd nick //重设密码
2. 修改tools共享设置
[root@svr5~]# vim /etc/samba/smb.conf
[global]
security = user //启用用户认证
[tools]
path = /usr/src //指定共享路径
public = no //不对所有人开放
read only = yes //默认的权限为只读 writable = no
valid users = nick, hunter //指定合法用户
write list = hunter //用户hunter可读可写
.. ..
[root@svr1~]# setfacl -m user:hunter:rwx /usr/src
[root@svr1~]# service smb restart
3. 客户端访问验证
smbclient -U 用户名 //服务器地址/共享名
匿名访问应该被拒绝;
以nick访问时为只读;
以hunter访问时可读可写
fstab配置参考:
//192.168.4.5/tools/mnt/smbdir cifs defaults,username=nick,password=123456 0 0
mount–o -u //192.168.4.5/tools /mnt/smbdir
1 每个用户的权限
2 只允许某几个用户访问
权限包含:
三、Vsftpd基础配置
1,FTP概述
FileTransfer Protocol文件传输协议
2,传输模式
主动模式:由服务器主动连接客户端建立数据链路
被动模式:FTP服务器等待客户端建立数据链路
3,使用端口
21 用于与客户机建立命令链路
20 在主动模式下服务器使用20向客户机建立数据链路
4,配置vsftpd
软件包名
vsftpd
主配置文件
/etc/vsftpd/vsftpd.conf vsftpd服务器的主配置文件
/etc/vsftpd/ftpusers 黑名单
/etc/vsftpd/user_list 白/黑名单(缺省黑名单)
userlist_deny 是否禁用user_list中的用户
当userlist_deny=YES 被禁止(黑名单)
当userlist_deny=NO 被允许(白名单)
/var/ftp/ 默认共享出来的目录,权限不能更改
匿名用户登陆用
ftp
anonymous
匿名登录
ftp://192.168.4.5/
以指定用户登录
ftp://用户@ip地址
ftp://用户:密码@ ip地址
命令行 ftp IP地址
5,参数
download_enable 是否允许下载
userlist_enable 是否启用user_list列表文件
max_clients 限制并发的客户端个数
max_per_ip 限制每个客户机IP的并发连接数
anonymous_enable 是否启用匿名访问
anon_root 匿名FTP的根目录
anon_upload_enable 是否允许上传文件
anon_mkdir_write_enable 是否允许建目录
anon_other_write_enable 其他写入控制
anon_max_rate 最大传输速度(字节/秒)
local_enable 是否启用本地用户
local_root 本地用户的FTP根目录
chroot_local_user 是否禁锢在主目录
local_max_rate 最大传输速率(字节/秒)
anonymous_enable=YES //(默认)允许匿名登录
anon_upload_enable=YES //允许匿名上传文件
anon_mkdir_write_enable=YES //允许匿名创建目录
anon_other_write_enable=YES //允许其他写入权限
write_enable=YES //(默认)允许写入(全局)
anon_umask=022 //设置上传文件权限掩码
/etc/vsftpd/user_list 黑白名单
6,访问
ftp://服务器ip地址
常用ftp命令
? ! lcd pwd get put mget mput
vsftpd实现的FTP服务
Samba共享
################################
一、准备环境(RHEL5.9)
svr1,eth0(VMnet1仅主机):
静态IP 192.168.4.5/24
不要设默认网关、不要设DNS地址
pc205,eth0(VMnet1仅主机)
静态IP 192.168.4.205/24
不要设默认网关、不要设DNS地址
练习一:简单FTP实验
1)安装vsftpd包、启动vsftpd服务
2)添加一个账号yourname
3)在Win7客户机上访问FTP服务器,上传一个文件、下载一个文件
匿名访问、以yourname登录
4)以yourname登录FTP,测试是否能下载/etc/passwd文件
练习二:使用ftp客户端命令
1)匿名登录192.168.4.5,测试下载get、上传put操作
2)以yourname登录192.168.4.5,测试下载get、上传put操作
下载 /etc/inittab文件
3)断开连接:quit或者bye
4)查看登录前本地目录下内容:!ls
先备份:
cd /etc/vsftpd/
cpvsftpd.conf vsftpd.conf.default
练习三:控制FTP登录方式
1)禁止匿名FTP登录
anonymous_enable=NO
2)禁止本地用户登录
local_enable=NO
练习四:禁锢本地用户-->宿主目录
chroot_local_user=YES
练习五:允许匿名上传
anonymous_enable=YES //(默认)允许匿名登录
anon_upload_enable=YES //允许匿名上传文件
anon_mkdir_write_enable=YES //允许匿名创建目录
anon_other_write_enable=YES //允许其他写入权限
write_enable=YES //(默认)允许写入(全局)
anon_umask=022 //设置上传文件权限掩码
[root@svr1vsftpd]# chown ftp /var/ftp/pub/
或者 chmod 777 /var/ftp/pub
练习六:黑名单、白名单
黑名单文件:/etc/vsftpd/ftpusers
黑/白名单:/etc/vsftpd/user_list
1)将user_list作为黑名单(缺省)
userlist_enable=YES //(默认)启用user_list列表文件
userlist_deny=YES //(默认)
2)将user_list作为白名单
userlist_enable=YES //(默认)启用user_list列表文件
userlist_deny=NO //将user_list作为白名单
练习七:连接限制、下载速度限制
max_clients=20 //允许的最大并发连接数
max_per_ip=2 //每个IP地址最多允许多少连接
anon_max_rate=50000 //匿名下载速度,Byte/s
local_max_rate=200000 //本地用户下载速度,Byte/s
建下载测试文件:
ddif=/dev/zero of=/var/ftp/anon.tgz bs=1M count=100
ddif=/dev/zero of=/home/用户名/local.tgzbs=1M count=100
练习八:综合练习
1)创建一个文件夹/ftproot/,作为本地用户的FTP根目录
2)添加2个FTP账号up(上传/下载)、down(仅下载)
3)除了up、down用户以外,其他用户(包括匿名)都不允许登录
4)限制下载速度200KB/s
练习九:虚拟FTP主机(扩展)
1)修改/etc/vsftpd/vsftpd.conf
设置FTP监听地址192.168.4.5
只允许匿名登录,允许其上传
2)另外创建一个配置文件/etc/vsftpd/vsftpd2.conf
设置FTP监听地址192.168.40.5
只允许用户zhangsan登录
查看及安装Samba服务器:
[root@svr1~]# rpm -qa | grep samba
[root@svr1~]# yum -y install samba
练习十:配置简单共享
1. 设置并启用tools共享
[root@svr1~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
[root@svr1~]# vim /etc/samba/smb.conf
[global]
workgroup = TARENA //工作组名
security = share //允许匿名访问共享
[tools]
comment = Test Share Direstory. //共享目录的描述
path = /usr/src //指定共享路径
public = yes //所有人都可访问
read only = yes //默认的权限为只读
#browseable = no //启用此行则为隐藏共享
[root@svr1~]# service smb restart
2. 在Win7客户机上访问测试
\\192.168.4.5\ 或者 \\192.168.4.5\tools\
练习十一:Linux客户机访问共享目录
1. 查询共享列表
[root@svr2~]# smbclient -L //192.168.4.5
2. 访问共享目录(仿FTP方式)
[root@svr2~]# smbclient //192.168.4.5/tools
3. 访问共享目录(直接挂载)
[root@svr2~]# mkdir /mnt/smbdir
[root@svr2~]# mount //192.168.4.5/tools /mnt/smbdir
4. 在Wind7真机上共享一个目录,在Linux客户机上访问
练习十二:用户认证的共享设置
1. 添加共享账号(设置密码)
[root@svr1~]# useradd nick
[root@svr1~]# useradd hunter
[root@svr1~]# pdbedit -a nick
[root@svr1~]# pdbedit -a hunter
[root@svr1~]# smbpasswd nick //重设密码
2. 修改tools共享设置
[root@svr5~]# vim /etc/samba/smb.conf
[global]
security = user //启用用户认证
[tools]
path = /usr/src //指定共享路径
public = no //不对所有人开放
read only = yes //默认的权限为只读
valid users = nick, hunter //指定合法用户
write list = hunter //用户hunter可读可写
.. ..
[root@svr1~]# setfacl -m user:hunter:rwx /usr/src
[root@svr1~]# service smb restart
3. 客户端访问验证
smbclient -U 用户名 //服务器地址/共享名
匿名访问应该被拒绝;
以nick访问时为只读;
以hunter访问时可读可写
fstab配置参考:
//192.168.4.5/tools /mnt/smbdir cifs defaults,username=nick,password=123456 0 0
3. 客户端验证
[root@svr1~]# smbclient -U hijack //192.168.4.5/tools
练习十三:共享账号别名
1. 设置别名
[root@svr1~]# vim /etc/samba/smbusers
nick= hijack
2. 启用别名映射
[root@svr1~]# vim /etc/samba/smb.conf
[global]
username map = /etc/samba/smbusers
.. ..
[root@svr1~]# service smb restart
3. 客户端验证
[root@svr1~]# smbclient -U hijack //192.168.4.5/tools
练习十四:客户机访问控制
1)允许从网段 192.168.4.0/24、10.0.0.0/8访问
2)来自其他客户机的访问一律拒绝
ifconfig eth0:0 10.0.0.5/8 <-- 客户机 10.0.0.205/8
ifconfig eth0:1 11.0.0.5/24 <-- 客户机 11.0.0.205/8
samba-FTP