第 四 十 二 天:FTP 的 相 关 问 题

小Q:让人迷茫的原因只有一个,那就是在本该拼搏的年龄,想得太多,做得太少。


vsftpd配置完匿名账号却让输入用户名密码-------------------------

一开始不可写,后来配置了可写,并修改了/var/ftp/ 目录属性所属主与组都是ftp,因为毕竟匿名用户也是用ftp账号登录的。其实这样是不对的,系统默认/var/ftp 目录所属主与组是root,如果修改成ftp就会出问题,就会弹出窗口让登录。

解决:chown root:root /var/ftp 

      chmod 755 /var/ftp 

那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了。

vsftpd如何让匿名用户删除文件-----------------------------------

vim  /etc/vsftpd/vsftpd.conf   增加:

anon_umask=022(匿名上传的权限,配置文件默认没有)

anon_other_write_enable=YES(允许其他操作,即删除,配置文件默认没有)

anon_world_readable_only=NO(没有了这句,就不能删除了,和上面一句配合用,配置文件默认没有)

配置匿名用户登录-----------------------------------------------

1. 安装vsftpd

yum install vsftpd

2. 检测是否开启selinux

getenforce  

如果得到的是Enforcing, 则需要

setenforce 0

如果是其他,则不需要做上边的操作

3. 启动vsftpd

/etc/init.d/vsftpd start 

此时,就可以访问ftp了,但是只是只读的。要想可写,还需要改动配置文件。

vim  /etc/vsftpd/vsftpd.conf ,把

anon_upload_enable=YES
anon_mkdir_write_enable=YES
两行前的"#"去掉,然后重启vsftpd

/etc/init.d/vsftpd restart

另外,还需要修改目录权限

chmod  777  /var/ftp/pub 

此时 pub目录是可写的,但是这个只能写,不能删除。

利用mysql验证虚拟账户-------------------------------------------

1  安装vsftpd: yum install -y  vsftpd

#编辑vsftpd.conf
listen=YES
connect_from_port_20=YES
pasv_enable=YES
tcp_wrappers=YES
local_enable=YES
chroot_local_user=yes
anonymous_enable=NO
guest_enable=YES
guest_username=vsftpdguest
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=/etc/pam.d/vsftpd
dirmessage_enable=YES
idle_session_timeout=600
check_shell=NO

创建一个虚拟用户映射系统用户    

useradd �Cs /sbin/nologin vsftpdguest

2.安装mysql

3.安装 pam-mysql

wget http://cdnetworks-kr-1.dl.source ... mysql-0.7RC1.tar.gz
tar zxvf  pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-mysql=/usr/local/mysql --with-pam=/usr --with-pam-mods-dir=/usr/lib
make && make install

4 创建vsftp 库和相关的表并授权

>create database vsftp;
>use vsftp ;
>create table users ( name char(16) binary ,passwd char(125) binary ) ;
>insert into users (name,passwd) values ('test001',password('123456'));
>insert into users (name,passwd) values ('test002',password('234567'));
>grant select on vsftp.users to vsftpdguest@localhost identified by 'vsftpdguest';

5 创建虚拟账户的配置文件

mkdir /etc/vsftpd/vsftpd_user_conf 
cd  /etc/vsftpd/vsftpd_user_conf
vim test001
local_root=/ftp/        
write_enable=YES
virtual_use_local_privs=YES
chmod_enable=YES

6  编辑验证文件

vim  /etc/pam.d/vsftpd
#%PAM-1.0
auth required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2
account required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2

vsftpd配置参数详解--------------------------------------------------------

