コードが署名されていることを確認できるシェルはありますか?

コードが署名されていることを確認できるシェルはありますか?

今週、PowerShellで遊んでスクリプトを実行するには、スクリプトに署名する必要があることがわかりました。 bashスクリプトの実行防止に関して、Linuxに同様のセキュリティ機能がありますか?

私が知る限り、同様の機能は特定のキーを必要とするSSHだけです。

答え1

はい、いいえ。

Linuxソフトウェア配布は、Windowsソフトウェア配布とは少し異なる動作をします。 (非埋め込み)Linuxの世界でソフトウェアを配布する主な方法は、ディストリビューション(Ubuntu、Debian、RHEL、Fedora、Archなど)を使用することです。約10年間、すべての主要なディストリビューションは体系的にパッケージに署名しました。

ソフトウェアが独立して配布される場合、ソフトウェアの配布方法を決定するのはベンダーです。良いベンダーは、主要ディストリビューションと互換性のあるパッケージソースを提供し(すべてのLinuxに統一されたデプロイメカニズムはありません。ソフトウェアディストリビューションはディストリビューション間の主な差別化ポイントの1つです)、ベンダーのキーで署名されます。サードパーティのベンダーの署名機関として機能するLinuxディストリビューションはほとんどなく、CanonicalはUbuntuパートナーと一緒にこれを行いますが、サプライヤーはほとんど含まれていません。使うと思います。鍵を信頼するかどうかを判断するのはユーザーの役割です。

デフォルトの実行可能ファイル、データファイル、または複数のファイルで構成されるパッケージ内の単一スクリプトで構成されるパッケージをソートする特別なメカニズムはありません。また、パッケージ検証はスクリプトの実行と完全に直交する問題であるため、一般的なスクリプトソルバーには署名検証機能が組み込まれていません。

Windowsでは、ソースとしてファイルに注釈を付け、「ローカル」ではなく「ダウンロード」ソースとしてファイルを実行するには、ユーザーの確認が必要だと思います。 Linuxには実際には同様のメカニズムはありません。最も近いのは実行権限です。ダウンロードしたファイルには実行権限がないため、ユーザーはそれを明示的に有効にする必要があります(chmod +xコマンドラインまたはファイルマネージャのそれに対応するものから)。

答え2

ユーザーのスクリプト実行機能をロックしたい場合は、この機能をsudo使用できます。実行前に確認するスクリプト/実行ファイルのハッシュを指定できます。したがって、署名と同じではありませんが、少なくともsudoerを変更せずにスクリプトが変更されていないことを基本的に保証します。digest
sudoerssudo

コマンド名の前にDigest_Specが付いている場合、指定されたSHA-2ダイジェストを使用して解決できる場合にのみ、コマンドは正常に一致します。これは、sudoを呼び出すユーザーにコマンドまたはその親ディレクトリへの書き込みアクセス権がある場合に便利です。サポートされるダイジェスト形式は sha224、sha256、sha384、sha512 です。文字列は16進形式またはbase64形式で指定できます(base64はより簡単です)。 openssl、shasum、sha224sum、sha256sum、sha384sum、sha512sumなど、16進形式でSHA-2ダイジェストを生成するためのいくつかのユーティリティがあります。

http://www.sudo.ws/man/1.8.13/sudoers.man.html

答え3

Linuxは、デジタル署名に基づいてbashスクリプトの実行を制限する機能を提供しません。

バイナリ実行可能ファイルを検証するタスクがあります。バラよりhttps://lwn.net/Articles/488906/情報取得中です。

答え4

Linuxディストリビューションでは通常ヌプグ。あなたが望むのは、引数スクリプトに対して分離されたgpg署名を確認し、検証が成功した場合にのみスクリプトを実行し続ける単純なbashラッパーのようです。

#!/bin/sh
gpgv2 $1.asc && bash "$@"

関連情報