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加密
若开启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服务器提供的共享服务。