查看VSFTP Quick Start的源代码
←
VSFTP Quick Start
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== 安装 vsftpd == Debian/Ubuntu 下: <source lang=bash> $ sudo apt-get install vsftpd </source> 安装完后,会自动向 /etc/passwd 和 /etc/group 添加一个 ftp 用户,一个 ftp 组 <br><br> == 使用匿名用户 == 配置文件 /etc/vsftpd.conf vsftpd 的匿名用户 (anonymous) 需要对应系统的本地用户,默认情形下对应 ftp,可通过如下选项控制: <pre>ftp_username = ftp</pre> <source lang=bash> # 允许匿名用户登录,无须密码 anonymous_enable=YES no_anon_password=YES # 允许匿名用户建立目录 anon_mkdir_write_enable=YES # 允许匿名上传文件 anon_upload_enable=YES 上述匿名用户的 mkdir 和 upload 权限,必须打开这个选项才能生效: write_enable=YES 而且匿名用户在系统中对应的用户,必须对操作的目录有写权限 # 改变匿名用户上传之文件属于系统本地用户 ftp chown_uploads=YES # 此选项默认为 NO,则匿名用户上传的文件自己没法下载没法查看 chown_username=ftp # 匿名上传之文件的权限 chown_upload_mode=0744 如果 chown_upload_mode=0222 则 匿名用户不能查看和下载自己上传的文件 # 不允许 /etc/passwd 中的本地用户登录 ftp local_enable=NO </source> <br><br> == 主目录 == vsftpd 一般默认使用 /srv/ftp 作为匿名用户登录后的主目录 这个目录一般在安装完成后会自动建立,大多数情形下我们还是用自己的目录: <pre class="brush:bash"> $ su root $ mkdir /data/ftp </pre> 在配置文件中重新指定匿名用户的根目录: anon_root=/data/ftp 不管 /data/ftp 属于谁,anonymous 对应的用户 ftp 不能对该目录有写权限(安全考虑),否则连接后会报: OOPS: vsftpd: refusing to run with writable anonymous root 因此,为保证匿名用户的上传权限,可在 /data/ftp 目录下,再建立一个 upload 目录,赋予 ftp 读写执行的权限即可: <pre> $ mkdir -p /data/ftp/upload $ chown ftp /data/ftp/upload </pre> <br><br> == 允许匿名用户更多的权限 == 以上配置下,即使匿名用户自己上传的文件权限是 744,其也不能删除和重命名自己上传的文件,除非打开如下选项: #除了上传和创建目录外,还可以重命名,删除文件 anon_other_write_enable=YES (经测试,不可用) <br><br> == 添加新用户 == ;;Create the system user (workers) and the work directory (/home/work) to be used by the virtual users in vsftpd where they will upload their work in it: <source lang=bash> $ sudo useradd -d /home/work workers $ sudo mkdir /home/work $ sudo chown workers /home/work </source> ;;Create directories to save the virtual users definitions: <source lang=bash> $ sudo mkdir /etc/vsftpd $ sudo mkdir /etc/vsftpd/vusers </source> ;;Edit the default /etc/vsftpd.conf: <source lang=bash> # Disable anonymous_enable is optional. anonymous_enable=NO ... local_enable=YES ... pam_service_name=ftp </source> Enable TLS/SSL/FTPS: <source lang=bash> ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES # Filezilla uses port 21 if you don't set any port # in Servertype "FTPES - FTP over explicit TLS/SSL" # Port 990 is the default used for FTPS protocol. # Uncomment it if you want/have to use port 990. #listen_port=990 </source> ;;In the end of the file and add: <source lang=bash> # Enable (only) guests. guest_enable=YES # This is not needed, it's the default. Just here for clarity. guest_username=ftp # Where the guests (virtual) usernames are set. user_config_dir=/etc/vsftpd/vusers </source> ;;Create the new file /etc/pam.d/ftp for the new authentication system: <source lang=bash> auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login </source> ;;Create a file with the virtual usernames and passwords that can login (one line for username, one line for password and so on for all the users) and call it "logins.txt": <source lang=bash> gump gump_password riffsolo riffsolo_password </source> ;;Install db-util, create the login database with the file logins.txt and restrict permissions to the database: <source lang=bash> sudo apt-get install db-util sudo db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db sudo chmod 600 /etc/vsftpd/vsftpd_login.db # This is not safe, you should delete this file. sudo chmod 600 logins.txt </source> ;;Create a file for the workers settings (gump and riffsolo on logins.txt): sudo nano /etc/vsftpd/workers Add the new definitions for this users (remember that virtual users are treated as anonymous users by default on vsftpd, default anonymous settings are set on /etc/vsftpd.conf): <source lang=bash> write_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_upload_enable=YES local_root=/home/work chroot_local_user=YES dirlist_enable=YES download_enable=YES guest_username=workers </source> ;;Link this file to the workers usernames in /etc/vsftpd/vusers/, so that any change made at /etc/vsftpd/workers is applied to all workers (after you restart vsftpd). <source lang=bash> sudo ln -s /etc/vsftpd/workers /etc/vsftpd/vusers/gump sudo ln -s /etc/vsftpd/workers /etc/vsftpd/vusers/riffsolo </source> ;; Restart vsftpd <source lang=bash> $ sudo /etc/init.d/vsftpd restart </source> <br><br> == 本地用户 == 要使用本地用户,则修改配置为: local_enable=YES 本地用户的登录控制,通过 /etc/ftpuser 文件控制: <pre class="brush:bash"> root@hahaha:/var/data# cat /etc/ftpusers # /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). root daemon bin sys sync man lp </pre> 在其中挂名的,不能从 vsftpd 登录 对于本地用户,其 vsftpd 用户主目录默认为其 home 目录,如 jjyy,则客户端登录后直接到 /home/jjyy 可通过配置选项来改变这个用户登录后的 vsftpd 主目录: local_root=/var/ftp 对本地用户没有权限限制 默认情形下配置选项 chroot_local_user=NO,表示本地用户可以随意访问整个系统的文件系统,即:对可登录的本地用户来说,其根目录就是整个 Linux 系统的根目录,没有被 chroot 到用户主目录下,这是一个安全隐患: chroot_local_user=YES 则将可登录的本地用户根目录 chroot 到其的用户主目录下,这样其就不能看到和访问整个文件系统的根目录 对于需要开放整个文件系统的本地用户,可以通过如下选项控制之: <pre> chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list </pre> 在 /etc/vsftpd.chroot_list 列上需要的用户名即可 <br><br> == 磁盘配额 == 为特定用户配额适当的磁盘空间,以防服务被滥用 <pre class="brush:bash"> $ apt-get install quota $ mount -o usrquota,grpquota /dev/xvdb /mnt $ quota -uvs ftp # 查看 ftp 配额 $ edquota -u ftp # 编辑配额 Disk quotas for user hom (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sdb5 16 0 1024 4 0 0 改列 hard,单位为 KB $ quotaon -avu # 打开磁盘配额监控进程 $ quota -uvs ftp # 查看 ftp 配额 Disk quotas for user ftp (uid 104): Filesystem space quota limit grace files quota limit grace /dev/xvdb 30768K 0K 4883M 6 0 0 $ quotaoff -vug /dev/xvdb # 关闭 xvdb 的配额 </pre> <br><br> == 参考 == * http://ubuntuforums.org/showthread.php?t=518293 <br><br> <br><br> <br><br> <br><br> <br><br>
返回到
VSFTP Quick Start
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面