特定のディレクトリのSFTPユーザーに対する読み取り専用権限

特定のディレクトリのSFTPユーザーに対する読み取り専用権限

読み取り専用権限を持つ特定のSFTPユーザーを作成したいと思います/var/www/vhosts。これに助けが必要ですか?

答え1

Unixシステムは、ユーザーが「親」ファイルとディレクトリにアクセスできないファイルシステム層のディレクトリにユーザーをリセットするためのchrootコマンドを提供します。/

ただし、お客様の場合は、リモートシェルサービスとして実装された仮想chrootを提供することが適切です。 sftpは、ローカルユーザーをファイルシステムの特定のサブセットに制限するように簡単に設定できます。

したがって、あなたの場合、chrootユーザーユーザーをディレクトリfooに入れようとします。/var/www/vhosts/

/var/www/vhosts/以下のように、ユーザーのchrootディレクトリをサブディレクトリに制限することで設定できます/etc/ssh/sshd_config

ユーザーの作成fooとパスワードの設定

sudo useradd foo
sudo passwd foo

SFTP専用グループの作成

$ sudo groupadd sftp_users 

fooSFTP専用グループにユーザーが追加されました

$ sudo usermod -G sftp_users foo 

読み取り/書き込み権限で所有者を変更する

sudo chown root.root /var/www/vhosts/

権限の追加

sudo chmod 755 /var/www/vhosts/

編集する/etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

コメントアウトし、次の行を追加します。

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

最後に追加

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www/vhosts/
  ForceCommand internal-sftp

(注:Matchブロックは次の場所になければなりません。終わりファイルsshd_config。 )

sshサービスの再起動

sudo service ssh restart

この構成では、そのフォルダにsshを介してubuntuファイルをインポートできます。できputないdelete

右側のフォルダでsftpを編集します/etc/passwd。ユーザー行をfoo次のように変更します。

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

これにより、ユーザーのホームフォルダがfooSFTPサーバーフォルダに変わります。

関連情報