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


47

SSHをインストールしましたが、元のアカウントを使用してUbuntuにログインすると、権限が多すぎます。

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

回答:


49

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

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)ユーザーに対話型のシェルセッションを提供する場合は、このマニュアルに従ってchroot jailを作成することを検討してください(で/restricted/directory)。

その後、以下を以下に追加します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サーバーを再起動した後(再起動時に対話型セッションを強制終了することはないため、何かを誤って設定した場合でも安全です;また、ログインできることを確認する前に実行中のセッションを閉じないでください)、すべてが動作するはずです思惑通り。


1
試しましたが、まだCDを.​​.上層ディレクトリを閲覧できるようです。そして私は、上のディレクトリにVI A.TXTを使用し、それショー:プレスを入力またはコマンド継続する、と私はviのをやめることができない
愚か

1
ユーザーにsshfsアクセスのみが必要な場合、オプション#2を使用できますか?
フリッカーフライ

1
書き込み許可がないことを除いて、すべて正常に動作します。この制限されたディレクトリに書き込み許可を設定するにはどうすればよいですか。chmod 775を使用すると、ユーザーはもうログインできません。
私の名前は

3
Subsystem sftp internal-sftp2番目の例では、Matchブロックの上に行を記述する必要があります。そうしないと、sshはエラーを出力し、起動しません。
Tik0

1
ネタバレ注意:SCPでは動作しません
自転車

5

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

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の値の設定または設定解除

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

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

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

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

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

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

  • exec builtinコマンドを使用して、シェルを別のコマンドに置き換えます

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

  • enable builtinコマンドを使用して、無効なシェル組み込みコマンドを有効にする

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

  • セット+ rまたはセット+ o制限付きで制限モードをオフにします。

これらの制限は、スタートアップファイルの後に適用されます

さらに/オプションで、使用するコマンドの制限/選択されたセットにユーザーを制限するには、そのユーザーに対して読み取り専用の.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


/ rootディレクトリを含むファイルシステム上の任意のファイルを見つけることができ、これらのファイルを読み取ることができます。ユーザーフォルダー外の表示やネットワークパケットのキャプチャ、/ var / logの内容の読み取りなどのアクセスをさらに制限する方法について
疑問に思う
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.