FTP
常见的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加密
主动模式:服务端从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
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.*
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
useradd -d /var/ftproot -s /sbin/nologin vsftp
3.建立支持虚拟用户的PAM认证文件
vim /etc/pam.d/ftp
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
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 /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
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
anon_upload_enable=NO
anon_other_write_enable=NO
anon_mkdir_write_enable=NO
6.重新加载vsftpd配置
service vsftpd restart
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时要慎用
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 设置是否可以写入
comment 对这个目录的说明
browseable 此共享只能有属主能看到
writeable 设置是否可以写入
[printers] 打印机共享设置
comment 对打印机做简单描述
path 共享打印机的路径
browseable 此共享打印机只能有属主能看到
guest ok 设置是否让所有可以登入的用户看到此打印机
valid users 设置哪些用户可访问此资源
printable 是否为打印资源
comment 对打印机做简单描述
path 共享打印机的路径
browseable 此共享打印机只能有属主能看到
guest ok 设置是否让所有可以登入的用户看到此打印机
valid users 设置哪些用户可访问此资源
printable 是否为打印资源
[分享名称] 自定义名称共享目录设置
comment 对此目录的说明
path 共享目录的路径
public 设置是否让所有可以登入的用户看到此目录
writeable 设置是否可以写入
write list 定义一定范围的用户具有写权限
printable 是否是打印资源
comment 对此目录的说明
path 共享目录的路径
public 设置是否让所有可以登入的用户看到此目录
writeable 设置是否可以写入
write list 定义一定范围的用户具有写权限
printable 是否是打印资源
定义samba的密码
useradd redhat
smbpasswd -a redhat
useradd redhat
smbpasswd -a redhat
查看,上传,下载共享资源
smbclient -L 192.168.0.29
smbclient //192.168.0.29/shared -U redhat
smbclient -L 192.168.0.29
smbclient //192.168.0.29/shared -U redhat
挂载samba共享资源
mount -t cifs service mountpoint -o option1,option2
mount -t cifs service mountpoint -o option1,option2
若开启了Selinux服务需要给共享目录打上smaba_share_t的标签:`chcon -t smaba_share_t /shared -R`,这样就可以正常使用smaba服务器提供的共享服务。