特定のディレクトリにのみ接続できるユーザーの作成

特定のディレクトリにのみ接続できるユーザーの作成

何人かの友人のためにSSHフォルダを作成しました。 SSH経由でログインするユーザーを作成しましたが、そのユーザーが接続されています。~接続できるフォルダをどのように設定しますか?

私のUSBドライブを指す/usbdrv/というディレクトリがあります。

PS:親ディレクトリに入ることはできません。

答え1

ユーザーのホームディレクトリを設定すると、デフォルトでそのディレクトリが決定されます。ファイルシステムの残りの部分はユーザーに表示されます。

アカウントをファイル転送に制限し、特定のディレクトリツリーにのみアクセスできるようにするには、ユーザーを「刑務所」にする必要があります。これはOpenSSH基本サポートfriends;たとえば、これらの友人(そしてそれらだけ)をグループに入れると:

Match Group friends
ForceCommand internal-sftp
ChrootDirectory %h
#AuthorizedKeysFile /etc/sshd/friends/%u.authorized_keys

ChrootDirectoryこれらのユーザーをホームディレクトリに制限します。すべて同じホームディレクトリを持っている場合は、すべて同じSSHキーを使用できますが、これはおそらく望むものではありません。AuthorizedKeysFileこれらのユーザーが自分の認証キーをアップロードできないようにするには、この行のコメントを外します。

認証の観点からこれらのユーザーを独立して処理し、自分のキーを操作できないようにしたり、同じディレクトリツリーへのすべてのアクセス権を付与したい場合は、特定のディレクトリを設定できます。

Match Group friends
ForceCommand internal-sftp
ChrootDirectory /pub

これらのユーザーがファイルシステムのさまざまな部分にアクセスできるようにするには、バインドマウントを使用して結合ビューを作成できます。

ForceCommand internal-sftpこれらのユーザーをSFTPアクセスのみに制限します(例:Filezillaを使用したりSSHFSを使用したり)。他の方法(rsyncなど)を許可するには、次のものが必要です。より高度な構成、例えば、RSSH(読むchrootガイド)。

答え2

特にユーザーを作成しない限りいいえホームディレクトリ、標準ディレクトリはに作成されます/home/username。このディレクトリは、~現在のシェルまたはSSHユーザーの適切な場所へのリンクにすぎません。/home/username

たとえば、cd ~rootまたは指定されたユーザーとして実行されている場合、このコマンドはユーザーを別の場所に送信します。

ユーザーを指定できます。ユーザーのホームディレクトリを作成するか、別のホームディレクトリに移動します。。ユーザーの現在のホームディレクトリを変更するには、rootとして次のコマンドを実行します。

usermod -m -d /path/to/new/home/dir username

新しいディレクトリ構造に対する正しい所有権と権限があることを確認してください。

また、選択できますデフォルトのSSHディレクトリの変更。しかし、IMHOがより安全に見えるので、ホームディレクトリを移動したいかもしれません。

関連情報