centos5.5vsftpd安装总结

简介:

vsftpd安装总结

[root@zh888 zhh]# yum -y install vsftpd//首先安装vsftpd软件包
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.i386 0:2.0.5-16.el5_6.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================

=================
 Package                        Arch                         Version                                    Repository           

           Size
=============================================================================================================================

=================
Installing:
 vsftpd                         i386                         2.0.5-16.el5_6.1                           updates              

          141 k

Transaction Summary
=============================================================================================================================

=================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 141 k
Downloading Packages:
vsftpd-2.0.5-16.el5_6.1.i386.rpm                                                                                       | 141

kB     00:02     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : vsftpd                                                                                                    

            1/1

Installed:
  vsftpd.i386 0:2.0.5-16.el5_6.1                                                                                             

               

Complete!

2. 开机启动vsftpd服务器

[root@zh888 zhh]# chkconfig vsftpd on
[root@zh888 zhh]# chkconfig --list vsftpd
vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@zh888 zhh]#


3.启动vsftpd服务
[root@zh888 zhh]# /etc/rc.d/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]


4.测试vsftpd服务器

[root@zh888 zhh]# telnet ftp.zh888.com 21
Trying 192.168.10.134...
Connected to ftp.zh888.com (192.168.10.134).
Escape character is '^]'.
220 (vsFTPd 2.0.5)

5.客户端windowxp测试一下如图所示:


6.用户管理 /etc/vsftpd/ftpusers
这个文件是vsftpd服务器中用来管理登陆账号的配置文件,但是它最特别的一点是,它用于不允许登陆账号。
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
以上内容不难理解无法用root账号进行登陆ftp

7.最重要的的配置文件/etc/vsftpd.conf文件下面是默认的文件自己可以整理#表示不执行的部分如果要执行去除#即可。下面有许多布尔值选

[root@zh888 ~]# grep -v "#" /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

8.添加ftp用户
useradd -g ftp -d /home/samba/software/ -s /sbin/nologin -M user//表示把user加入ftp组中,然后指定/home/samba/software目录,-M

表示不建立目录, -s /sbin/nologin不能登陆,只让ftp登陆ftp服务器。
passwd user
如图所示:

 

一下为每个字段的详解说明:
接受匿名用户 
anonymous_enable=YES

#匿名用户login时不询问口令 
no_anon_password=YES
 
#匿名用户主目录 
anon_root=(none)

#接受本地用户 
local_enable=YES

#本地用户主目录 
local_root=(none)

#如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录 
deny_email_enable=YES

#仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录 
check_shell=YES

#若启用此选项,userlist_deny选项才被启动 
userlist_enable=YES

#若为YES,则userlist_file中的用户将不能登录,为NO则只有userlist_file的用户可以登录 
userlist_deny=NO

#如果和chroot_local_user一起开启,那么用户锁定的目录来自/etc/passwd每个用户指定的目录(这个不是很清楚,很哪位熟悉的指点一下) 
passwd_chroot_enable=NO

#定义匿名登入的使用者名称。默认值为ftp。 
ftp_username=FTP

#################用户权限控制###############

#可以上传(全局控制). 
write_enable=YES

#本地用户上传文件的umask 
local_umask=022

#上传文件的权限配合umask使用 
#file_open_mode=0666

#匿名用户可以上传 
anon_upload_enable=NO

#匿名用户可以建目录 
anon_mkdir_write_enable=NO
 
匿名用户其它的写权利(更改权限?) 
anon_other_write_enable=NO

如果设为YES,匿名登入者会被允许下载可阅读的档案。默认值为YES。 
anon_world_readable_only=YES

#如果开启,那么所有非匿名登陆的用户名都会被切换成guest_username指定的用户名 
#guest_enable=NO

所有匿名上传的文件的所属用户将会被更改成chown_username 
chown_uploads=YES

匿名上传文件所属用户名 
chown_username=lightwiter

#如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录 
chroot_list_enable=YES

#允许使用\"async ABOR\"命令,一般不用,容易出问题 
async_abor_enable=YES

管控是否可用ASCII 模式上传。默认值为NO。 
ascii_upload_enable=YES

