Webサーバーユーザーにシェルアクセス権はありませんが、SSHキーまたはディレクトリ変更権限が必要ですか?

Webサーバーユーザーにシェルアクセス権はありませんが、SSHキーまたはディレクトリ変更権限が必要ですか?

以前の質問と考えられる解決策については、新しい質問で他の解決策を探すようアドバイスを受けました。

(これは古いスレッドです。SSHエージェント配信は機能しますが、シェル/権限を持たないsudo -uユーザー名はどうですか?作曲家)

したがって、単純化のために、私のサーバーに(ルートに加えて)2人のユーザーしかいないとしましょう。

あるユーザー(Nalと呼びます)は時間制管理者です。これは彼がsudoersリストにあるという意味です。

他のユーザーはsftp(例:ftp over ssh;)用で、/ srv / webにあるWebサーバー上のサイトを管理します(このユーザーをWebと呼びます)。

Webはこのサイトを管理する以外に何もしないので、シェルアクセス(bin / falseに設定)と特別な権限はありません。

現在、/srv/web/websiteAのディレクトリはWebが所有しており、ここにはComposer(デフォルトでPEARを置き換えるPHP依存関係マネージャ)も活用するLaravel(PHPフレームワーク)インストールがあります。

まだ公的に使用する準備ができていないいくつかの準開発パッケージがあるので、私用のリポジトリに配置します。このリポジトリにアクセスしてgitを介してコンテンツを複製するには(すべてComposerによって自動的に行われます!)、「Web」にはSSHキーが必要です。

ローカルシステムとサーバー上で同じSSHキーセットを管理するのではなく、SSHエージェント転送を介して転送します。

これは「Nal」に非常に便利です。彼は私のプライベートストアにアクセスできます。ところで、/srv/web/websiteAでビルダーを更新しようとすると、「Web」を使用して更新する必要がありますが、その人はシェルアクセスも、SSHキーもなく、更新が失敗します。

私の現在の解決策は次のとおりです。

私はNalとしてログインしました:

cd /srv/web/websiteA

setfacl -R -m u:Web:rwx "${SSH_AUTH_SOCK%/*}"
sudo -u Web SSH_AUTH_SOCK="$SSH_AUTH_SOCK" composer update
setfacl -b "${SSH_AUTH_SOCK%/*}"

そのため、WebがアクセスできるようにSSHキーを引き渡すためにNalソケットの権限を設定し、それを更新して権限を元に戻しました。

これは効果がありますが、最善の解決策ではない可能性があります。

/srv/web/websiteAの権限を775またはそれに似たものに設定したくないので(そしてNalをwww-dataグループに追加する)、ここで質問します。

より良い解決策を考えることができますか?

答え1

さて、提案するには、秘密鍵をコピーして~/.sshサーバーのWebユーザーディレクトリに配置し、-pssh-keygenオプションを使用してWeb秘密鍵のコピーからパスワードを削除することをお勧めします。

鍵ファイルを取得する人は誰でもパスワードを知らなくても使用できるため、セキュリティが失われます。しかし、プロキシ転送や同様の設定なしでgitリポジトリを取得するにはうまくいくはずです。

関連情報