私はdigitaloceanにubuntuサーバーがあり、自分のサーバー上のドメイン用のフォルダーを誰かに与えたいのですが、私の問題は、そのユーザーに自分のフォルダーやファイルを表示したり、自分のフォルダーから移動したりできないようにしたいです。
フォルダ内のこのユーザーを制限し、他のファイル/ディレクトリを移動して表示できないようにするにはどうすればよいですか?
私はこの方法で問題を解決しました:
$ Sudo addgroup exchangefiles
$ 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
次に、グループにobamaという名前の新しいユーザーを追加します。
$ 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
変数の変更を禁止し、出力リダイレクトも禁止されています。
can引き続きpredefinedユーザーにシェルスクリプトを提供します。これにより、(スクリプトの実装者の制御下で!)ユーザーが制限のない環境でその特定のスクリプトを実行できるようになります。
コマンドchroot
を使用すると、ユーザーの制限付きルートを作成できます。これ question は、chroot
の概念とその使用方法を説明します。
更新:Digital Oceanでセットアップされたchroot jailを検索すると、環境固有のドキュメントがさらに表示されます。ここにあなたが必要とするかもしれないものに関連していると思うカップルがあります。
buntu 12.04 VPSでテストするためにChroot環境を設定する方法
制限されたSSHアクセスをchroot jailされたユーザーに許可する方法
これが jailkitに関連するもの で、これは FloHimself が提案したものです。