web-dev-qa-db-ja.com

14.04の時点で、vsftpdのインストールが仮想サーバーで機能しない

12.04以降vsftpdのインストールに使用したプロセスは機能しなくなりました。サービスを再起動すると、エラーstop: Unknown instanceが表示されます。これは設定が間違っていることを意味すると思いますが、問題を追跡することはできません。仮想サーバーでこの問題が発生しています。

さらに、Sudo vsftpdを実行すると、@ Beltranが示すように500 OOPS: munmapになります。


  1. ルート権限を取得する

    Sudo -s
    
  2. Vsftpdとlibpam-pwdfileをインストールします

    apt-get install vsftpd libpam-pwdfile
    
  3. Vsftpd.confを編集します

    mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
    vim /etc/vsftpd.conf
    

    次の行をコピーして貼り付けます。

    allow_writeable_chroot=YES
    anonymous_enable=NO
    chroot_list_enable=YES
    chroot_local_user=YES
    guest_enable=YES
    guest_username=vsftpd
    hide_ids=YES
    listen=YES
    local_enable=YES
    local_umask=022
    local_root=/var/clients/$USER
    nopriv_user=vsftpd
    pasv_address=127.0.0.1
    pasv_enable=YES
    pasv_min_port=65000
    pasv_max_port=65100
    port_enable=YES
    user_sub_token=$USER
    seccomp_sandbox=NO
    virtual_use_local_privs=YES
    write_enable=YES
    
  4. 仮想管理者を登録する

    apt-get install Apache2-utils
    mkdir /etc/vsftpd
    htpasswd -cd /etc/vsftpd/ftpd.passwd admin
    vim /etc/vsftpd.chroot_list
    

    Adminユーザーに1行追加します

    admin
    
  5. PAMを構成する

    mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
    vim /etc/pam.d/vsftpd
    

    これらの2行をコピーして貼り付けます。

    auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
    account required pam_permit.so
    
  6. シェルアクセスなしでローカルユーザーを作成する

    useradd --home /home/vsftpd --gid nogroup -m --Shell /bin/false vsftpd
    
  7. ルートディレクトリを作成し、ローカルユーザーに適切なアクセス権を付与します。

    mkdir /var/clients
    chmod -R 755 /var/clients
    chown -R vsftpd:nogroup /var/clients
    
  8. 投獄された仮想ユーザーの登録(最初は、この手順をスキップします)

    htpasswd -d /etc/vsftpd/ftpd.passwd {user_name}
    mkdir /var/clients/{user_name}
    
  9. 再起動サービス

    service vsftpd restart
    
6
roydukkey

AWS EC2インスタンスでこの問題を受け取っている場合は、準仮想ではなくHVM仮想化を使用してインスタンスを作成してみてください。

それでも準仮想インスタンスが必要な場合は、AWSの仮想化を実行するために使用されるXenカーネルのバグであるため、いつバグが修正されるかはわかりません。

この問題に対処するバグスレッドの詳細は次のとおりです。 https://bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/131345

2
roydukkey

ソフトウェアソースで信頼できる提案を有効にし、vsftpdを再インストールします。これが成功するかどうかを確認しています。

ソースで提案されたものを有効にしたくない場合は、vsftpdソースとビルドをこのページで入手できます。 https://launchpad.net/ubuntu/trusty/+source/vsftpd/3.0.2-1ubuntu2.14.04.1

3
Elder Geek

Ubuntu 14.04は ser sessions を使用しますが、これは12.04では存在しなかったため、serviceはシステムセッションではなくユーザーセッションを参照しており、ユーザーはvstfpd(root is)を実行していません。したがって、serviceを使用してサービスのステータスを開始、停止、または確認する場合は、--systemを指定する必要があります。

vsftpdはupstartへのソフトリンクであるため、非特権ユーザーとして実行することはできません。そのようなプロセスのステータスを開始、停止、または確認するには、rootになる必要があります。

ls -l on /etc/init.d/vsftpdを実行すると、次のことが明らかになります。

lrwxrwxrwx 1 root root 21 May 16  2013 /etc/init.d/vsftpd -> /lib/init/upstart-job*

これはcronresolvconfなどに類似しています。これらはすべて起動ジョブであり、起動または停止するにはルートである必要があります。

Upstartは、/ sbin/initデーモンのイベントベースの置換であり、ブート中のタスクとサービスの開始を処理し、シャットダウン中にそれらを停止し、システムの実行中にそれらを監視します。

これらのサービスは通常、起動時に開始されます。新興企業の詳細については、こちらをご覧ください。

さらに必要な場合は、upstartのmanページを参照してください!

要するに、開始、停止、ステータスの確認を行うには、ルートになる必要があります。次のようにできます。

Sudo service vsftpd {start|stop|status|restart}

パスワードを入力するか、次を使用します。

service vsftpd {start|stop|status|restart} --system
3
jobin

Ubuntuにはまだ新しい。面倒なことなくUbuntu 12.4で動作していましたが、Ubuntu 14.04では、これが私がやったことです:

/etc/vsftpd.confファイルに次の2行を追加します。

allow_writeable_chroot = YES
seccomp_sandbox = NO

pam_service_nameの値をftpに変更します。

これが誰かを助けることを願って

1
isecure

これはUbuntu 14.04で機能しました。ユーザーが/var/www/html/kofi_siteディレクトリ内で投獄されている場合は、次を実行します。

Sudo chmod ugo-w /var/www/html/kofi_site

0
nastycrow