#管控是否可用ASCII 模式下载。默认值为NO。 
ascii_download_enable=YES

#这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需要file system 的权限时,就会将使用者限制在此数据

夹中。默认值为/usr/share/empty 
secure_chroot_dir=/usr/share/empty

###################超时设置##################

#空闲连接超时 
idle_session_timeout=600

#数据传输超时 
data_connection_timeout=120

#PAVS请求超时 
ACCEPT_TIMEOUT=60

#PROT模式连接超时 
connect_timeout=60

################服务器功能选项###############

#开启日记功能 
xferlog_enable=YES

#使用标准格式 
xferlog_std_format=YES

#当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用. 
#log_ftp_protocol=NO

#允许使用pasv模式 
pasv_enable=YES

#关闭安全检查,小心呀. 
#pasv_promiscuous+NO

#允许使用port模式 
#port_enable=YES

#关闭安全检查 
#prot_promiscuous

#开启tcp_wrappers支持 
tcp_wrappers=YES

#定义PAM 所使用的名称,预设为vsftpd。 
pam_service_name=vsftpd

#当服务器运行于最底层时使用的用户名 
nopriv_user=nobody

#使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?) 
pasv_address=(none)

#################服务器性能选项##############
 
#是否能使用ls -R命令以防止浪费大量的服务器资源 
#ls_recurse_enable=YES

#是否使用单进程模式 
#one_process_model

#绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式 
listen=YES

#当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名称。若是希望出现拥有者

的名称,则将此功能开启。 
text_userdb_names=NO

#显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果 
use_localtime=NO

#测试平台优化 
#use_sendfile=YES

################信息类设置################

#login时显示欢迎信息.如果设置了banner_file则此设置无效 
ftpd_banner=欢迎来到湖南三辰Fake-Ta FTP 网站.

#允许为目录配置显示信息,显示每个目录下面的message_file文件的内容 
dirmessage_enable=YES

#显示会话状态信息,关! 
#setproctitle_enable=YES

############## 文件定义 ##################

#定义不能更改用户主目录的文件 
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

#定义限制/允许用户登录的文件 
userlist_file=/etc/vsftpd/vsftpd.user_list

#定义登录信息文件的位置 
banner_file=/etc/vsftpd/banner

#禁止使用的匿名用户登陆时作为密码的电子邮件地址 
banned_email_file=/etc/vsftpd.banned_emails

#日志文件位置 
xferlog_file=/var/log/vsftpd.log

#目录信息文件 
message_file=.message

############## 目录定义 #################

#定义用户配置文件的目录 
user_config_dir=/etc/vsftpd/userconf

#定义本地用户登陆的根目录,注意定义根目录可以是相对路径也可以是绝对路径.相对路径是针对用户家目录来说的. 
local_root=webdisk #此项设置每个用户登陆后其根目录为/home/username/webdisk

#匿名用户登陆后的根目录 
anon_root=/var/ftp

#############用户连接选项#################

#可接受的最大client数目 
max_clients=100

#每个ip的最大client数目 
max_per_ip=5

#使用标准的20端口来连接ftp 
connect_from_port_20=YES

#绑定到某个IP,其它IP不能访问 
listen_address=192.168.0.2

#绑定到某个端口 
#listen_port=2121

#数据传输端口 
#ftp_data_port=2020

#pasv连接模式时可以使用port 范围的上界,0 表示任意。默认值为0。 
pasv_max_port=0

#pasv连接模式时可以使用port 范围的下界,0 表示任意。默认值为0。 
pasv_min_port=0

##############数据传输选项#################

#匿名用户的传输比率(b/s) 
anon_max_rate=51200

#本地用户的传输比率(b/s) 
local_max_rate=5120000

遇到的问题:
1.:“500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp”
ftp_username=xxx(用户)

以下命令可以用来重启vsftpd服务
service vsftpd restart问题解决了!
补充几点知识:
语  法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号]

或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]

  补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立

的帐号,实际上是保存在/etc/passwd文本文件中。

  参  数:
-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。 
-d<登入目录>  指定用户登入时的启始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组。
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s   指定用户登入后所使用的shell。
-u  指定用户ID。

