特定のフォルダーにアクセスする権限のみを持つsshユーザーを追加する方法は?


17

特定のフォルダーにアクセスする権限のみを持つsshユーザーを追加する方法は?

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

というユーザーを作成しましたmusteri。ホームフォルダーとグループを設定します。そこで、musteriユーザーを「/var/www/xyz.com.tr/musteri」に統合したいと思います。別のフォルダにアクセスしたくない。


ユーザーに完全なシェルアクセスを許可しますか、それともsftpやrsyncなどのファイルコピープロトコルのみに許可しますか?
ジル 'SO-悪であるのをやめる'

後者の場合はscponly、シェルとして、おそらくchrootモードで動作してそのディレクトリへのアクセスを制限し、他の場所にアクセスしたくない場合があります。
シャドゥール

1
@Gilles-sftpでアクセスしたい。しかし、私はそれが別のフォルダにアクセスしたくない。
Cell-o

1
@ Cell-o:シェルではなく、いくつかのファイル転送プロトコルのみが必要な場合は、chroot plus scponlyまたはrssh(Google scponly chrootまたはrssh chrootハウツーへのリンク)を使用します。
ジル 'SO-悪であるのをやめる'

ACLを使用してはどうですか?
fpmurphy

回答:


19

あなたは、実際にそれらにシェルを与えることなく、フォルダへのファイル転送アクセスをあなたのミュシュテラーに与えたいようです。binfalseが指摘したように、シェルは実行するためにシステム上に散在するあらゆる種類のものにアクセスする必要があるため、アクセスを制限したシェルをユーザーに与えることは難しいため、これは良いことです。

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

  1. 「sftponly」などの新しいグループをシステムに追加します。
  2. このグループへの制限された権限を持つ必要があるユーザーをシステムに追加します。/ bin / trueのような制限されたシェルを提供することもできますが、必須ではありません。
  3. /etc/ssh/sshd_configこれらの行を使用してssh構成ファイルを変更します(通常)。
    サブシステムsftp internal-sftp

    一致グループsftponly
        ChrootDirectory%h
        AllowTCPForwardingなし
        X11転送なし
        ForceCommand internal-sftp

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

コレイ・ゲルシン。


Öncelikleteşekkürler。;)あなたが言ったように、私はSFTPを設定しましたが、iptablesに関して問題があります。ここに私のルールがあります。-> RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
Cell-o

1
ビルシェイ・デイル。FTPはポート21を使用しますが、SFTPはSSHチャネル上で実行されるftpの ようなプロトコルであるため、デフォルトでは22のSSHポートを使用します
Caleb

あなたも見つけ、任意の既存のサブシステムのコマンドアウトコメントすべきであることに注意してください(例:サブシステムSFTPの/ usr / libに/のopenssh / SFTPサーバー)
CnrL

私の問題を解決し、いくつかの便利なトルコ語のフレーズを学びました!ボーナス!
エイマージェント

2

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

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


rbashまさにこれを行うように設計されています。
バハマ

これは制限付きシェルと呼ばれます。しかし、Cell-oはファイル転送のみを許可するため、適切なツールではありません。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.