首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图

linux vsftpd 配备

2013-09-11 来源:读书人网 【读书人网(Reader8.cn):综合教育门户网站】
linux vsftpd 配置LINUX (Centos版本) FTP服务器详解 这篇文章 ,写的很好 。给了我很大

linux vsftpd 配置
   


LINUX (Centos版本) FTP服务器详解

这篇文章 ,写的很好 。给了我很大的收获 。我 ,最近利用空闲时间 ,逐字看了这篇文章 ,用心实验过 。发现其中有点小的问题或错误 。现已经更正 ,我想让其完美展现给读者。也为了珍藏 。
对大家推荐很好使用的CentOS FTP系统,想让大家对CentOS FTP系统有所了解,然后对CentOS FTP系统全面讲解介绍,希望对大家有用 。
1、vsFTPd,目前常用CentOS FTP服务器套件;vsFTPd是一款在Linux发行版中最受推崇的CentOS FTP服务器程序;特点是小巧轻快,安全易用;能让其自身特点得发发挥和掌握,也然最主要的是会用; 目前在开源操作系统中常用的FTPD套件主要有ProFTPD、PureFTPd和wuftpd等;至于哪个CentOS FTP服务器套件更好,哪个是你最熟悉的,哪个就是最好的;
2、CentOS FTP用户管理解说;CentOS FTP服务器对用户的管理,在默认的情况下是根据 /etc/passwd及/etc/group 来进行的,所以我们一定要了解Linux系统用户和用户组的管理,用户和用户组的管理是一切应用的的基础,有的弟兄不想去了解基础的东西,就想一步成架好各种服务器,事实证明这种学习方法是最不明智的;虽然在您可能在几分钟启动了CentOS FTP服务器,但遇到问题时,您不一定能知道是哪里出错;所以基础还是极为重要的;推荐文章: 《Linux 用户(user)和用户组(group)管理概述》
2.1、匿名CentOS FTP用户和用户组的理解;当我们访问各大CentOS FTP上访问时,可能我们不去想我们以什么身份登录的,如果他的FTP允许匿名登录的话;比如我们在浏览器上打入;ftp://mirrors.kernel.org或ftp://ftp:ftp@mirrors.kernel.org
我们会发现上面的两行最终都能访问,而且显示的结果也完全一样,最终都跳到 ftp://mirrors.kernel.org 地址;那我们访问这个CentOS FTP时,是不是有用户和密码呢是的,也是需要在的,只是在服务器端允许匿名访问,而匿名访问的用户名和密码都是ftp,只是我们因为匿名访问,没有感觉到他有用户名和密码罢了。第二个地址就是以CentOS FTP用户,密码也是CentOS FTP来访问 ftp://mirrors.kernel.org;
如果我们以CentOS FTP命令连接 mirrors.kernel.org 时,我们会发现需要输入用户CentOS FTP,密码CentOS FTP才能访问;在CentOS FTP服务器中,匿名用户的用户名和密码都是CentOS FTP ;这个用户可以在您的操作系统中的 /etc/passwd 中能找得到;可能有类似下面的一行;ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
说明:/etc/passwd 是系统用户的配置文件;/etc/group是系统用户组配置文件,您可以通过 《Linux 用户(user)和用户组(group)管理概述》 及其相关文档中了解一些用户管理的一些基础知识;在CentOS FTP用户这行中,我们看到七个字段,每个字段写字段之间用:号分割;
CentOS FTP 是用户名x 是密码字段,是隐藏的;14 是用户的UID字段,可以自己来设定,不要和其它用户的UID相同,否则会造成系统安全问题;50 用户组的GID,可以自己设定,不要和其它用户组共用CentOS FTP的GID,否则会造成系统全全问题;CentOS FTP User 是用户说明字段;/var/ftp 是ftp用户的家目录,可以自己来定义;
/sbin/nologin 这是用户登录SHELL ,这个也是可以定义的,/sbin/nologin 表示不能登录系统;系统虚拟帐号(也被称为伪用户)一般都是这么设置。比如我们把CentOS FTP用户的/sbin/nologin 改为 /bin/bash ,这样CentOS FTP用户通过本地或者远程工具ssh或telnet以真实用户身份登录到系统。
这样做对系统来说是不安全的;如果您认为一个用户没有太大的必要登录到系统,就可以只给他CentOS FTP帐号的权限,也就是说只给他CentOS FTP的权限,而不要把他的SHELL设置成 /bin/bash 等;
关于CentOS FTP用户组的理解:我们查看 /etc/group 的时候,会发现类似这样一条;ftp:x:50:/etc/group 是用户组的管理配置文件,上面这行表示用户组ftp,x是密码段,50是GID;我们对照在/etc/passwd中的CentOS FTP那行得知CentOS FTP用户是属于CentOS FTP用户组的,因为CentOS FTP用户那行中的GID和CentOS FTP用户组的GID是相同的;
2.2、匿名CentOS FTP 用户和CentOS FTP用户组是否可以删除在一般情况下是不能把/etc/passwd和/etc/group 中有把CentOS FTP用户和用户组的行删除的,因为CentOS FTP服务器是需要他们来对CentOS FTP用户实现管理,在默认的情况下。
虽然不能删除,但对/etc/passwd及/etc/group中的CentOS FTP用户及CentOS FTP用户组的一些相关的东西是能修改的;比如我们可以把CentOS FTP用户的家目录改掉,也可以把CentOS FTP用户的UID改掉 ... ... 前提是你对用户管理有所了解,系统用户管理是一切应用基础之一,可能初学Linux的弟兄并不了解用户管理的重要性,但慢慢您就会发现这个道理;
3、vsFTPd的安装;在最新的各大发行版中的安装盘中都有vsFTPd的软件包,您用相应发行版提供的软件包管理工具就能安装上;当然您可以到各大发行版的CentOS FTP镜像中找到vsftpd的软件包;当然也能用软件包的管理工具在线安装;
vsftpd的软件包本来不大,花不了多长时间,两分钟就够了吧;因为本文是初学者教程,我严重推荐您用发行版提供的软件来安装,不推荐您自己来编译源码包的安装方式;如果您用的是Fedora 或Redhat 系统,可以用下面的命令在线安装;
[root@localhost ~]# yum install vsftpd如果是debian 类系统,可以用apt 来在线安装;
[root@localhost ~]# apt-get install vsftpd如果您是RPM的系统,也可以找到vsftpd-xxxx.rpm 的包来通过rpm命令来安装;
[root@localhost ~]# rpm -ivh vsftpd*.rpm 您可以下载源码包来安装比如我们下载的是 vsftpd-2.0.3.tar.gz ;
[root@localhost ~]# tar zxvf vsftpd-2.0.3.tar.gz
[root@localhost ~]# cd vsftpd-2.0.3
[root@localhost ~]# make ;make install
[root@localhost ~]# cp vsftpd.conf /etc
然后修改/etc/vsftpd.conf ,在配置文件的最后一行加入下面一行;listen=yes源码包安装的方法,如果您的系统是RPM包管理的系统,可以删除/etc/xinetd.d/vsftpd 这个文件;然后启动xinetd 服务器;
[root@localhost ~]# /etc/init.d/xinetd restart
停止 xinetd: [ 确定 ]
启动 xinetd: [ 确定 ]
vsFTPd运行有两种模式,在RPM包管理的系重审统,大多是由Fedora/Redhat 开发而来,对于这样的系统有xinted服务器一说;对于非RPM包管理的系统,一般没有xinted这一说。为了保证本文档的统一,我们都不要用xinetd模式,而用initd运行模式来启动和管理服务器,也就是独立运行模式; 至于什么是xinted和inted 模式,您可以参考《 用vsFTPd自架Linux网络安装服务器》
4、vsFTPd的服务器的启动和关闭;vsFTPd服务器启动和关闭是极容易的;我们可以直接把服务器运行调到后台运行;这是几乎所有服务器管理的运行方式;
4.1、vsFTPd服务器启动和关闭的通用方法;运行vsftpd命令,要用到root权限,如果您当前操作用户并非是root,可以用su切换到root权限;关于root权限的切换,您有两种方式,一种是su,另一种是sudo;请参考: 《Linux 系统中的超级权限的控制vsFTPd服务器的运行;
[root@localhost ~]# /usr/sbin/vsftpd &
[root@localhost ~]# /usr/local/sbin/vsftpd &
vsFTPd服务器是否运行起来;我们可以通过pgrep vsftpd 来查看vsftpd是否运行起来;[root@localhost ~]# pgrep vsftpd4248上面显示vsFTPd服务器运行起来了,您可以通过ftp命令、lftp工具或gftp或其它的FTP客户端来测试连接;vsFTPd 服务器关闭:我们用pkill vsftpd 来杀死vsftpd进程,这样就把vsFTPd关闭,用pgrep vsftpd 来查看进程,如果没有进程,证明vsFTPd已经关掉;当然也要用到root权限。
[root@localhost ~]# pkill vsftpd
[root@localhost ~]# pgrep vsftpd
4.2、在Fedora/Redhat/CentOS中vsFTPd 服务器的启动和关闭:在Fedora/Redhat/CentOS中,也可以用下面的方法来启动vsFTPd;当然也要用到root权限;[root@localhost beinan]# /etc/init.d/vsftpd start为 vsftpd 启动 vsftpd: [ 确定 ]重新启动vsFTPd用下面的命令;
[root@localhost beinan]# /etc/init.d/vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
关掉vsFTPd服务器,应该用下面的命令;
[root@localhost beinan]# /etc/init.d/vsftpd stop
关闭 vsftpd: [ 确定 ]
5、vsFTPd的服务器和防火墙及SELINUX的关系;(重要)我在论坛上看到有些弟兄说vsFTPd服务器启动正常,但却不能访问或用户不能上传文件,我感觉应该是防火墙或SELINUX的事;可能FTPD服务器被防火墙或SELINUX的安全机制防住了。所以您必须要让防火墙通过ftp,当然也要让SELINUX通过ftp服务器才行;
在Fedora/Redhat/CentOS中,您要设置一下防火墙,可以把防火墙关掉,或者在自定义中让ftp “通过”防火墙;
[root@localhost ~]# system-config-securitylevel-tui
或者运行一下如下的命令,清除防火墙规则(通用);
[root@localhost beinan]# iptables –F
关于SELINUX服务器的解说 ,可能老手或新手对SELINUX都有点麻烦,建议您SELINUX;或者让vsFTPd服务器跳过SELINUX启动;也就是说要用到
4.1、vsFTPd服务器启动和关闭的通用方法;;这在Fedora/Redhat/CentOS中这样启动vsFTPd服务器是有效的;当然您可也可以关掉SELINUX,在/etc/selinux/config 配置文件如下;
1./etc/selinux/config
2.# This file controls the state of SELinux on the system.
3.# SELINUX= can take one of these three values:
4.# enforcing - SELinux security policy is enforced.
5.# permissive - SELinux prints warnings instead of enforcing.
6.# disabled - SELinux is fully disabled.
7.SELINUX=Disabled #这样就把SELINUX服务器关掉了,请重新启动系统;
8.# SELINUXTYPE= type of policy in use. Possible values are:
9.# targeted - Only targeted network daemons are protected.
10.# strict - Full SELinux protection.
11.SELINUXTYPE=targeted
6、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
我们发现CentOS FTP用户的家目录在/var/ftp,就是这个/var/ftp的权限不对所致,这个目录的权限是不能打开所有权限的;是您运行了chmod 777 /var/ftp所致;如果没有CentOS FTP用户这个家目录,当然您要自己建一个;如下CentOS 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出于安全考虑,是不准让CentOS FTP用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的CentOS FTP服务器了,对不对
7、关于vsFTPd配置文件的说明: vsftpd.conf是vsFTPd服务器的配置文件,此文件一般是/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf ,以系统为准吧。vsftpd.conf配置文件就是vsFTPd服务器的全局控制文件,此配置文件中,每行应该算做一个规则;前面带有#号的服务器不会解释,这和apache 的配置文件类似;#后所接的内容一般是说明性的,或者是关掉某些功能的选项;
vsftpd.conf 这个配置文件并不包括所有您想实现的功能,有些功能的实现,我们要自己动手来解决,我们要学会查vsFTPd的文档和FAQ等,虽然是英文的,但都是比较简单的;我们要习惯看洋文文档,为什么呢因为Linux本来就是洋人厉害,重量级的软件都是洋人的。呵,兄弟不要抱怨,谁让我们落后了呢
注意:修改完配置文件后,一定要重启vsFTPd服务器才能生效,切记~~
8、关于vsFTPd服务器的一些常用功能的实现;
8.1、关于匿名上传下载的实现;关于匿名上传,其实也比较简单,首先我们要修改一下vsftpd.conf ,此文件位于 /etc/目录下,可能是/etc/vsftpd.conf,也可能是/etc/vsftpd/vsftpd.conf文件。以您的系统环境为准;
首先:我们要改一下vsftpd.conf,确保有以下几行:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
其次:在CentOS FTP用户家目录的下建一个文件夹,并修改其权限为完全开放;
CentOS FTP用户的家目录在哪我们前面已经说了,要通过/etc/passwd来查看;也可以通过finger ftp来查看;
[root@localhost beinan]# finger ftp
Login: ftp Name: FTP User
Directory: /var/ftp Shell: /sbin/nologin
这说明CentOS FTP用户的家目录在/var/ftp ,我们要在这个目录下建一个目录,然后把他的权限设置为任何用户可读可写可执行就行了;一般的情况下,在发行版中,有一个/var/ftp/pub的目录,如果没有,您也可以自己建一个;把配置文件改好后,只要把/var/ftp下的任何一个目录的权限打开,都可以用来匿名上传和下载。
比如您想让匿名用户上传和下载都在/var/ftp/pub,就可以把/var/ftp/pub的权限打开,如果没有这个目录,您要自己建一个;
[root@localhost ~]# mkdir /var/ftp/pub
[root@localhost ~]# chmod 777 /var/ftp/pub这样上传的时候传到pub目录就OK了,对不对
此处有问题 ,需补充
1) LINUX 下 FTP匿名用户问题
前提 ,搭建好LINUX vsftpd 服务器 。以下是探讨 。
① 默认情况下 /var/ftp/pub 目录为匿名用户目录 ,只要开了vsftpd服务 ,均可以下载/var/ftp/和/var/ftp/pub里面的文件和目录。值得注意的是这些文件和目录,是手动创建的 ,保持默认权限。linux系统中手动创建的文件权限为644(-rw-r--r-- ) ,手动创建的目录的权限为755(drwxr-xr-x ) 。
② 默认情况下 ,/var/ftp及/var/ftp/pub的属主和属组都属于root。这个也不防 。照样可以下载 。就是不能上传。
③ 默认情况下 ,FTP服务器配置文件是允许匿名访问的 ,匿名访问的用户名和密码都是ftp 。/var/ftp 的属主和属组都是root 。若将其属主和属组改成了ftp则不能连接FTP服务器 。匿名访问时提示" [R] 500 OOPS: vsftpd: refusing to run with writable anonymous root [R] 连接失败" 的字样 。/var/ftp/pub默认属主和属组是ROOT ,可以更改成FTP:FTP 。不会影响/var/ftp/pub目录里文件的下载和阅读 ,但是就是不能上传 。
即使
[root@localhost ftp]# chown ftp:ftp /var/ftp/pub/
[root@localhost ftp]# chmod 777 /var/ftp/pub/ 这样操作 ,照样不能上传文件或目录。只能下载 文件和目录。
那如何让匿名用户上传目录或文件呢
④ 若这样操作:
/var/ftp 保持默认 755
[root@localhost ftp]# chown ftp:ftp /var/ftp/pub/
[root@localhost ftp]# chmod 777 /var/ftp/pub/
修改/etc/vsftpd/vsftpd.conf配置文件再末尾添加如下参数设置:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
然后开启VSFTPD 服务
经测试 ,匿名用户可以上传文件和目录到/var/ftp/pub 匿名用户的目录中。 /var/ftp/目录只能下载文件和目录。(就连/var/ftp/pub的pub这个目录也能下载下来,即使pub目录的权限是711 ,照样能下载下来的)
当我给/var/ftp 三个777的权限时 ,此时此刻 ,我们可以向/var/ftp目录中上传文件和目录了 。只能上传和下载不能删除的。可以在/var/ftp里客户端手动建立文件和目录 ,只能编辑新建的文件和目录 ,不能编辑已有的文件,所有文件均不能删除,即使是你刚刚建立的文件和目录。
当我chown root:root /var/ftp/pub/ 时 ,可以在/var/ftp/pub 里在客户端手动建立文件和目录 ,只能编辑新建的文件和目录 ,不能编辑已有的文件,所有文件均不能删除,即使是你刚刚建立的文件和目录。不可以在/var/ftp 里新建文件或目录 。没有权限 。说明了/var/ftp/pub 的属主和属组不重要 ,配置文件定义了即可 。
⑤ 若这样操作:
[root@localhost ftp]# chmod 755 /var/ftp
[root@localhost ftp]# chmod 755 /var/ftp/pub
修改/etc/vsftpd/vsftpd.conf配置文件再末尾添加如下参数设置:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
然后开启VSFTPD 服务
经测试 ,匿名用户可以上传文件和目录到/var/ftp/pub 匿名用户的目录中。此时 ,匿名用户不能上传文件和目录到/var/ftp 目录中 。虽然我在FTP的配置文件中给你匿名用户能上传文件和目录的权限 。白搭 。
可以在/var/ftp/pub 里在客户端手动建立文件和目录 ,只能编辑新建的文件和目录 ,不能编辑已有的文件,所有文件均不能删除,即使是你刚刚建立的文件和目录。不可以在/var/ftp 里新建文件或目录 。没有权限 。
⑥ 探索
恢复初始默认
[root@localhost ftp]# chmod 755 /var/ftp/
[root@localhost ftp]# chmod 755 /var/ftp/pub/
[root@localhost ftp]# chown root:root /var/ftp/
[root@localhost ftp]# chown root:root /var/ftp/pub/
修改/etc/vsftpd/vsftpd.conf配置文件再末尾添加如下参数设置:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
然后开启VSFTPD 服务
经测试 ,/var/ftp 和/var/ftp/pub目录里的内容均可以下载 ,均不能上传文件或目录 ,也不能做修改和删除操作。虽然我在FTP服务器的配置文件里面给了写入和上传的权限 。
当我执行 [root@localhost ftp]# chown ftp:ftp /var/ftp/pub/ 操作时 ,可以在/var/ftp/pub 目录里上传文件目录,并且可以在该目录中新建文件或目录 。 其他的不行 。
当我
[root@localhost ftp]# chmod 777 /var/ftp/pub/
[root@localhost ftp]# chown root:root /var/ftp/
删除VSFTPD配置文件里上面添加的四条参数设定 ,后重启FTP服务 。经测试 ,/var/ftp和/var/ftp/pub只能做下载操作,其他的操作均不行 。
⑦ 总结
匿名账号 ,默认开启了 ,也可以手动屏蔽它 。默认只能下载和查看 。要上传 ,必须在FTP服务器的配置文件中添加上传的指令 ,其他的指令一样添加。 有时给了上传指令,还要看目录的权限和目录属性,若权限设置不当 ,照样不可以上传的。两者结合考虑 。其他非匿名FTP用户一样 。
补充:以上四条参数若加上anon_other_write_enable=YES ,有了全部权限 ,比如有了删除权限 。
⑧ 思考
[root@localhost ftp]# chmod 700 /var/ftp/pub/
[root@localhost ftp]# chown ftp:ftp /var/ftp/pub
其他默认
修改/etc/vsftpd/vsftpd.conf配置文件再末尾添加如下参数设置:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022 /给所有权限
然后开启VSFTPD 服务
匿名访问后 ,啥效果
参考答案:
[R] 226 Transfer done (but failed to open directory).
[R] 列表完成: 0 bytes 于 0.18 秒 (0.0 KB/s)
不能向/VAR/FTP/PUB目录里上传文件 ,该目录能进去 ,但是看不到任何内容,一片空白 。
若执行如下命令操作
[root@localhost ftp]# chown root:root /var/ftp/pub/
其他设定如上不变
经测试结果是:FTP能匿名连接上 ,可看PUB目录 。就是不能进入 。
R] CWD /pub/pub
[R] 550 Failed to change directory
提示不能改变目录 ,上面那个提示能进入PUB ,打开失败 ,这个进都不让进 ,何谈打开 。
笔者后记 :改天探讨LINUX下非匿名FTP账号系列问题 。 其实 ,跟这个差不多 。 目录权限 、属主属组 、FTP配置文件权限指令结合考虑 。
8.2、关于添加本地用户及打开读写权限示例;CentOS FTP用户一般是不能登录系统的,这也是为了安全。在系统中,没有权限登录系统的用户一般也被称之为虚拟用户;虚拟用户也是要写进/etc/passwd中;这只是一种虚拟用户的方法,但说实在的并不是真正的虚拟用户,只是把他登录SHELL的权限去掉了,所以他没有能力登录系统;
如果我们想把beinan这个用户目录定位在/opt/beinan这个目录中,并且不能登录系统;我们应该如下操作
[root@localhost ~]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
[root@localhost ~]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
其实这还是不够的,还要改一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限:
local_enable=YES
write_enable=YES
local_umask=022
这时还是不够的,即使开了读写权限 。虽然能连接上FTP ,能进入到/opt/beinan目录下 ,可是还没有写的权限(新建目录和文件)更无上传的权限。本地用户不同于匿名用户 ,默认有全部权限 。而现在你手动指定到/opt/beinan这个目录作为beinan的FTP目录 。其结果 ,只能读 ,不能写,也不能上传 。解决办法:chown beinan:beinan /opt/beinan/ 即可 。默认权限不用动的。
8.4、如何实现虚拟路径比如:
/home/a 映射为 ftp://localhost/a
/home/b/c 则为 ftp://localhost/c
其实这个不能说是vsFTPd的内容,其实我们早就接触过了,可能我们没有注意,我们可以通过如下的方法来实现。[root@localhost ~]# mount --bind [原有的目录] [新目录]比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作我们要先在/var/ftp目录中建一个目录[root@localhost ~]# mkdir /var/ftp/WinSoft然后执行mount命令[root@localhost ~]# mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft这样就OK了。
8.5、打开vsFTP服务器的日志功能;把下面xferlog_file前面的#号对掉,也就是把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。这是vsFTP的日志功能,这对于我们来说是极为重要的。xferlog_file=/var/log/vsftpd.log
8.6、如何定制欢迎信息;如何定制欢迎信息,也就是我们登入有些FTP之后,会出现类似:欢迎您来到LinuxSir FTP,在这里,您会得到最真诚的帮助,如果有什么问题和建议,请来信,多谢。
实现这个并不难,我们可以查看vsftpd.conf文件中,是否有这行。
dirmessage_enable=YES
message_file=.message
此处注意:message_file=.message ,在配置文件里写绝对路径 ,比如message_file=/home/beinan 然后在/home/beinan 下手动见一个隐藏的.message文件即可 ,至于文章内容自行编辑 。这个效果不大,没啥实际用途。
如果没有就加上,如果dirmessage_enable=YES前面有#号,就把#号去掉。其实CentOS FTP信息默认的就是.message,所以可以不加 message_file= 来指定。自己指定也行,无所谓的事;然后我们制定一个.message文件,写上您想要写的东西,比如是.message的内容是如下的:
--欢迎您来到LinuxSir FTP!
--在这里,您会得到最真诚的帮助;
--如果有什么问题和建议,请来信,多谢。我们可以用编辑器来写这个.message,我想这个过程就不用说了吧。
然后我们把.message这个文件复制到各个用户的家目录中。比如我的CentOS FTP的一个用户是beinan,这个用户所在的家目录是/opt/beinan
我们就要把.message放在/opt/beinan这个目录下。如果系统用户CentOS FTP,他的目录就是/var/ftp这个目录,这个是默认的,当匿名用户登入时就访问的是/var/ftp这个目录。我们要让匿名用户能看到欢迎信息。就要把.message放在/var/ftp目录中。其它的用户,也无非就是类似的操作。
8.7、硬盘空间有限,如何把帐号CentOS FTP默认的家目录更改到别处我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把CentOS FTP这个用户的默认路径放到别的分区对于CentOS FTP这个用户的管理,我们应该查看/etc/passwd ,然后修改CentOS FTP用户那行;
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin比如我们想把ftp用户的家目录改为/opt/ftp,则要把类似上一行改为 ftp:x:14:50:FTP User:/opt/ftp:/sbin/nologin然后我们要建立ftp用户的新的家目录;
[root@localhost ~]# mkdir /opt/ftp
[root@localhost ~]# chmod 755 /opt/ftp
[root@localhost ~]# chown root:root /opt/ftp
此处有点小问题 ,没解决实质问题 。我测试过 ,根据作者的提示,操作如下:
[root@localhost opt]# mkdir /opt/ftp
[root@localhost opt]# chmod 755 /opt/ftp
[root@localhost opt]# chown root:root /opt/ftp
[root@localhost opt]# cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@localhost opt]# usermod -d /opt/ftp ftp
[root@localhost opt]# cat /etc/passwd | grep ftp
ftp:x:14:50:FTP User:/opt/ftp:/sbin/nologin
如果默认的ftp磁盘空间紧张,我们其实也可以用虚拟路径映射的方法来解决;也就是mount --bind的办法;看情况吧,哪个适合就是最好的方法 。
补充:至于那个方法好用 ,读者,自行选择 。
8.8、如何让vsFTP服务器限制链接数,以及每个IP最大的链接数应该改vsFTPd服务器的配制文件vsftpd.conf,加入下面的两行:
max_clients=数字
max_per_ip=数字
举例:我想让我的vsFTP最大支持链接数为100个,每个IP,最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行:
max_clients=100
max_per_ip=5
改好了配制文件,不要忘记启动vsftp服务器。
8.9、如何限制传输速度anon_max_rate=数字 注:这是匿名的速度local_max_rate=数字 注:这是vsFTP服务器上本地用户的速度 注:这个数字的单位是byte,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024x80=81920
所以我们要在vsftpd.conf中加入下面的两行
anon_max_rate=81920
local_max_rate=81920