1当时我在服务器上用命令ftp时,出现了以下的提示500 OOPS: vsftpd: refusing to run with writable anonymous root 
所以在网上找到了这一篇文章: 
"如果我们已经把vsFTPd服务器启动好了,但登录测试是会出现类似下面的提示; 
500 OOPS: vsftpd: refusing to run with writable anonymous root 
这表示ftp用户的家目录的权限不对,应该改过才对; 
[root@localhost ~]# more /etc/passwd |grep ftp 
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin 
我们发现ftp用户的家目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;是您运行了chmod 777

/var/ftp所致;如果没有ftp用户这个家目录,当然您要自己建一个; 
如下FTP用户的家目录是不能针对所有用户、用户组、其它用户组完全开放; 
[root@localhost ~]# ls -ld /var/ftp 
drwxrwxrwx 3 root root 4096 2005-03-23 /var/ftp 
修正这个错误,应该用下面的办法; 
[root@localhost ~]# chown root:root /var/ftp 
[root@localhost ~]# chmod 755 /var/ftp 
有的弟兄可能会说,那匿名用户的可读、可下载、可上传怎么办呢?这也简单,在/var/ftp下再建一个目录,权限是777的就行了,再改一改

vsftpd.conf就OK了;没有什么难的; 
vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全

的FTP服务器了,对不对?" 
2:防火墙的打开相应的端口21,20 
3:因为我是adsl双网卡上网的形式,所以还要加载ip_conntrack_ftp这个模块/这个不要忘了.


3、添加访问用户 useradd -g ftp -d /var/ftp/fUser -s /sbin/nologin fUser

-g 指定组

-d 指定访问的文件夹

-s 禁止登陆系统

4、设置密码 passwd fUser

5、登陆测试ftp://ip/ ,右键登陆


在Linux 系统中,所有的用户和组像一个国家。如果国家要繁荣昌盛的话,需要治理得当,需要有主席或者总统,以及地方官员和老百姓组成

。在linux 中如果你对安全需求比较苛刻,完全可以限制用户的各种行为,不同用户的权限是不同的
在Linux 系统中,所有的用户和组像一个国家。如果国家要繁荣昌盛的话,需要治理得当,需要有主席或者总统,以及地方官员和老百姓组成

。在linux 中如果你对安全需求比较苛刻,完全可以限制用户的各种行为,不同用户的权限是不同的。    
    在linux中系统中,它并不认识帐号名称。它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中。我们在登录linux主机时,在输入

完帐号和密码时,linux会先查找/etc/passwd文件中是否有这个帐号,如果没有则跳出,如果有的话,他会读取该帐号的user ID和group ID同

时该帐号的根目录和shell也读了出来。然后在去核对密码表,在/etc/shadow中找出我们刚刚输入的帐号和userID,核对我们输入密码是否正确

。一切正确我们可以登录到当前用户shell。那么,我们首先了解一下用户帐号文件。
    用户管理一般需要知道      /etc/passwd  /etc/shadow  /etc/group 
    add by warden2010 20100104
    1./etc/passwd我们使用more查看一下这个文件
    我们首先看第一行root这一行,一共有七项,每一项使用:分开,他们代表的意思如下:
    帐号名称:帐号名称由于对应用户ID,这个是系统默认用户root超级管理员,在同一个系统帐号名称是唯一的,长度根据不同的linux系统

而定,一般是8位。
    密码:由于系统中还有一个/etc/shadow文件用于存放加密后的口令,所以在这里这一项是“x”来表示,如果用户没有设置口令,则该项

为空。
    用户ID:这个是系统内部用于来识别不同的用户的,不同的用户识别码不同,其中用户ID有以下几种:
    0代表系统管理员,如果你想建立一个系统管理员的话,可以建立一个普通帐户,然后将该账户的用户ID改为0即可。
    1-500系统预留的ID,500以上是普通用户使用。
    组ID:其实这个和用户ID差不多,用来规范群组,他与/etc/group有关。

    描述信息:这个字段几乎没有什么作用,只是用来解释这个帐号的意义。

    用户根目录:就是用户登录系统的起始目录,用户登录系统后将首先进入该目录。root用户默认的是/root,普通用户的是/home/用户名。

    用户登录shell:就是用户登录系统时使用的shell,关于shell我们会在以后专门的研究一下。

    2./etc/shadow

    在早期的unix操作系统中,用户的帐号信息和口令信息都保存在passwd文件中,尽管系统已经对口令进行了加密,并且以密文的方式保存

