常见的FTP服务器程序:vsftpd,Serv-U,wu-ftpd,Proftpd,IIS
常见的FTP客户端程序:ftp命令,FlashFXP,LeapFTP,gftp,Filezilla
数据连接的建立类型
主动模式:服务端从20端口主动向客户端发起连接
被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接
FTP传输模式
文本模式:ASCII模式,以文本序列传输数据
二进制模式:Binary模式,以二进制序列传输数据
vsftpd的主配置文件/etc/vsftpd/vsftpd.conf
local_enable=YES #本地用户登入开启
anon_enable=YES #匿名用户登入开启
anon_root=/var/ftp #匿名用户的FTP根目录
write_enable=YES #本地用户可写权限开启
download_enable=YES #是否允许下载文件
local_umask=022 #本地用户上传文件的umask(掩码)值
anon_other_write_enable=YES #匿名用户创建目录权限开启
anon_mkdir_write_enable=YES #匿名用户其他写入权限开启
anon_upload_enable=YES #匿名用户允许上传文件
chroot_local_user=YES #锁定所有用户家目录
chroot_list_enable=YES #对一些用户锁定用户家目录功能开启
chroot_list_file=/etc/vsftpd/chroot_list #锁定家目录用户列表存储文件路径
xferlog_enable=YES #开启传输日志功能
xferlog_std_format=YES #指定传输日志的格式
xferlog_file=/var/log/xferlog #传输日志存储文件所在位置
anon_max_rate=0 #匿名用户的最大传输速度(0表示不限制速度,速度单位是字节)
local_max_rate=0 #本地用户的最大传输速度
max_clients=100 #该FTP服务器的最大并发连接数
max_per_ip=2 #一个IP最多可创的连接数
connect_form_port=20 #允许FTP服务器使用主动模式
ascii_upload_enable=YES #ASCII传输模式开启
ftpd_banner=Welcome to FTP #打印欢迎信息
listen_address=192.168.0.252 #设置监听的IP地址
listen_port=21 #设置监听FTP服务的端口号
userlist_enable=YES #是否启用user_list列表文件
userlist_deny=YES # 是否禁用user_list中的用户
ls_recurse_enable=YES #使用ls命令是可以递归
listen=YES #表示是该服务进程独立守护进程
tcp_wrappers=YES #表示该服务支持tcp_wrappers
pam_service_name=vsftpd #PAM认证所用文件
ssl_enable=YES #应用SSL加密数据传输
ssl_tlsv1=YES #使用SSL的类型
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem #授权FTP服务证书的存放路径
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key #FTP服务器的私钥存放路径
force_anon_login_ssl=YES #匿名用户登入时使用SSL
force_anon_date_ssl=YES #匿名用户进行数据传送时进行SSl加密
若开启selinux的功能,需要打开allow_ftpd_anon_write功能,同时为共享目录打上public_content_rw_t的标签,其命令为:`getbool -a | grep ftp` ; `setsebool -P allow_ftpd_anon_write on` ; `chcon -t public_content_rw_t incoming/`。
FTP使用虚拟用户
1.建立虚拟FTP用户的帐号数据库文件(单行使用户账号,双行是上一行的密码)
vim /etc/vsftpd/vusers.txt
wendy
123456
sandy
456
cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db
file vusers.db
vusers.db: Berkeley DB (Hash, version 8, native byte-order)
chown 600 /etc/vsftpd/vusers.*
2.创建FTP根目录及虚拟用户映射的系统用户
useradd -d /var/ftproot -s /sbin/nologin vsftp
3.建立支持虚拟用户的PAM认证文件
vim /etc/pam.d/ftp
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
4.在vsftpd.conf文件中添加支持配置
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vsftp
pam_service_name=ftp
5.为个别虚拟用户建立独立的配置文件
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
mkdir /etc/vsftpd/users
cd /etc/vsftpd/users
vim wendy
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
cp wendy sandy
vim sandy
anon_upload_enable=NO
anon_other_write_enable=NO
anon_mkdir_write_enable=NO
6.重新加载vsftpd配置
service vsftpd restart
7.使用虚拟FTP账户访问测试wendy用户可以登录,并可以浏览、下载文件,可以上传jsandy用户可以登录,并可以浏览,但不可以下载文件,也不可以上传
NFS
/etc/exports文件列举出通过NFS导出的文件系统,以及可以访问每个文件系统的客户机。客户机列表和文件系统之间以空白分隔,每个客户机之后紧跟着用括号括起来,以逗号分隔的一系列选项。
/etc/exports文件的客户机说明
1.)主机名 hostname 单个主机
2.)网络组 @groupname NIS网络组
3.)通配符 *和? 具有通配符的FQDN,“*”不匹配点号"."
4.)IP网络 ipaddr/mask CIDR风格,长格式可作为匹配
/etc/exports的常用导出选项
rw,ro 以读写的方式导出(默认方式)以只读的方式导出
sync 同步写入,直接写入硬盘
async 让服务器在实际写磁盘之前就先回应写请求
root_squash 将UID0和GID0映射成anonuid和anongid所指定的值
no_root_squash
all_squash 将所用的UID和GID映射到它们各自的匿名版本上
showmount -e hostname 打印出hostname主机的共享文件系统
exports -a 导出所有的文件系统
exports -r 重新输出所有文件系统
exports -v 打印出文件系统的详细信息
exports -u 指定卸载的文件系统
NFS共享时的注意事项
1.)包含服务器的配置文件不要导出
2.)导出整个文件系统,最好不是目录
3.)不要使用no_root_squash的方式导出文件系统
4.)使用crossmnt和nohide时要慎用
Samba 服务器
/etc/samba/smb.conf
[globe] 全局设置
workgroup 工作组的名称,注意主机群要相同
server string 主机的简易说明
security 表示服务器的安全级别有user,Server,domain,share4个设置值
passdb backend samba有单独的文件存放账号的密码
load printers 共享打印机
cups options 打印机选项
[homes] 用户家目录共享设置
comment 对这个目录的说明
browseable 此共享只能有属主能看到
writeable 设置是否可以写入
[printers] 打印机共享设置
comment 对打印机做简单描述
path 共享打印机的路径
browseable 此共享打印机只能有属主能看到
guest ok 设置是否让所有可以登入的用户看到此打印机
valid users 设置哪些用户可访问此资源
printable 是否为打印资源
[分享名称] 自定义名称共享目录设置
comment 对此目录的说明
path 共享目录的路径
public 设置是否让所有可以登入的用户看到此目录
writeable 设置是否可以写入
write list 定义一定范围的用户具有写权限
printable 是否是打印资源
定义samba的密码
useradd redhat
smbpasswd -a redhat
查看,上传,下载共享资源
smbclient -L 192.168.0.29
smbclient //192.168.0.29/shared -U redhat
挂载samba共享资源
mount -t cifs service mountpoint -o option1,option2
若开启了Selinux服务需要给共享目录打上smaba_share_t的标签:`chcon -t smaba_share_t /shared -R`,这样就可以正常使用smaba服务器提供的共享服务。