注意,当你做此测试 ,若出现如下提示 。

那是因为chroot_list不存在 。由此我们可以知道vsftpd.conf配置文件中的是chroot_list_file=/etc/vsftpd/chroot_list 而不是chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 我们应该看下FTP配置文件中到底是怎么写的 ,不要应了上面的勿扰 。一般情况下是/etc/vsftpd/chroot_list ,那我们只需要在/etc/vsftpd目录下自行手建一个chroot_list 文件即可 。编辑此文件 ,添加要禁锢在指定目录里的本地用户即可。
8.11、如何让绑定IP到vsFTPd如何让绑定IP到vsFTPd也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP在vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样外网就不能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP ; listen_address=192.168.0.2 。

【编辑推荐】
1.CentOS Squid操作系统重新规划并部署
2.CentOS LEMP系统安装编译安装基本环境
3.CentOS vsftpd安装FTP服务器安装jdk1.5
4.CentOS DDNS是Linux中动态使用方法直接回车
5.CentOS Oracle虚拟机使用真正应用集群


【责任编辑:鹏程 TEL:(010)68476606】


1.安装vsftpd:yum install vsftpd
2.启动/重启/关闭vsftpd服务器
[root@localhost ftp]# /sbin/service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
OK表示重启成功了.
启动和关闭分别把restart改为start/stop即可.