在passwd文件中,但是由于passwd文件对于系统中的所有用户是可读的,口令比较容易破解,存在较大的安全隐患。现在使用“shadow”文件

保存密文的用户口令,使用passwd文件保存用户帐号其它信息。“shadow”文件只有管理员用户才可以读取其中的内容。由于这个文件可能被

破解,所以一定不要将该文件内容泄露给他人,保证系统安全。

    同样,我们还是分析第一行,一共有九项,分别说明一下:

    帐户名称:和passwd对应,和passwd的意思相同。

    密码:这才是真正的密码,并且已经加密过了,只能看到一些特殊符号。需要注意的是这些密码很难破解,但是不等于不能。还有密码栏

的第一个字符为“*”表示这个用户不用来登录,如果那个用户不想让他登录了,可以在他前面加个星。

    上次改动密码的日期:这段记录了改动密码的最后日期,为什么是13798呢?这是因为linux计算日期的方法是以1970年1月1日作为1,1971

年1月1日就是366,依次类推到我修改密码的日期表示为13798了。

    密码不可被改动的天数:由于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否

则这个帐号将暂时失效。上面的99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全。

    密码变更期期限快到前的警告期:当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期

,请尽快重新设定密码。默认的是七天。

    帐号失效期:如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重

新启用,那么这个帐号将暂时失效。

    帐号取消日期:这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将

无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。

    保留:最后一个字段是保留的,看以后有没有新功能加入。

    3. /etc/group查看一下这个文件

    我们还是分析第一行,一共有四项,依次为:

    群组名称:就是群组的名称了。

    群组密码:通常不需设定,因为我们很少使用群组登录。不过这个密码也被记录在/etc/gshadow中了。

    群组ID:也就是组ID了。

    支持帐号的名称:这个群组的所有帐号。如果你想让用户qiuri也属于root这个群组,就在第一行最后加上“,qiuri”注意添加的时候没

有空格。

    4. adduser添加用户

    如果没有特殊的要求,通常我们使用adduser 用户名称直接创建用户帐号。例如我们创建qiuri帐户:

    由于一般新创建的帐号都会在刚才我们说的三个文件的最后一行添加一行内容,我们验证一下:

    我们使用这条命令是通过/etc/login.defs和/etc/default/useradd这两个默认帐号设定文件来实现创建用户的。

    这个文件中我们有必要了解一下,SKEL这个选项,用户的根目录内容是从/etc/skel这个目录下复制过去的。在手动添加用户的时候有用。

查看一下这个目录下的内容:

    这条命令还有好多的参数举例几个,供大家参考一下:

    adduser [-u uid][-g group][-d home][-s shell]

    -u:直接给出userID -g:直接给出GID

    -d:直接将根目录建立在已存在目录 -s:定义shell

    5.passwd设置用户密码
    默认的情况下,在添加完用户后并没有设置用户的密码,因此建立的用户帐号即使存在也不能登陆系统。需要使用passwd命令对用户帐号

设置密码才可以用于登陆系统。这条命令分为管理员给用户修改密码和用户自己登录系统自己修改密码。

    管理员root给用户修改密码,例如:创建用户qiuri,然后设置密码

    管理员给用户设置密码以命令passwd [用户名]来设置密码,在输入密码的过程中为了避免输入错误,将连续输入两次。如果两次输入的密

码相同,表示输入的密码正确,同时将密码以加密的方式保存到了shadow文件中。设置完以后我们可以使用用户qiuri登录。qiuri用户自己修

改一下密码。
    . 增加一个新用户 
    以下是操作一些具体的语法,可以通过man useradd 查看帮助命令
    在Linux系统中,只有root用户才能够创建一个新用户,如下的命令将新建一个登录名user1的用户。 
    # useradd user1 
    但是,这个用户还不能够登录,因为还没给它设置初始密码,而没有密码的用户是不能够登录系统的。在默认情况下,将会在/home目录下

