sudo以外のコマンドでユーザーにパスワードの入力を求める方法を知りたいです。
編集する:
コメントでは明確にはわかりません。たとえば、リクエストを詳しく説明します。たとえば、ターミナルを開き、「ls -l」コマンドを入力した場合は、Enterキーを押してから、ユーザーパスワードsudo以外のすべての注文を希望します。
答え1
通常、シャドウファイルのパスワードハッシュにアクセスできない場合は、システムパスワードデータベースを使用する任意のユーザースペースプログラムに対してこの要求が問題になる可能性があります。これは、シャドウファイルへのアクセスを実行できるようにsetuidビットを設定するsudo
傾向があるためです。chsh
root
[jdoe@centos ~]$ id -u
1001
[jdoe@centos ~]$ perl -E 'say for getpwuid(1001)'
jdoe
x
1001
1001
/home/jdoe
/bin/bash
[jdoe@centos ~]$ sudo perl -E 'say for getpwuid(1001)'
jdoe
$6$P1jejm1i$bo02c/...
1001
1001
/home/jdoe
/bin/bash
[jdoe@centos ~]$
プログラムがユーザーのパスワードハッシュを取得できる場合(システムデータベースまたは$6$P1jejm1i$bo02c/...
上記の出力で編集されたビットである他のソースから)、パスワードを確認するには、既存のcrypt(3)
通話で十分です。。
パスワードプロンプトを表示しないことに加えて、パスワードプロンプトはコアダンプを防ぎ、それ自体がメモリにロックし、その後さまざまなメモリビットをクリーンアップし、さまざまな信号を無視し、setuidが実行されている場合はより厳格なチェックを実行します欲しいかもしれません。 OpenBSDではこれらの手順のいくつかを簡単に実行できますが、他のオペレーティングシステムには「LEGACY」と表示されているものはreadpassphrase(3)
あまりありません。getpass(3)