読み取り専用権限を持つ特定の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
foo
SFTP専用グループにユーザーが追加されました
$ 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/:
..
これにより、ユーザーのホームフォルダがfoo
SFTPサーバーフォルダに変わります。