特定のコマンドにパスワードを追加する方法

特定のコマンドにパスワードを追加する方法

を使用せずにこれを行う方法を検索してみましたsudo

実際にセキュリティ機能を使用せずにセキュリティ機能を追加できますかsudo

たとえば、

このコマンドを使用するたびにxxd。コマンドを実行するには追加の入力が必要です。それ以外の場合はまったく機能しません。

私がしたことは、xxd文字列をガベージ16進数に変換するコマンドを使用することでした。したがって、デフォルトでは元の文字列に戻ります。私が達成したいのは、xxd -rパスワードを知っている少数の人だけが実行できることを除いて、誰も使用できないようにして、16進値が元の文字列に戻らないようにすることです。

答え1

必要なものを達成するために、以下を提案できます。

  1. 各プログラムのユーザーを作成します。あなたの例では、ユーザーuxxd(グループuxxd)を作成したとします。
  2. 必要なパスワードを入力してください(例:123456)。
  3. ユーザーuxxdにのみ、このプログラムに対する実行権限を付与します。chown uxxd:uxxd xxd chmod 700 xxd
  4. セキュリティを向上させるために、ユーザーuxxdからログインシェルを削除することもできます。 (システムによっては、これを/bin/nologin次のように変更できます。)

これでプログラムを起動するには、次のものが必要です。

su uxxd -c xxd

プログラムがプログラムを起動したユーザーのためにファイルを生成したい場合は、そのユーザーはおそらくuxxdグループに存在する必要があります。これはシステムのデフォルトのumaskによって異なり、変更される可能性があります。

答え2

回答が遅すぎてすみません。

パスワードをサポートしていないため、xxdの代わりに別のコマンドを使用しました。

暗号化するたびにパスワードを入力するopensslコマンドを使用します。

openssl enc -aes-128-cbc -a -salt -pass pass:test123

今すぐ復号化する必要があります。以下を使用する必要があります。

openssl enc -aes-128-cbc -a -d -salt -pass pass:test123

みんなの助けに感謝します。

答え3

これは安全ではありません

に追加できます。/etc/profile

xxd()
{
if [ $1 = "123456" ]; then
xxd ${@:2}
else
echo "sorry command not available"
fi
}

/usr/bin/xxd()
{
if [ $1 = "123456" ]; then
xxd ${@:2}
else
echo "sorry command not available"
fi
}

xxd 123456 -r ... でコマンドを実行できます。

ただし、コピーできないようにバイナリへの読み取りアクセスを制限する必要があります。

すべてのユーザーは/etc/profileを読み、パスワードを見ることもできます。読み取りアクセスなしでパスワードをxxdcmd.shスクリプトに入れて何らかの方法で実行できます。

とにかく、良い解決策はユーザー/グループを持つことに対する提案だと思いますが、他の方法を見つけることも興味深いようです。

乾杯!

PS:これは最終的に達成したい目標のための良い解決策になります。

gpg -c <filename>
gpg -d <filename.gpg>

関連情報