#### 与服务器环境较相关的设定值
1. connect_from_port_20=YES (NO)
ftp-data 的端口号
2. listen_port=21
vsftpd 使用的命令通道 port,如果你想要使用非正规的端口号,这个设置。
不过你必须要知道,这个设定值仅适合以 stand alone 的方式来启动!
(对于 super daemon 无效)
3. dirmessage_enable=YES (NO)
当用户进入某个目录时,会显示该目录需要注意的内容,显示的档案默认
是 `.message` ,你可以使用第四个设置来修改。
4. message_file=.message
当 dirmessage_enable=YES 时,可以修改这个设置来让 vsftpd 寻找该文件来显示消息!
5. listen=YES (NO)
若设置为 YES 表示 vsftpd 是以 stand alone 的方式来启动的!预设是 NO!
所以我们的 CentOS 将它改为 YES!这样才能使用 stand alone 的方式来唤醒。
6. pasv_enable=YES (NO)
支持数据流的被动式联机模式(passive mode),一定要设定为 YES!
7. use_localtime=YES (NO)
是否使用本地时间?vsftpd 预设使用 GMT 时间(格林威治),所以预设的 FTP
的日期会比中国晚 8 小时,建议修改设定为 YES !
8. write_enable=YES (NO)
如果你允许用户上传数据时,就要启动这个设定值
9. connect_timeout=60
单位是秒,在数据连接的主动式联机模式下,我们发出的连接讯号在 60 秒内得
不到客户端的响应,则不等待并强制断线。
10. accept_timeout=60
当用户以被动式 PASV 来进行数据传输时,如果服务器启用 passive port 并等
待 client 超过 60 秒而无回应, 那么就给他强制断线!这个设定值与
connect_timeout 类似,不过一个是管理主动联机,一个管理被动联机。
11. data_connection_timeout=300
如果服务器与客户端的数据联机已经成功建立 (不论主动还是被动联机),但是
可能由于线路问题导致 300 秒内还是无法顺利的完成数据的传送,那客户端的
联机就会被我们的 vsftpd 强制剔除!
12. idle_session_timeout=300
如果使用者在 300 秒内都没有命令动作,强制脱机!
13. max_clients=0
如果 vsftpd 是以 stand alone 方式启动的,那么这个设定项目可以设定同一
时间,最多有多少 client 可以同时连上 vsftpd !限制使用 FTP 的用量!
14. max_per_ip=0
与上面 max_clients 类似,这里是同一个 IP 同一时间可允许多少联机
15. pasv_min_port=0, pasv_max_port=0
上面两个是与 passive mode 使用的 port number 有关,如果你想要使用 65400
到 65410 这 11 个 port 来进行被动式联机模式的连接,可以这样设定
pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的话,表示随机
取用而不限制。
16. ftpd_banner=一些文字说明
当使用者联机进入到 vsftpd 时,在 FTP 客户端软件上头会显示的说明文字。
不过,这个设定值数据比较少啦! 建议你可以使用底下的 banner_file 设定值
来取代这个设置
17. banner_file=/path/file
这个设置可以指定某个纯文本档作为使用者登入 vsftpd 服务器时所显示的欢
迎消息。同时,也能够放置一些让使用者知道本 FTP 服务器的目录架构!
#### 与实体用户较相关的设定值
1. guest_enable=YES (NO)
若这个值设定为 YES 时,那么任何实体账号,均会被假设成为 guest (所以
预设是不开放的)! 至于访客在 vsftpd 当中,预设会取得 ftp 这个使用者的
相关权限。但可以通过 guest_username 来修改。
2. guest_username=ftp
在 guest_enable=YES 时才会生效,指定访客的身份。
3. local_enable=YES (NO)
这个设定值必须要为 YES 时,在 /etc/passwd 内的账号才能以实体用户的方式
登入我们的 vsftpd 服务器!
4. local_max_rate=0
实体用户的传输速度限制,单位为 bytes/second, 0 为不限制。
5. chroot_local_user=YES (NO)
在预设的情况下,是否要将使用者限制在自己的家目录之内(chroot),如果是
YES 代表用户默认就会被 chroot,如果是 NO, 则预设是没有 chroot。不过,
实际还是需要底下的两个参数互相参考才行。为了安全性,这里应该要设定成
YES 才好。
6. chroot_list_enable=YES (NO)
是否启用 chroot 写入列表的功能?与下面的 chroot_list_flie 有关!这个项设置
要开启,否则底下的列表文件会无效。
7. chroot_list_file=/etc/vsftpd.chroot_list
如果 chroot_list_enable=YES 那么就可以设定这个项目了!这个项目与
chroot_local_user 有关。
8. userlist_enable=YES (NO)
是否借助 vsftpd 的抵挡机制来处理某些不受欢迎的账号,与下面的参数设置有关
9. userlist_deny=YES (NO)
当 userlist_enable=YES 时才会生效的设定,若此设定值为 YES 时,则当使用
者账号被列入到相应的文件时, 在该文件内的使用者将无法登入 vsftpd 服务器!
该文件名与下面设置有关。
10. userlist_file=/etc/vsftpd/user_list
若上面 userlist_deny=YES 时,则这个设置就有用处了!在这个文件内的账号
都无法使用 vsftpd !
#### 匿名者登入的设定值
1. anonymous_enable=YES (NO)
设定为允许 anonymous 登入我们的 vsftpd 主机!预设是 YES ,下面的所有相
关设置都需要将这个设置为 anonymous_enable=YES 之后才会生效!
2. anon_world_readable_only=YES (NO)
仅允许 anonymous 具有下载可读文件的权限,预设是 YES。
3. anon_other_write_enable=YES (NO)
是否允许 anonymous 具有除了写入之外的权限?包括删除与改写服务器上的文件及文件名等权限。
预设是 NO!如果要设定为 YES,那么开放给 anonymous 写入的目录亦需要调整权限,
让 vsftpd 的 PID 拥有者可以写入才行!
4. anon_mkdir_write_enable=YES (NO)
是否让 anonymous 具有建立目录的权限?默认值是 NO!如果要设定为 YES,
那么 anony_other_write_enable 必须设置为 YES !
5. anon_upload_enable=YES (NO)
是否让 anonymous 具有上传数据的功能,默认是 NO,如果要设定为 YES ,
则 anon_other_write_enable=YES 必须设置。
6. deny_email_enable=YES (NO)
将某些特殊的 email address 抵挡住,不让那些 anonymous 登入!如果以
anonymous 登入服务器时,不是会要求输入密码吗?密码不是要你输入你的
email address 吗?如果你很讨厌某些 email address, 就可以使用这个设定
来将他取消登入的权限!需与下个设定项目配合
7. banned_email_file=/etc/vsftpd/banned_emails
如果 deny_email_enable=YES 时,可以利用这个设置来规定哪个 email
address 不可登入我们的 vsftpd !在上面设置的文件内,一行输入一个
email address 即可!
8. no_anon_password=YES (NO)
当设定为 YES 时,表示 anonymous 将会略过密码检验步骤,而直接进入 vsftpd
服务器内!所以一般预设都是 NO 的!(登入时会检查输入的 emai)
9. anon_max_rate=0
这个设定值后面接的数值单位为 bytes/秒 ,限制 anonymous 的传输速度,
如果是 0 则不限制(由最大带宽所限制),如果你想让 anonymous 仅有 30 KB/s
的速度,可以设定`anon_max_rate=30000`
10. anon_umask=077
限制 anonymous 上传文件的权限!如果是 077 则 anonymous 传送过来的文件
权限会是 -rw-------
#### 关于系统安全方面的一些设定值
1. ascii_download_enable=YES (NO)
如果设定为 YES ,那么 client 就优先 (预设) 使用 ASCII 格式下载文件。
2. ascii_upload_enable=YES (NO)
与上一个设定类似的,只是这个设定针对上传而言!预设是 NO
3. one_process_model=YES (NO)
这个设置比较危险一点,当设定为 YES 时,表示每个建立的联机都会拥有
一个 process 在负责,可以增加 vsftpd 的效能。不过,除非你的系统比较安
全,而且硬件配备比较高,否则容易耗尽系统资源喔!一般建议设定为 NO!
4. tcp_wrappers=YES (NO)
当然我们都习惯支持 TCP Wrappers 的!所以设定为 YES!
5. xferlog_enable=YES (NO)
当设定为 YES 时,使用者上传与下载文件都会被纪录起来。记录的文件与下一
个设置有关
6. xferlog_file=/var/log/xferlog
如果上一个 xferlog_enable=YES 的话,这里就可以设定了!
这个是登录文件的文件名。
7. xferlog_std_format=YES (NO)
是否设定为 wu ftp 相同的登录文件格式?预设为 NO ,因为登录文件会比较容易读!
不过,如果你有使用 wu ftp 登录文件的分析软件,这里才需要设定为 YES!
8. dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log
除了 /var/log/xferlog 的 wu-ftp 格式登录文件之外,还可以具有 vsftpd 的独
特登录文件格式喔!如果你的 FTP 服务器并不是很忙碌, 或许订出两个登录文件的
撰写 (/var/log/{vsftpd.log,xferlog) 是不错的。
9. nopriv_user=nobody
我们的 vsftpd 预设以 nobody 作为此一服务执行者的权限。因为 nobody 的权
限相当的低,因此即使被入侵,入侵者仅能取得 nobody 的权限!
10. pam_service_name=vsftpd
这个是 pam 模块的名称,我们放置在 /etc/pam.d/vsftpd 即是这个!
### vsftpd的主程序(/usr/sbin/vsftpd) 
### 启动脚本(/etc/rc.d/init.d/vsftpd)  
### PAM认证文件(/etc/pam.d/vsftpd)
这个是 vsftpd 使用 PAM 模块时的相关配置文件。主要用来作为身份认证之用,
还有一些用户身份的抵挡功能,也是透过这个档案来达成的。
此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户
### 黑名单(/etc/vsftpd/ftpusers)
与上一个档案有关系,也就是 PAM 模块 (/etc/pam.d/vsftpd) 所指定的那个无
法登入的用户配置文件啊! 这个档案的设定很简单,你只要将 不想让用户登入
FTP 的账号 写入这个档案即可。一行一个账号。大部分的系统帐号都在这。
禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)
### 白名单(/etc/vsftpd/user_list)
这个档案是否能够生效与 vsftpd.conf 内的两个参数有关,分别是
userlist_enable, userlist_deny。 如果说 /etc/vsftpd/ftpusers 是
PAM 模块的抵挡设定项目,那么这个 /etc/vsftpd/user_list 则是 vsftpd 自
定义的抵挡项目。事实上这个档案与 /etc/vsftpd/ftpusers 几乎一模一样, 在
预设的情况下,你可以将不希望可登入 vsftpd 的账号写入这里。不过这个档案
的功能会依据 vsftpd.conf 配置文件内的 userlist_deny={YES/NO} 而不同。
(注意:linux-4中此文件在/etc/目录下)
### 限制用的家目录(/etc/vsftpd/chroot_list)
这个档案预设是不存在的,所以你必须要手动自行建立。这个档案的主要功能是
可以将某些账号的使用者 chroot 在他们的家目录下!但这个档案要生效与
vsftpd.conf 内的`chroot_list_enable, chroot_list_file`两个参数有关。
如果你想要将某些实体用户限制在他们的家目录下而不许到其他目录去,可以启
动这个设定!
### 匿名用户主目录(/var/ftp)
其实与 ftp 这个账号的家目录有关
本地用户主目录为:/home/用户主目录,即登录后进入自己家目录 
### (匿名用户的下载目录)/var/ftp/pub
此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
### 日志文件(/etc/logrotate.d/vsftpd.log)


