天天看点

vsftpd 虚拟用户搭建

<code>第一种方案,只能实现简单的上传和下载,权限无法控制</code>

<code>1.yum</code>

<code>2.</code><code>cat</code> <code>/etc/vsftpd/vsftpd</code><code>.conf</code>

<code>anonymous_enable=NO</code>

<code>local_enable=YES</code>

<code>write_enable=YES</code>

<code>local_umask=022</code>

<code>dirmessage_enable=YES</code>

<code>xferlog_enable=YES</code>

<code>connect_from_port_20=YES</code>

<code>xferlog_std_format=YES</code>

<code>listen=YES</code>

<code>chroot_local_user=YES</code>

<code>chroot_list_enable=YES</code>

<code>chroot_list_file=</code><code>/etc/vsftpd/chroot_list</code>

<code>pam_service_name=vsftpd</code>

<code>userlist_enable=YES</code>

<code>tcp_wrappers=YES</code>

<code>#guest_enable=YES</code>

<code>#guest_username=ftp</code>

<code>#user_config_dir=/etc/vsftpd/vuser_conf</code>

<code>3.</code><code>cat</code> <code>/etc/vsftpd/chroot_list</code>

<code>xx</code>

<code>4.</code><code>useradd</code> <code>xx -d </code><code>/opt/ftp</code> <code>-s </code><code>/sbin/nologin</code>

<code>  </code><code>echo</code> <code>"密码"</code><code>|</code><code>passwd</code> <code>--stdin xx</code>

<code>5.</code><code>chown</code> <code>-R xx.xx </code><code>/opt/ftp</code>

<code>6.关闭selinux</code>

<code>第二种方案 可以控制权限</code>

<code>http:</code><code>//www</code><code>.cnblogs.com</code><code>/whoamme/p/3494128</code><code>.html</code>

<code>yum -y </code><code>install</code> <code>pam vsftpd db4 db4-utils</code>

<code>useradd</code> <code>-d </code><code>/opt/ftp</code> <code>-s </code><code>/sbin/nologin</code> <code>vuser_ftp</code>

<code>vi</code> <code>/etc/vsftpd/login</code><code>.txt</code>

<code>ftpuser3 </code>

<code>test1passwd</code>

<code>db_load -T -t </code><code>hash</code> <code>-f </code><code>/etc/vsftpd/login</code><code>.txt </code><code>/etc/vsftpd/vsftpd_login</code><code>.db</code>

<code>vi</code> <code>/etc/vsftpd/vsftpd</code><code>.conf</code>

<code>xferlog_file=</code><code>/var/log/vsftpd</code><code>.log</code>

<code>guest_enable=YES</code>

<code>guest_username=vuser_ftp</code>

<code>pam_service_name=</code><code>ftp</code><code>.vu</code>

<code>user_config_dir=</code><code>/etc/vsftpd/vsftpd_user_conf</code>

<code>cat</code> <code>/etc/pam</code><code>.d</code><code>/ftp</code><code>.vu</code>

<code>auth required </code><code>/lib64/security/pam_userdb</code><code>.so db=</code><code>/etc/vsftpd/vsftpd_login</code>  

<code>account required </code><code>/lib64/security/pam_userdb</code><code>.so db=</code><code>/etc/vsftpd/vsftpd_login</code>

<code>cat</code> <code>ftpuser3 </code>

<code>anon_world_readable_only=NO</code>

<code>anon_upload_enable=YES</code>

<code>anon_mkdir_write_enable=YES</code>

<code>anon_other_write_enable=YES</code>

<code>download_enable=YES </code><code>#这个参数要注意,为NO,无法下载</code>

<code>local_root=</code><code>/opt/ftp/xx</code>

<code>cmds_allowed=FEAT,REST,ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RNFR,RNTO,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,RETR</code>

<code>#无del权限</code>

<code>注意</code>

<code>1.</code><code>/etc/vsftpd/vsftpd_user_conf</code> <code>不能有空格</code>

<code>2.</code><code>chmod</code> <code>600 vsftpd_login.db</code>

<code>3.</code><code>chmod</code> <code>-R 777 vsftpd_user_conf</code>

<code>4.db=</code><code>/etc/vsftpd/login</code> <code>修改成db=</code><code>/etc/vsftpd/vsftpd_login</code>

<code>把db= 定义的是验证数据文件存放的位置,这个文件是以.db结尾的。但是在</code><code>/etc/pam</code><code>.d</code><code>/ftp</code><code>.vu </code>

<code>中配置的时候不要加上.db </code>

<code>5,配置文件中间的 </code><code>/lib/security/pam_userdb</code><code>.so 如果你的系统是64位的,那么相应的路径</code>

<code>应是</code><code>/lib64/security/pam</code><code>.userdb.so 不然会出错</code>

<code>virtual_use_local_privs参数</code>

<code>当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;</code>

<code>当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。</code>

<code>当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。</code>

<code>当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,</code>

<code>anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。</code>

<code>当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,</code>

<code>anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。</code>

<code>anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。</code>

<code>anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。</code>

<code>anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。</code>

还有可能遇到的问题

假如服务器上开了ftp,用iptables控制下

IPTABLES -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

IPTABLES -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

IPTABLES -A OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT

IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

然后再去vi /etc/sysconfig/iptables-config,增加

IPTABLES_MODULES="ip_conntrack_ftp"

IPTABLES_MODULES="ip_nat_ftp"

这样就可以了.

用的时候碰到点问题,就是用ftp软件上传后,想再下载下来,报错

说不能打开这个文件,后来发现上传后的文件的权限只有600,不允许别人读

http://7591167.blog.51cto.com/

因为你vsftpd虚拟用户对应的实体用户A,与你的下载用户B,不是同一个用户。

权限600是A的。A权限6,可读可写不能运行。其它用户都0,就是不可读写运行。

所以B不能读访问A的这个文件。

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

继续阅读