特定のディレクトリの sftp ユーザーへの読み取り専用権限

特定のディレクトリの sftp ユーザーへの読み取り専用権限

内のすべてのフォルダーとサブフォルダーの読み取り権限のみを持つ特定の SFTP ユーザーを作成したいと考えています/var/www/vhosts。これについて何か助けはありますか?

答え1

Unix システムには、ユーザーのchroot権限をファイルシステム階層内の特定のディレクトリにリセットし/、ユーザーが「上位」のファイルやディレクトリにアクセスできないようにするコマンドが用意されています。

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

したがって、あなたの場合、chrootユーザーfoouser を/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でアクセスしてファイルを取得できますubuntuputdelete

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

$ sudo vi /etc/passwd

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

fooこれにより、ユーザーのホーム フォルダーが SFTP サーバー フォルダーに変更されます。

関連情報