web-dev-qa-db-ja.com

特定のフォルダにアクセスする権限のみを持つSSHユーザーを作成する

私はSSHをインストールしましたが、Ubuntuにログインするために私のオリジナルのアカウントを使った場合、それはあまりにも多くの権限を持っていることがわかりました。

Ubuntuの特定のフォルダに対する権限のみを持つようにユーザーを制限したいです。そのようなユーザを設定するにはどうすればいいですか。

45
Foolish

これは簡単です。自分のアクセスするために必要なホームディレクトリを設定して、新しいユーザーを作成します(このコマンドはSudoまたはrootシェルで実行する必要があります)。

adduser --home /restricted/directory restricted_user

これにより、ユーザーrestricted_user、ディレクトリ/restricted/directoryが作成され、そのディレクトリに対するアクセス許可が設定され、ユーザーはそれに書き込むことができます。デフォルトでは他のディレクトリに書き込むことはできません。

ディレクトリがすでにある場合は、adduserコマンドに--no-create-homeオプションを追加して実行し、手動で(同様にroot権限で)許可を設定できます。

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

このユーザーが、世界で書き込み可能なディレクトリでもアクセスできないようにする必要がある場合は、2つの方法があります。

1)対話的なシェルセッションをユーザに提供したい場合は、(あなたの/restricted/directoryに)chroot jailを作成する際に このマニュアル に従うことを検討してください。

その後、以下をsshd_configに追加してください。

Match user restricted_user
  ChrootDirectory /restricted/directory

2)あなたが彼に接続の彼のエンドポイントとあなたのホストの間でファイルをコピーすることだけを必要とするならば、すべてははるかに簡単です。 sshd_configの最後にこれらの行を追加してください。

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem       sftp    internal-sftp

次に、先頭にハッシュ(Subsystem sftp /usr/lib/openssh/sftp-server)記号を付けて#をコメントアウトします。

SSHサーバを再起動した後(再起動時に対話型セッションを終了させないので、設定を誤っていても安全です。また、ログインできることを確認する前に実行中のセッションを閉じないでください)。意図した通り。

46
whitequark

与えられたディレクトリ(例えば、上位ディレクトリなど)から移動することができず、使用するコマンドの制限された/選択されたセットを持つことができない制限付きユーザを作成する最も簡単な方法は、制限シェルを使用することです。参照:

http://man.he.net/man1/rbash

まず、rbashというシンボリックリンクを作成します(rootユーザーとして実行します)。

ln -s /bin/bash /bin/rbash

次に、この制限付きシェルで通常のユーザーを作成し、そのホームディレクトリを目的のフォルダに設定します。

useradd -s /bin/rbash -d /home/restricted_folder username

制限付きシェルがなくても、このユーザーをsudoerのリストまたは特別なグループに明示的に追加しないと、デフォルトで制限されます。

制限付きシェルでは、次の操作は許可されていないか、実行されません。

  • cdでディレクトリを変更する

  • shell、PATH、ENV、またはBASH_ENVの値を設定または設定解除する

  • /を含むコマンド名を指定する

  • の引数として/を含むファイル名を指定します。組み込みコマンド

  • 組み込みハッシュ・コマンドの-pオプションの引数としてスラッシュを含むファイル名を指定する

  • 起動時にシェル環境から関数定義をインポートする

  • 起動時にシェル環境からSHELLOPTSの値を解析する

  • >、> |、<>、>&、&>、および>>リダイレクト演算子を使用した出力のリダイレクト

  • シェルを別のコマンドに置き換えるためのexec組み込みコマンドの使用

  • -fおよび-dオプションを指定した組み込みコマンドをenable組み込みコマンドに追加または削除する

  • Enable組み込みコマンドを使用して無効になっているシェル組み込みコマンドを使用可能にする

  • 組み込みコマンドcommandに-pオプションを指定

  • set + rまたはset + o restrictedで制限モードをオフにします。

これらの制限はスタートアップファイルの後で強制されます

さらに/オプションで、使用するコマンドの制限付き/選択済みセットにユーザーを制限するには、そのユーザーに対して読み取り専用の.bash_profileを作成します。

PATH=$HOME/bin

そして、あなたが許可するどんなコマンドでも、そのユーザの〜/ binフォルダにシンボリックリンクします。

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

等.

HTH

4
xpt