=====================================练习题========================================

1. ftp 服务默认监听哪个端口,我们是否可以更改它?

ftp默认监听21端口,可以更改这个默认监听端口。pure-ftpd 可以修改配置文件,加上一行:Bind      0.0.0.0,2100   其中2100是修改后的端口。而vsftpd服务需要在配置文件/etc/vsftpd/vsftpd.conf 加入一行: listen_port=2100

2. 常用搭建ftp服务的软件有哪些? 系统自带的是哪一种?

pure-ftpd  vsftpd, 系统自带是后者

3. 使用pureftp 如何创建一个用户? 如何删除一个用户?

创建:pure-pw useradd test1 -uwww -d /data/ftp

删除:pure-pw userdel test1

4. 如何更改用户的密码(pureftp)?

更改密码的办法是:先删除账号,再重新创建同名账号。

5. 如何查看当前有几个用户(pureftp)?

pure-pw list

6. 使用vsftpd软件搭建一个ftp服务器,你需要满足这样的需求:创建3个账户,user1, user2, user3 ,其中这三个用户都可以访问同一个目录,但是user1可读写,但user2和user3只读. 

思路:根据课上我提供给大家的文档来搭建vsftpd虚拟账号,然后创建user1,user2,user3三个账号,在创建他们的配置文件时,指定相同的家目录,但user1 write_enable=YES, user2 write_enable=NO, user3 write_enable=NO

7. 使用vsftpd软件搭建一个ftp服务器,你需要满足这样的需求:创建3个账户,user1, user2, user3 ,其中这三个用户都可以访问同一个目录,但是每个用户都可以读取其他用户的文件,但是只能更改自己的文件,不能更改其他用户的文件。

思路:vsftpd搭建ftp服务,使用系统账号作为ftp的账号,然后要访问的目录做一个t权限(类似于tmp目录)

参考配置文件: cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/tmp/123
创建ftp目录: mkdir /tmp/123 
修改权限:chmod 1777 /tmp/123
创建账号:useradd user1; useradd user2; useradd user3
创建密码:passwd user1; passwd user2; passwd user3

8. 使用vsftpd软件搭建一个ftp服务器,要求任何人都可以登录(匿名登录),并且匿名账户可以读、写。

参考配置: cat /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
anon_other_write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
还需配置: chmod 777 /var/ftp/pub



你可能感兴趣的:(linux,ftp)