OpenSSH構成のみを使用してユーザーを/ home /%uディレクトリに制限できますか?インターネットで見つけた手順から、SSHサーバーを停止し、sshd_config
ファイルに以下を追加しました:
Match group sftpusers
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
次に、SSHサーバーを再起動しました。
参考までに、ユーザーをsftpusers
グループに追加しました
ユーザーは引き続きcd /
を参照でき、catコマンドを使用して、システム上のファイル構造全体のファイルコンテンツ(cat /usr/bin/test.sh
)を一覧表示できます
Ubuntu Server 12.04 LTSを実行しています。
まず最初に、ChrootDirectory %h
はユーザーの家に展開されるため、/home/%u
ではない場合でも、%h
ではなく/home/$USER
を使用することをお勧めします。
次に、実際の問題について説明します。実行するコマンドとしてinternal-sftp
を強制する必要があります。次の設定は私にとってはうまく機能し、あなたにとってもそうです:
Match group sftp
ForceCommand internal-sftp
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ユーザーの家はroot
所有で、上記のように755の権限を持つ必要があります。
drwxr-xr-x 22 root root 4.0K Nov 24 2011 /home/testuser
fakechroot
の使用SSHに使用するユーザーとディレクトリを準備します。たとえば、いくつかのコマンドを/bin
ディレクトリからユーザーのbin
ディレクトリにコピーすることができます。ユーザーの名前はtest
、ユーザーのディレクトリは/home/test
と見なされます。
fakechroot
パッケージをインストールします。
# Debian-based distros
Sudo apt install fakechroot
OpenSSHサーバー構成ファイルを開いて編集します(例:/etc/ssh/sshd_config
)。
次の行を構成ファイルに追加します(または、存在する場合は既存の行を置き換えます)。
# Replace test with your user of choice
Match User test
ForceCommand fakechroot chroot /home/test
# Other options
ファイルを保存します。目的の特定のポートでOpenSSHサーバーを起動します。次に、SSH経由でログインしてみます。すべてが期待どおりに機能するはずです。
それが役に立てば幸い!