web-dev-qa-db-ja.com

特定のディレクトリのみにアクセスするsftpユーザーを作成するにはどうすればよいですか?

特定のフォルダへのアクセスが制限されたsftpのユーザーを作成したい

私のフォルダ構造は次のようになります:

/var/www/site1/files/

/var/www/site2/files/

/var/www/site3/files/

Sftp user1を作成して/var/www/site1/files/にアクセスし、filezilaを使用してウェブサイトファイルをアップロードし、他のフォルダーを表示できないようにしたい

同様に、/var/www/site2/files/へのアクセスが制限されているuser2の場合

/var/www/site3/files/へのアクセスが制限されているuser3の場合

1
Ahmed

あなたはほとんど事をフォローしました。
これを行うのが最善の方法です。

  1. /homeに次の行を追加して、3つのディレクトリをそれぞれ/etc/fstabディレクトリにマウントします。

    /var/www/site1/files/ /home/site1/htdocs/ bind 0 0
    /var/www/site2/files/ /home/site2/htdocs/ bind 0 0
    /var/www/site3/files/ /home/site3/htdocs/ bind 0 0
    
  2. mount -aを使用して、マウントを即座に開始します。

  3. ユーザーsite1、site2、site3が同じグループに追加されていることを確認してください(例:sftpusersまたはsftponly)。次のコマンドを使用して、ユーザーをグループに追加できます。

    usermod -aG sftponly site1
    usermod -aG sftponly site2
    usermod -aG sftponly site3
    
  4. 以下を使用して、対応するユーザーの/home/{site1,site2,site3}ホームディレクトリを作成します。

    usermod -d /home/site1 site1
    usermod -d /home/site2 site2
    usermod -d /home/site3 site3
    
  5. /etc/ssh/sshd_configに以下を追加してください:

    Match group sftponly
          ChrootDirectory %h
          X11Forwarding no
          AllowTcpForwarding no
    
  6. 最後に、以下を使用してsshサービスを再起動します。

    service ssh restart
    

詳細は このデジタルオーシャンに関する投稿 を参照してください。

1
Krishna Chalise

krishna chaliseの回答 をたどると、所有権と権限を調整する必要がある場合があります。

たとえば、ユーザーsite1の場合:

chown root:root /home/site1
chmod 755 /home/site1
cd /home/site1
chown site1:sftponly
0
user5174959