新建一个与用户名相同的用户主目录。如果需要另外指定用户主目录的话,那么可以使用如下命令: 
    # useradd -d /home/xf user1 
    同时,该用户登录时将获得一个Shell程序:/bin/bash,而假如你不想让这个用户登录,也就可以指定该用户的Shell程序为:/bin/false

,这样该用户即使登录,也不能够执行Linux下的命令: 
    # useradd -s /bin/false user1 
    在Linux中,新增一个用户的同时会创建一个新组,这个组与该用户同名,而这个用户就是该组的成员。如果你想让新的用户归属于一个已

经存在的组,则可以使用如下命令: 
    # useradd -g user user1 
    这样该用户就属于user组的一员了。而如果只是想让其再属于一个组,那么应该使用: 
    # useradd -G user user1 
    完成了这一操作后,你还应该使用passwd命令为其设置一个初始密码。 
    
    2. 删除一个用户 
    删除用户,只需使用一个简单的命令“userdel 用户名”即可。不过最好将它留在系统上的文件也删除掉,你可以使用“userdel -r 用户

名”来实现这一目的。 
    
    3. 修改用户属性 
    在前面我们看到了在新建一个用户的时候如何指定它的用户主目录,如何指定它的Shell,如何设置它所属的组…等等。在Linux中提供了

一个命令来实现: 
    usermod -g组名 -G 组名 -d 用户主目录 -s 用户Shell 
    还有一种直接的方法,那就是修改/etc/passwd文件,在这个文件中每个用户占用一行,它的内容为: 
    用户名:密码:用户ID:组ID:用户全名:用户主目录:用户Shell 
    不过值得注意的是,密码这一项通常是用一个*号代替的,你是看不到的。 
    
    4. 增加一个组 
    还记得Linux的文件可以为同组的人、非同组的人设置不同的访问权限吗?我们可以根据自己的需要创建用户组: 
    groupadd 组名 
    
    5. 删除一个组 
    同样的,我们有时会需要删除一个组,它的命令就是groupdel 组名。 
    
    6. 修改组成员 
    如果我们需要将一个用户加入一个组,只需编辑/etc/group文件,将用户名写到组名的后面。例如将newuser用户加入到softdevelop组,

只需找到softdevelop这一行: 
    softdevelop:x:506:user1,user2 
    然后在后面加上newuser,形成: 
    softdevelop:x:506:user1,user2,newuser 
    另外,在Red Hat Linux中还提供一个图形化的用户管理工具:userconf,通过它可以更直接地进行用户管理。



本文转自zh888 51CTO博客,原文链接:http://blog.51cto.com/zh888/637397,如需转载请自行联系原作者


相关文章
|
1月前
|
Linux 网络安全 数据安全/隐私保护
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 CentOS Linux 9 操作系统保姆级教程(附链接)
143 0
|
2月前
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12
|
2月前
|
Web App开发 Linux
只需五步,在Linux安装chrome及chromedriver(CentOS)
只需五步,在Linux安装chrome及chromedriver(CentOS)
278 1
|
1月前
|
存储 JavaScript Linux
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
|
2月前
|
关系型数据库 MySQL Linux
CentOS7环境下安装MySQL5.6
CentOS7环境下安装MySQL5.6
195 0
|
2月前
|
缓存 负载均衡 应用服务中间件
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
68 1
如何在 CentOS 7 上为 NGINX 安装开源 HTTP 加速器:Varnish
|
3天前
|
关系型数据库 MySQL Linux
centos7安装mysql-带网盘安装包
centos7安装mysql-带网盘安装包
32 2
|
9天前
|
关系型数据库 MySQL Linux
CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解
46 0
|
16天前
|
IDE Linux 开发工具
CentOS7.4+REDHAWK2.3.1安装教程——折腾篇
CentOS7.4+REDHAWK2.3.1安装教程——折腾篇
18 0
|
20天前
|
Linux Shell 开发工具
CentOS8中Docker安装及部署
CentOS8中Docker安装及部署
67 0

热门文章

最新文章