内のすべてのフォルダーとサブフォルダーの読み取り権限のみを持つ特定の SFTP ユーザーを作成したいと考えています/var/www/vhosts
。これについて何か助けはありますか?
答え1
Unix システムには、ユーザーのchroot
権限をファイルシステム階層内の特定のディレクトリにリセットし/
、ユーザーが「上位」のファイルやディレクトリにアクセスできないようにするコマンドが用意されています。
ただし、あなたの場合は、リモート シェル サービスによって実装された仮想 chroot を提供するのが適切です。sftp は、ローカル ユーザーをファイルシステムの特定のサブセットに制限するように簡単に構成できます。
したがって、あなたの場合、chroot
ユーザーfoo
user を/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 サーバー フォルダーに変更されます。