回答:
これは簡単です。ホームディレクトリにアクセスするために必要なホームディレクトリを設定して新しいユーザーを作成するだけです(このコマンド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サーバーを再起動した後(再起動時に対話型セッションを強制終了することはないため、何かを誤って設定した場合でも安全です;また、ログインできることを確認する前に実行中のセッションを閉じないでください)、すべてが動作するはずです思惑通り。
Subsystem sftp internal-sftp
2番目の例では、Match
ブロックの上に行を記述する必要があります。そうしないと、sshはエラーを出力し、起動しません。
指定されたディレクトリ(たとえば、上位ディレクトリなど)をさまようことができず、使用するコマンドの制限/選択されたセットを持っている制限付きユーザーを作成する最も簡単な方法は、制限付きシェルを使用することです。参照:
最初に、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