假如是源码安装的,www.linuxidc.com到安装文件夹下找到start.sh和shutdown.sh文件,执行它们就可以了.
3.与vsftpd服务器有关的文件和文件夹
vsftpd服务器的配置文件的是: /etc/vsftpd/vsftpd.conf
vsftpd服务器的根目录,即FTP服务器的主目录:
在/var/ftp处pub处
假如你想修改服务器目录的路径,那么你只要修改/var/ftp到别处就行了
4.添加FTP本地用户
有的FTP服务器需要用户名和密码才能登录,就是因为设置了FTP用户和权限.
FTP用户一般是不能登录系统的,只能进入FTP服务器自己的目录中,这是为了安全.这样的用户就叫做虚拟用户了.实际上并不是真正的虚拟用户,只是不能登录SHELL了而已,没能力登录系统.
/usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin test
这个命令的意思是:
使用命令(adduser)添加test用户,不能登录系统(-s /sbin/nologin),自己的文件夹在(-d /opt/test_ftp)),属于组ftp(-g ftp)
然后你需要为它设置密码 passwd test
这样就添加了一个FTP 用户了.下面的示例可以帮助你进入FTP服务器了.
[root@localhost ftp]# ftp
ftp> open 192.168.0.33
Connected to 192.168.0.33 (192.168.0.33).
220 (vsFTPd 2.0.5)
Name (192.168.0.33:gxl): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
在windows中,只要在浏览器中输入 ftp://192.168.0.33 进入FTP服务器,然后右键登录,输入用户名和密码就可以登录自己的目录了.
当然你要保证自己能读写自己的目录,就要在配置文件 vsftpd.conf里设置一下就可以读写了.
local_enable=yes
write_enable=yes
local_umask=022
5.匿名上传下载
修改配置文件即可vsftpd.conf,确定有以下几行,没有自己添加进去就可以了.
anonymous_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_umask=022
然后你可以新建一个文件夹,修改它的权限为完全开放,任何用户就可以登录这个文件夹,并上传下载文件:
mkdir /var/ftp/guest
chmod 777 /var/ftp/guest
6.定制进入FTP服务器的欢迎信息
在vsftpd.conf文件中设置:
dirmessage_enable=yes
然后进入用户目录建立一个.message文件,输入欢迎信息即可(我这里写入的是Welcome to gxlinux's FTP!):
[root@localhost test_ftp]# ftp 192.168.0.33
Connected to 192.168.0.33 (192.168.0.33).


220 (vsFTPd 2.0.5)
Name (192.168.0.33:gxl): test
331 Please specify the password.
Password:
230-Welcome to gxlinux's FTP!
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
7.实现虚拟路径
将某个目录挂载到FTP服务器下供用户使用,这就叫做虚拟路径.
比如将gxl用户的目录挂载到FTP服务器中,供 FTP服务器的用户使用,使用如下命令即可:
[root@localhost opt]# mount --bind /home/gxl /var/ftp/pub #使用挂载命令
[root@localhost opt]# ls /var/ftp/pub
LumaQQ Screenshot.png 桌面
8.打开vsFTPd的日志功能
添加下面一行到vsftpd.conf文件中,一般情况下该文件中有这一行,只要把前面的注释符号#去掉即可,没有的话就添加,或者修改:
xferlog_file=/var/log/vsftpd.log
9.限制链接数,以及每个IP最大的链接数
修改配置文件中,例如vsftp最大支持链接数100个,每个IP能支持5个链接:
max_client=100
max_per=5
10.限制传输速度
修改配置文件中,例如让匿名用户和vsftd上的用户(即虚拟用户)都以80KB=1024*80=81920的速度下载
anon_max_rate=81920
local_max_rate=81920
11.将用户(一般指虚拟用户)限制在自家目录
修改配置文件中,这样用户就只能访问自己家的目录了:
chroot_local_user=yes
假如只想某些用户仅能访问自己的目录,其它用户不做这个限制,那么就需要在chroot_list文件(此文件一般是在/etc/vsftpd/中)中添加此用户.
编辑此文件,比如将test用户添加到此文件中,那么将其写入即可.一般的话,一个用户占一行.
[root@localhost vsftpd]# cat chroot_list
test
12.绑定某个IP到vsFTPd
有时候要限制某些IP访问服务器,只答应某些IP访问,例如只答应192.168.0.33访问这个 FTP,同样修改配置文件:
listen_address=192.168.0.33

配置vsftpd.conf
anonymous_enable=NO #禁止匿名
local_enable=YES #答应本地登录
write_enable=YES #答应写,如需上传,则必须
local_umask=027 #将上传文件的权限设置为:777-local_umask
anon_upload_enable=YES #答应虚拟用户和匿名用户上传
anon_other_write_enable=YES #答应虚拟用户和匿名用户修改文件名和删除文件
dirmessage_enable=YES
xferlog_enable=YES #打开日志记录
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log #日志存放位置
xferlog_std_format=YES #标准日志格式
idle_session_timeout=600 #空闲连接超时
data_connection_timeout=120
ftpd_banner=Welcome to ChinaRise FTP service #欢迎信息
guest_enable=yes #答应虚拟用户
guest_username=vsftpdguest #虚拟用户使用的系统账号
virtual_use_local_privs=YES #虚拟用户拥有本地系统权限
chroot_local_user=NO
chroot_list_enable=YES #以上两行将虚拟用户限制在其目录下,不能访问其他目录,或者直接用
chroot_local_user=YES
listen=yes #监听/被动模式
listen_port=21 #监听端口
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #虚拟用户名单保存在文件/etc/vsftpd/vsftpd.chroot_list 中
user_config_dir=/etc/vsftpd/vsftpd_user_conf #每个虚拟用户名的更加具体的培植保存在/etc/vsftpd/vsftpd_user_conf 中
虚拟用户其他设置
在/etc/vsftpd/vsftpd.chroot_list 文件中写入答应登陆的虚拟用户名称,每行一个
在/etc/vsftpd/vsftpd_user_conf 文件夹中创建一个以虚拟用户用户名命名的文件,
写入:local_root = /var/FTP/子目录名
然后在/var/FTP下创建一个对应的目录即可





Linux 用户(user)和用户组(group)管理概述
2009年04月22日 星期三 下午 08:11

Linux 用户(user)和用户组(group)管理概述
作者:北南南北
来自:LinuxSir.Org
摘要:本文主要讲述在Linux
系统中用户(user)和用户组(group)管理相应的概念;用户(user)和用户组(group)相关命令的列举;其中也对单用户多任务,多用户多任务也做以解说,本文应该说是比较基础的文档;

正文

一、理解Linux的单用户多任务,多用户多任务概念;
Linux 是一个多用户、多任务的操作系统;我们应该了解单用户多任务和多用户多任务的概念;
1、Linux 的单用户多任务;
单用户多任务;比如我们以beinan
登录系统,进入系统后,我要打开gedit
来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms
来点音乐;当然听点音乐还不行,MSN
还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan
用户登录时,执行了gedit
、xmms以及msn等,当然还有输入法fcitx
;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;当然beinan这个用户,其它的人还能以远程登录过来,也能做其它的工作。
2、Linux 的多用户、多任务;
有时可能是很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说;
举个例子,比如LinuxSir.Org
服务器,上面有FTP
用户、系统管理员、web
用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma
或Yuking
兄在管理他们的主页系统和FTP
;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody
用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样;
值得注意的是:多用户多任务并不是大家同时挤到一接在一台机器的的键盘和显示器前来操作机器,多用户可能通过远程登录来进行,比如对服务器的远程控制,只要有用户权限任何人都是可以上去操作或访问的;
3、用户的角色区分;
用户在系统中是分角色的,在Linux
系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID
唯一的特性;
root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;
4、多用户操作系统的安全;
多用户系统从事实来说对系统管理更为方便。从安全角度来说,多用户管理的系统更为安全,比如beinan用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有beinan一个用户可读可写可编辑就行了,这样一来只有beinan一个用户可以对其私有文件进行操作,Linux
在多用户下表现最佳,Linux能很好的保护每个用户的安全,但我们也得学会Linux
才是,再安全的系统,如果没有安全意识的管理员或管理技术,这样的系统也不是安全的。
从服务器角度来说,多用户的下的系统安全性也是最为重要的,我们常用的Windows
操作系统,它在系纺权限管理的能力只能说是一般般,根本没有没有办法和Linux或Unix 类系统相比;
二、用户(user)和用户组(group)概念;
1、用户(user)的概念;
通过前面对Linux
多用户的理解,我们明白Linux
是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;
当然用户(user)的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问LinuxSir.Org
的网页程序,就是nobody用户;我们匿名访问ftp
时,会用到用户ftp或nobody ;如果您想了解Linux系统的一些帐号,请查看
/etc/passwd ;
2、用户组(group)的概念;
用户组(group)就是具有相同特征的用户(user)
的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通
过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现
的;

例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他
们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的;
用户和用户组的对应关系是:一对一、多对一、一对多或多对多;
一对一:某个用户可以是某个组的唯一成员;
多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;
三、用户(user)和用户组(group)相关的配置文件、命令或目录;
1、与用户(user)和用户组(group)相关的配置文件;
1)与用户(user)相关的配置文件;
/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;
2)与用户组(group)相关的配置文件;
/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;
2、管理用户(user)和用户组(group)的相关工具或命令;
1)管理用户(user)的工具或命令;
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd
和/etc/shadow
文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除
/etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute
a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo
能后面直接执行命令,比如sudo
不需要root
密码就可以执行root
赋与的执行只有root才能执行相应的命令;但得通过visudo
来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi
来编辑
/etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
2)管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow
,如果/etc/gshadow
不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group
,然后删除gshadow文件;
3、/etc/skel 目录;
/etc/skel目录一般是存放用户启动文件的目录,这个目录是由root权限控制,当我们添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下;/etc/skel
目录下的文件都是隐藏文件,也就是类似.file格式的;我们可通过修改、添加、删除/etc/skel目录下的文件,来为用户提供一个统一、标准的、默认的用户环境;
[root@localhost beinan]# ls -la /etc/skel/
总用量
92
drwxr-xr-x 3 root root 4096 8月 11 23:32 .
drwxr-xr-x 115 root root 12288 10月 14 13:44 ..
-rw-r--r-- 1 root root 24 5月 11 00:15 .bash_logout
-rw-r--r-- 1 root root 191 5月 11 00:15 .bash_profile
-rw-r--r-- 1 root root 124 5月 11 00:15 .bashrc
-rw-r--r-- 1 root root 5619 2005-03-08 .canna
-rw-r--r-- 1 root root 438 5月 18 15:23 .emacs
-rw-r--r-- 1 root root 120 5月 23 05:18 .gtkrc
drwxr-xr-x 3 root root 4096 8月 11 23:16 .kde
-rw-r--r-- 1 root root 658 2005-01-17 .zshrc
/etc/skel 目录下的文件,一般是我们用useradd 和adduser 命令添加用户(user)时,系统自动复制到新添加用户(user)的家目录下;如果我们通过修改
/etc/passwd 来添加用户时,我们可以自己创建用户的家目录,然后把/etc/skel
下的文件复制到用户的家目录下,然后要用chown
来改变新用户家目录的属主;
4、/etc/login.defs 配置文件;
/etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的;
比如Fedora

