ユーザーを1つのフォルダに制限するだけで、そのフォルダから移動することを許可しない方法

ユーザーを1つのフォルダに制限するだけで、そのフォルダから移動することを許可しない方法

私はdigitaloceanにUbuntuサーバーを持っていて、他の人のドメインのために私のサーバーにフォルダを持っていたいと思います。私の問題は、そのユーザーが自分のフォルダやファイルを表示したり、ファイルをフォルダから移動できないようにすることです。

このユーザーを自分のフォルダに制限し、他のファイル/ディレクトリを移動または表示できないようにするにはどうすればよいですか。

答え1

私はこのように問題を解決しました。

新しいグループの作成

$ 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

今、私のグループにObamaという新しいユーザーを追加したいと思います。

$ sudo adduser --ingroup exchangefiles obama

これですべての作業が完了したので、SSHサービスを再起動する必要があります。

$ sudo service ssh restart

注:現在、ユーザーはディレクトリfile外で何もできません。 私は、彼のすべてのファイルがそのフォルダにある必要があることを意味します。

答え2

制限は合理的な質問であり、一貫して定義する必要があります。あなたができることは限られた殻ユーザーを自分のものとして基本シェル

たとえば、/bin/rkshin(restricted kornshell)は、ユーザーの事前定義されたシェルの代わりにユーザーのデフォルトシェルに設定されます/etc/profile

メモ:その名前の実行可能ファイルがシステムにない場合は、ハードリンクを作成し、名前に基づいて制限されてln /bin/ksh /bin/rkshいるkshことを確認してください。

これ限られた殻たとえば、呼び出しでcd(明示的なパス)として指定されたコマンドまたはコマンドの実行を防ぎ、変数への変更を許可せず、出力リダイレクトも許可しません。/PATHSHELLENV

あなたできるまだ利用可能事前定義済みユーザーに与えられたシェルスクリプトは、(スクリプト実装者の制御下で!)ユーザーが無制限の環境で特定のスクリプトを実行できるようにします。

答え3

このコマンドを使用するchrootと、ユーザーに制限されたルートディレクトリを作成できます。質問概念chrootと使い方を説明します。

アップデート:探していますデジタル海にChroot刑務所が建てられました。、その環境に合った追加文書を提案します。ここにあなたに必要なものに関連するものがあると思います。

Ubuntu 12.04 VPSでテストするためにChroot環境を構成する方法

chroot 刑務所のユーザーに制限された SSH アクセスを許可する方法

これは刑務所に関するもの、どちらフロー自身提案。

関連情報