私はこの方法で問題を解決しました:
新しいグループを作成
$ sudo addgroup exchangefiles
chroot ディレクトリを作成
$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/
グループ書き込み可能なディレクトリを作成
$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/
両方を新しいグループに渡します
$ sudo chgrp -R exchangefiles /var/www/GroupFolder/
その後 /etc/ssh/sshd_config
に行きました ファイルの末尾に追加:
Match Group exchangefiles
# Force the connection to use SFTP and chroot to the required directory.
ForceCommand internal-sftp
ChrootDirectory /var/www/GroupFolder/
# Disable tunneling, authentication agent, TCP and X11 forwarding.
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
次に、オバマの名前を持つ新しいユーザーをグループに追加します:
$ sudo adduser --ingroup exchangefiles obama
これですべてが完了したので、ssh サービスを再起動する必要があります:
$ sudo service ssh restart
注意:ユーザーは file
で何もできなくなりました ディレクトリ つまり、彼のファイルはすべてファイル フォルダにある必要があります。
制限は賢明な問題であり、一貫して定義する必要があります。できることは、制限付きシェルを定義することです ユーザーのデフォルト シェルとして .
たとえば、/bin/rksh
を設定します。 /etc/profile
のユーザーのデフォルト シェルとして、ユーザーの定義済みシェルの代わりに (制限付きの kornshell) .
注: この名前の実行可能ファイルがシステムに存在しない場合は、ハード リンク ln /bin/ksh /bin/rksh
を作成します。 および ksh
制限されているかどうかを名前で判断します。
制限付きシェル (たとえば) cd
を実行できないようにします コマンド、または /
でコマンドを指定する (明示的なパス) 呼び出しで、 PATH
の変更を禁止します 、 SHELL
、または ENV
変数、および出力リダイレクトも禁止されています。
できます 定義済みを引き続き提供 (スクリプト実装者の制御下で!) ユーザーが制限のない環境でその特定のスクリプトを実行できるようにするシェル スクリプト。
コマンド chroot
ユーザーの制限付きルートを作成できます。この質問は chroot
の概念を説明しています
更新:デジタル オーシャンに設置された chroot 監獄を探しています 、その環境に固有の詳細なドキュメントを表示します。必要と思われるものに関連すると思われるいくつかのドキュメントを次に示します。
Ubuntu 12.04 VPS でのテスト用に Chroot 環境を構成する方法
chroot で監禁されたユーザーに制限付きの SSH アクセスを許可する方法
これは、FloHimself が提案したジェイルキットに関連するものです。