web-dev-qa-db-ja.com

特定のフォルダにアクセスする権限しか持たないsshユーザーを追加するにはどうすればよいですか?

特定のフォルダにアクセスする権限しか持たないsshユーザーを追加するにはどうすればよいですか?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

musteriというユーザーを作成しました。ホームフォルダとグループを設定しました。ですから、musteriユーザーを "/var/www/xyz.com.tr/musteri"に統合したいと思います。別のフォルダにアクセスしたくありません。

17
Cell-o

Müşterilerに、実際にはシェルを与えずにフォルダーへのファイル転送アクセスを許可したいようです。 binfalseが指摘 のように、シェルが実行するためにシステム上に散在するあらゆる種類のものにアクセスする必要があるため、アクセスが制限されたシェルをユーザーに提供するのは難しいので、これは良いことです。

SFTPに特定のフォルダへのアクセスを許可するには、次のようにします。

  1. システムに新しいグループを追加します(例:「sftponly」)。
  2. このグループへの権限を制限する必要があるシステム上のユーザーを追加します。/bin/trueなどの制限付きシェルを指定することもできますが、必須ではありません。
  3. これらの行でssh設定ファイル(通常は/etc/ssh/sshd_config)を変更します
サブシステムsftp internal-sftp 
 
一致グループsftponly 
 ChrootDirectory%h 
 AllowTCPForwarding no 
 X11Forwarding no 
 ForceCommand internal-sftp 

これにより、SSH内のsftpサブシステムがアクティブになり、そのシステムグループのメンバーがログイン時にそのシステムのみを使用するようになります。また、ホームディレクトリにchrootします。それをChrootDirectory %h/musteri_sftpなどのホームディレクトリのサブフォルダに変更して、残りのシステムファイルを選択できなくても、ホームフォルダの特別なサブフォルダに直接ログインできるようにすることができます。 。

コレイゲルシン。

19
Caleb

私の意見では、これは不可能ではないにしても非常に困難です。ユーザーがSSH経由で接続する場合、少なくともシェルが必要です。あなたの場合はbashです。 /bin/bashを実行するには、/binへのアクセス許可が必要です。 bash自体は/etcから一部を読み取る必要があるため(たとえば、/etc/bash.bashrc)、ユーザーは/etcにもアクセスする必要があります。ユーザーがこのディレクトリにいるだけでなく、ファイルを読みたいと思うかもしれませんが、たとえばvimを実行するには、/usr/binへのアクセスも必要です。
これはほんの少しのデモンストレーションであり、さらにいくつかの依存関係があります。ユーザーが/tmp ..にアクセスできない場合、どうなるかわかりません。

あなたは自分の意図について考えるべきです。誰かにWebサービスの一部への読み取り/書き込みアクセス権を与えたいですか?次に、FTPなどを設定して、特定のディレクトリをこのユーザーにエクスポートします。そのため、SSHアクセスなしでこのファイルを読み書きできます。
もう1つの素晴らしい解決策はリポジトリです。たとえば、GITリポジトリをセットアップして、ユーザーがそれを複製できるようにします。彼はローカルで変更を行い、パッチを送信できます。このパッチを適用するかどうかを決定できます。バグのあるパッチのロールバックも非常に簡単です。

2
binfalse