web-dev-qa-db-ja.com

sftpユーザーに/ var / wwwディレクトリへのアクセスを許可する

ユーザーを作成し、ホームディレクトリ/var/www/mysite/ftpdirを作成しました

また、sshd_configを指すChrootDirectoryを使用して、/var/www/mysiteにこのユーザーのMatchユーザーエントリを追加しました

これを拾うためにsshを再起動しました。

Sftpでログインすると、ユーザーはまだユーザーの古いディレクトリ(/home/user)に移動します

私は何が欠けていますか?

12
hawkeye

これがプロセスです:

  1. ユーザーをグループに追加します:Sudo usermod -aG www blubファイルを編集して「/ var/www」に追加する最も簡単な方法は何ですか?

    または単にSudo adduser <username> www-dataを使用します

  2. Vsftpd Sudo apt-get install vsftpdをインストールします
  3. リモートアクセス用にvsftpdを構成する:Sudo nano /etc/vsftpd.confおよびファイルセット内

    chroot_local_user=YES
    

    これがコメントアウトされていることを確認してください:

    #chroot_list_enable=YES
    

    ドキュメント に従って。

  4. Nsftpを再起動します:Sudo service vsftpd restart
  5. ユーザーのホームディレクトリをWebディレクトリに構成します(/homeにはありません):

    Sudo usermod -d /var/www/mysite/ftpaccessdir <username>
    
  6. Ssh chrootを構成する

    Sudo nano /etc/ssh/sshd_config
    

    最後に次を追加します。

    Subsystem  sftp  internal-sftp
    Match user <username>
        ChrootDirectory /var/www/site
        ForceCommand internal-sftp
    AllowTcpForwarding no
    

    ファイルのさらに上に、これがコメントアウトされていることを確認します(つまり、追加したばかりのファイルの前)

    #Subsystem sftp /usr/lib/openssh/sftp-server
    
  7. Sshを再起動します

    Sudo service ssh restart
    
  8. Apacheの許可を変更します。

    chown root:root /var/www
    chown root:root /var/www/site
    chmod 755 /var/www
    

    docs here のように。

  9. ディレクトリにwww-dataアクセスがあることを確認してください

    Sudo chown -R www-data:www-data /var/www/site
    chmod 755 /var/www/site
    
16
hawkeye

最後に接続拒否エラーが発生する場合は、"Subsystem sftp internal-sftp""UsePAM yes"の後に配置されていることを確認してください。そうでない場合は、sshを更新して再起動すると動作しました。

2
Needhi Agrawal

私は簡単な方法を使っており、それはApacheでうまくいきました。

Sudo useradd -d /var/www demo_user -g www-data
Sudo passwd demo_user
Sudo service ssh restart

それでもアクセス許可の問題に直面する場合は、chmodおよびchownを使用して、ニーズに応じて対処してください。

0
Imran Zahoor