/etc/logins.defs 文件内容;
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file,
relative to the
# home directory. If you _do_ define both, MAIL_DIR takes
precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail 注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be
used.
# PASS_MIN_DAYS Minimum number of days allowed between
password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a
password expires.
#
PASS_MAX_DAYS 99999 注:用户的密码不过期最多的天数;
PASS_MIN_DAYS 0 注:密码修改之间最小的天数;
PASS_MIN_LEN 5 注:密码最小长度;
PASS_WARN_AGE 7 注:
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 注:最小UID为500 ,也就是说添加用户时,UID
是从500开始的;
UID_MAX 60000 注:最大UID为60000;
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 注:GID 是从500开始;
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by
default
# On RH systems, we do. This option is ORed with the -m
flag on
# useradd command line.
#
CREATE_HOME yes 注:是否创用户家目录,要求创建;
5、/etc/default/useradd 文件;
通过useradd
添加用户时的规则文件;
# useradd defaults file
GROUP=100
HOME=/home 注:把用户的家目录建在/home中;
INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用;
EXPIRE= 注:帐号终止日期,不设置表示不启用;
SHELL=/bin/bash 注:所用SHELL的类型;
SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
后记:
关于用户(user)和用户组(group)管理内容大约就是这么多;只要把上面所说的内容了解和掌握,用户(user)和用户组(group)管理就差不多了;由于用户(user)和用户组(group)是和文件及目录权限联系在一起的,所以文件及目录权限的操作也会独立成文来给大家介绍;
本文只是让新手弟兄明白用户(user)和用户组(group)一些原理,所以我在写此文的时候,大多是解说内容,我的意思是通过解说和索引一些命令,让新手弟兄明白一点理论是比较重要的,技术操作无非是命令的用法;
本文内容会不断的更新和变动,一些命令需要独立成文加以解说,我会在最近的几天内完成;
参考文档:
Linux 相关的man 和相关的help ;


