• vsftp新建用户及目录时遇到的坑


    我在suse上面安装了vsftp,配置好ftp服务器,然后用java编写一个上传文件的应用,在java程序执行上传之前需要到ftp服务器上面去创建文件夹,如何配置ftp服务器能够让java程序一次创建多级目录?

    我现在java里面用的方法是FTPClint.makeDirectory(“abc/ds”)

    vsftp的配置是这样的

    pasv_min_port=30000
    pasv_max_port=30100
    write_enable=YES
    use_localtime=YES
    local_enable=YES
    local_umask=022
    ascii_upload_enable=YES
    ascii_download_enable=YES
    ftpd_banner=Welcome to blah FTP service.
    userlist_enable=YES
    chroot_local_user=YES
    ls_recurse_enable=YES
    anon_umask=022
    listen=YES
    xferlog_std_format=YES

    vsftp新建用户及目录时遇到的坑
    1、有关vsftp配置及用户权限设置,请参考:

    http://blog.sina.com.cn/s/blog_3edc5e2e0102vzv8.html

    2、需求:公司另一部门要求单独建一目录,来存在部门自己的文档。

    3、操作步骤:

    复制代码
    1 cd /etc/vsftpd/
    2 vim vuser_passwd.txt
    3 ##创建用户名密码,写入两行(用户名和密码)
    4 ##注意:在写txt配置文件时,不能有注释说明类的内容,默认会逐行去读取
    5
    6 rm -rfv vuser_passwd.db ##删除原有的数据
    7 db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db ##重新生成登录数据库
    8 cd /etc/vsftpd/vuser_conf
    9 ##新建用户名配置文件
    10 vim jiaoyu
    11 local_root=/app/education
    12 write_enable=YES
    13 anon_umask=022
    14 anon_world_readable_only=NO
    15 anon_upload_enable=YES
    16 anon_mkdir_write_enable=YES
    17 anon_other_write_enable=YES
    18
    19 mkdir /app/education
    20 chmod 777 /app/education
    21
    22 /etc/init.d/vsftpd restart
    23
    24 ##ftp工具登录即可。

    1、有关vsftp配置及用户权限设置,请参考:

    http://blog.sina.com.cn/s/blog_3edc5e2e0102vzv8.html

    2、需求:公司另一部门要求单独建一目录,来存在部门自己的文档。

    3、操作步骤:

    cd /etc/vsftpd/
    vim vuser_passwd.txt
    ##创建用户名密码,写入两行(用户名和密码)
    ##注意:在写txt配置文件时,不能有注释说明类的内容,默认会逐行去读取

    rm -rfv vuser_passwd.db ##删除原有的数据
    db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db ##重新生成登录数据库
    cd /etc/vsftpd/vuser_conf
    ##新建用户名配置文件
    vim jiaoyu
    local_root=/app/education
    write_enable=YES
    anon_umask=
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES

    mkdir /app/education
    chmod /app/education

    /etc/init.d/vsftpd restart

    ##ftp工具登录即可。

    配置完成vsftp,无法上传文件和建立文件夹 解决方法
    在centOs(linux)上用vsftp配置的ftp服务,用户权限等设置完成之后,发现从客户端无法上传文件及创建文件夹。尝试着关闭防火墙,也没能解决。通过搜索,觉得是selinux这个服务造成的影响,关闭selinux服务之后,问题解决,vsftp的ftp服务使用正常了。

    关闭selinux方法:修改/etc/selinux/config文件,修改为SELINUX=disabled。重启linux系统。

    vsftp建立虚拟用户不同目录分配不同权限操作步骤详解
    vsftpd服务器同时支持匿名用户、本地用户和虚拟用户三类用户账号,使用虚拟用户账号可以提供集中管理的FTP根目录,方便了管理员的管理,同时将用于FTP登录的用户名、密码与系统用户账号区别开,进一步增强了FTP服务器的安全性。

    1、在/etc/vsftpd/vsftpd.conf加入或者更改以下配置语句:


    注意在vsftpd.conf中加分割文件 :user_config_dir=/etc/vsftpd

    在/etc/vsftpd建同名用户,,并在其中写以下内容(只能上传)

    write_enable=YES
    cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RNFR,RNTO,SIZE,STOR,TYPE,USER,REST,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,FEAT
    file_open_mode=0444


    复制代码代码如下:

    anonymous_enable=NO (当然你也可以设成YES,同时允许匿名用户登陆)
    local_enable=YES (必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的)
    guest_enable=YES(启用虚拟用户)
    guest_username=virtual(第5步中创建,将虚拟用户映射为本地virtual用户)
    pam_service_name=vsftpd.vu(第2步中创建,指定PAM配置文件,文件已经在/etc/pam.d/存在)
    user_config_dir=/etc/vsftpd/user_conf(第7,8步中创建,指定不同虚拟用户配置文件的存放路径)
    2、在/etc/pam.d/中修改文件vsftpd.vu, 对比修改内容:

    复制代码代码如下:

    auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
    account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

    (/etc/vsftpd/vsftpd_login 在第3,4步中创建,用户账号密码数据库文件)

    3、建立用户列表/tmp/logins.txt 内容如下

    复制代码代码如下:

    web (帐号)
    ****** (用户密码)
    download (帐号)
    ******* (用户密码)
    admin (帐号)
    ******* (用户密码)

    注意:不要有空行,一行账号 一行密码;奇数行为帐号,偶数行为密码

    4、建立访问者数据文件(如果没有可以安装:yum install db4-utils)
    #db_load -T -t hash -f /tmp/logins.txt /etc/vsftpd/vsftpd_login.db

    5、建立本地虚拟用户:

    复制代码代码如下:

    #useradd -d /home/ftp -s /sbin/nologin virtual
    6、在/home/ftp/创建目录并改变其属性和它的宿主

    复制代码代码如下:

    #chown virtual /home/ftp
    #chmod 700 /home/ftp
    7、创建ftp用户配制文件目录:/etc/vsftpd/user_conf

    复制代码代码如下:

    #mkdir /etc/vsftpd/user_conf
    8、在/etc/vsftpd/user_conf目录中创建以用户名命名的配置文件web、download、admin

    “download”文件内容如下:

    复制代码代码如下:

    local_root=/home/ftp (当然,你高兴也可以设置成其它,但要注意virtual用户对此目录的权限)
    anon_world_readable_only=NO (使download用户的能下载,也只能下载;写成YES,将不能列出文件和目录)
    “admin”文件内容如下:

    复制代码代码如下:

    local_root=/home/ftp
    anon_world_readable_only=NO
    write_enable=YES (写权限)
    anon_mkdir_write_enable=YES (新建目录权限)
    anon_upload_enable=YES(上传权限)
    anon_other_write_enable=YES(删除/重命名的权限)
    “web”文件内容如下:

    复制代码代码如下:

    local_root=/var/www
    anon_world_readable_only=NO
    anon_umask=022 (由于web页面的特殊性,故单独设置上传文件权限为755,此掩码值可根据具体情况更改)
    write_enable=YES (写权限)
    anon_mkdir_write_enable=YES (新建目录权限)
    anon_upload_enable=YES(上传权限)
    anon_other_write_enable=YES(删除/重命名的权限)
    9、最后,重新启动VSFTPD

    复制代码代码如下:

    #/etc/init.d/vsftpd restart

    修改/etc/vsftp.conf 配置文件
    listen=NO
    listen_ipv6=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=NO
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chown_uploads=NO
    xferlog_file=/var/log/vsftpd.log
    xferlog_std_format=YES
    nopriv_user=ftpuser
    async_abor_enable=YES
    ascii_upload_enable=YES
    ascii_download_enable=YES
    ftpd_banner=Welcome to blah FTP service.
    chroot_local_user=YES
    chroot_list_enable=NO
    allow_writeable_chroot=YES
    ls_recurse_enable=NO
    pam_service_name=vsftpd (设置 PAM 外挂模块提供的认证服务所使用的配置文件名)
    utf8_filesystem=YES
    tcp_wrappers=YES
    local_root=/home/ftpuser
    anon_root=/home/ftpuser
    guest_enable=YES #虚拟账户映射系统账户
    guest_username=ftpuser #虚拟账户映射系统账户
    virtual_use_local_privs=YES (虚拟用户和本地用户权限相同。很重要,保证虚拟用户有和映射的本地用户相同的权限)
    user_config_dir=/etc/vsftpd/conf

    另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
    要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:
    allow_writeable_chroot=YES

    问题记录:
    1,默认配置注释了下面2个选项,其他浏览器访问显示local_root指定目录,ie浏览器显示的/根目录
    chroot_local_user=YES
    chroot_list_enable=NO
    2,打开上面选项,无法登陆了,修改local_root所属用户或去掉写权限,恢复正常,没法上传文件
    另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
    3,增加allow_writeable_chroot=YES解决问题;

    摘要:vsftp配置目录权限和家目录锁定

    vsftp配置目录权限和家目录锁定的配置参数如下:

    解析:

    chroot_local_user=NO

    是否禁止本地用户切换到家目录上级目录,绑定家目录为用户的根目录

    chroot_list_enable=NO

    是否启用chroot列表文件,写入文件中的用户将锁定家目录

    chroot_list_file=/etc/vsftpd/chroot_list

    指定用户列表文件的文件路径

    chroot_local_user=YES,chroot_list_enable=YES

    chroot_list_file文件中的用户可以切换到其他目录

    chroot_local_user=NO,chroot_list_enable=YES

    chroot_list_file文件中的用户将锁定在家目录下

    chroot_local_user=YES,chroot_list_enable=NO

    所有本地用户都锁定在家目录下

    chroot_local_user=NO,chroot_list_enable=NO

    所有本地用户都可以切换到其他目录

    注意:

    从vsftpd2.3.5之后,增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!

    如果检查发现还有写权限,就会报错误500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

    修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,

    或者你可以在vsftpd的配置文件中增加下列两项中的一项:allow_writeable_chroot=YES (允许写权限)

  • 相关阅读:
    RT-Thread UART设备
    【Python】os包的使用教程详解
    电脑重装系统 win11 怎么关闭系统软件通知
    Mysql数据库清空表中数据、删除表
    Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器
    VS2019编译配置Easy3D
    WebAssembly中simd使用调研
    OpenAI“VoiceEngine”震撼来袭,深度合成算法备案需抓紧
    Python之Excel数据相关
    【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络篇)
  • 原文地址:https://blog.csdn.net/weixin_43214644/article/details/126303877