2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

特定のフォルダにしかアクセスできないSSHユーザを作成する

SSHをインストールしたのですが、元のアカウントでUbuntuにログインするとパーミッションが多すぎることがわかりました。

Ubuntuの特定のフォルダのパーミッションのみを持つようにユーザーを制約したいです。そのようなユーザーを設定するにはどうすればいいのでしょうか?

回答 (2)

53
53
53
2010-06-06 12:49:32 +0000

これは簡単です。新しいユーザを作成し、そのユーザがアクセスできるホームディレクトリを設定するだけです (このコマンドは 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) ユーザにインタラクティブなシェルセッションを提供したい場合は、このマニュアル の 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 サーバを再起動した後 (再起動時に対話型セッションを kill しないので、何か設定を間違えても安全です。

5
5
5
2017-11-04 02:03:42 +0000

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

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

ln -s /bin/bash /bin/rbash

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

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

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

Restricted Shellを使用すると、以下のことが禁止されるか、実行されません。

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

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

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

  • .builtin コマンドの引数として / を含むファイル名を指定する

  • .builtin コマンドの引数として / を含むファイル名を指定する

  • … builtinコマンド

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

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

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

  • 起動時にシェル環境からSHELLOPTSの値をリダイレクトする

  • 出力をリダイレクトすることを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定することを指定する。

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

  • enable builtinコマンドに-fと-dオプションを指定して builtinコマンドを追加または削除する

  • 無効なシェル・ビルドインを有効にするために enable builtinコマンドを使用する

  • command builtinコマンドに-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

など。

0x1&

など