1. 下载rpm包
32位
vsftpd-2.0.1-5.EL4.5.i386.rpm
64位
vsftpd-2.0.1-6.el4.x86_64.rpm

2 . rpm -ivh --force --nodeps vsftpd-2.0.1-5.EL4.5.i386.rpm

3 . /etc/init.d/vsftpd restart /start/stop

4 .允许root登陆

/etc/vsftpd.ftpusers和
/etc/vsftpd.user_list中 ,注释root


500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp

vi /etc/vsftpd/vsftpd.conf
在vsftpd.conf中加入了ftp_username=nobody(用户)这一行

/etc/init.d/vsftpd restart



CentOS VSFTP更新了很多版本更新,我本人认为CentOS VSFTP里很好使的文件系统,在此向大家推荐。如今技术不断更新,各种使用文件都已经淘汰。我认为还是有很不错的如CentOS VSFTP值得大家来运用。

  1.此次为了测试了解一下,CentOS VSFTP,采用RPM包安装方式

  首先rpm -qa | grep CentOS VSFTP查看有无安装,若没有,则要安装,我采用的是yumyum install vsftpd见下:

  [root@ftp sbin]# yum install vsftpd [root@ftp sbin]# service vsftpd status vsftpd is stopped [root@ftp sbin]# service vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@ftp sbin]#

  2.设置每次开机时自动运行及手工启动它:

  chkconfig vsftpd on service vsftpd start netstat -tl 可以查看ftp端口是否在侦听了! 相关配置文件:/etc/vsftpd/vsftpd.conf里面;

  3.至此已经可以FTP已经可以正常运行了,

  4.FTP配置参考以下设置:初级测试篇:(注:匿名用户使用ftp这个系统用户,无需密码)a. 匿名服务器的连接(独立的服务器)在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:

  Anonymous_enable=yes (允许匿名登陆) Dirmessage_enable=yes (切换目录时,显示目录下.message的内容) Local_umask=022 (FTP上本地的文件权限,默认是077) Connect_form_port_20=yes (启用FTP数据端口的数据连接)* Xferlog_enable=yes (激活上传和下载的日志) Xferlog_std_format=yes (使用标准的日志格式) Ftpd_banner=XXXXX (欢迎信息) Pam_service_name=vsftpd (验证方式)* Listen=yes (独立的VSFTPD服务器)*

  功能:只能连接FTP服务器,不能上传和下载注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项

  b. 开启匿名FTP服务器上传权限在配置文件中添加以下的信息即可:

  Anon_upload_enable=yes (开放上传权限) Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件) Write_enable=yes (开放本地用户写的权限) Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

  c. 开启匿名服务器下载的权限在配置文件中添加如下信息即可:Anon_world_readable_only=no注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限(R)读-----下载 (W)写----上传 (X)执行----如果不开FTP的目录都进不去

  d.普通用户FTP服务器的连接(独立服务器)在配置文件中添加如下信息即可:

  Local_enble=yes (本地帐户能够登陆)

  Write_enable=no (本地帐户登陆后无权删除和修改文件)

  功能:可以用本地帐户登陆CentOS VSFTP服务器,有下载上传的权限

  注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下载

  e. 用户登陆限制进其它的目录,只能进它的主目录

  设置所有的本地用户都执行chroot

  Chroot_local_user=yes (本地所有帐户都只能在自家目录)

  设置指定用户执行chroot

  Chroot_list_enable=yes (文件中的名单可以调用)

  Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

  注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可

  f. 限制本地用户访问FTP

  Userlist_enable=yes (用userlistlai 来限制用户访问)

  Userlist_deny=no (名单中的人不允许访问)

  Userlist_file=/指定文件存放的路径/ (文件放置的路径)

  注:开启userlist_enable=yes匿名帐号不能登陆

  g. 安全选项

  Idle_session_timeout=600(秒) (用户会话空闲后10分钟)

  Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)

  Accept_timeout=60(秒) (将客户端空闲1分钟后断)

  Connect_timeout=60(秒) (中断1分钟后又重新连接)

  Local_max_rate=50000(bite) (本地用户传输率50K)

  Anon_max_rate=30000(bite) (匿名用户传输率30K)

  Pasv_min_port=50000 (将客户端的数据连接端口改在

  Pasv_max_port=60000 50000—60000之间)

  Max_clients=200 (FTP的最大连接数)

  Max_per_ip=4 (每IP的最大连接数)

  Listen_port=5555 (从5555端口进行数据连接)

  h. 查看谁登陆了FTP,并杀死它的进程

  ps –xf |grep ftp

  kill 进程号

  5. 高阶部分测试篇:

  配置本地组访问的FTP

  首先创建用户组 test和FTP的主目录

  groupadd test

  mkdir /tmp/test

  然后创建用户

  useradd -G test –d /tmp/test –M usr1

  注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定

  M:不建立默认的自家目录,也就是说在/home下没有自己的目录

  useradd –G test –d /tmp/test –M usr2

  接着改变文件夹的属主和权限

  chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1

  chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有

  这个实验的目的就是usr1有上传、删除和下载的权限

  而usr2只有下载的权限没有上传和删除的权限

  当然啦大家别忘了我们的主配置文件CentOS VSFTP.conf

  修改用户密码或添加用户密码

  以用户name为例,添加用户:useradd name,设置密码:passwd name,然后根据提示,输入两次密码即可。

  删除用户:userdel name,其实并没有完全删除,只是该用户不能登陆,其目录下的文件还在保留。

  如:useradd username

  passwd username

  userdel username

  要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项是有的!

  6. CentOS VSFTP.conf里面的参数简要说明:

  Anonymous_enable=yes (允许匿名登陆)

  Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)

  Local_umask=022 (FTP上本地的文件权限,默认是077)

  Connect_form_port_20=yes (启用FTP数据端口的数据连接)*

  Xferlog_enable=yes (激活上传和下传的日志)

  Xferlog_std_format=yes (使用标准的日志格式)

  Ftpd_banner=