●
Arch Linuxでsudoを使用するときにasの代わりにパスワード文字をどのようにエコーしますか *
?
インストールして使用してnerd-fonts
います。alacritty
端末エミュレータ。
visudoを使用してsudoersファイルを変更し、次を使用してエコー文字を有効にしました。
Defaults env_reset,pwfeedback
ベストアンサー1
sudo
自分だけのパスワード入力ルーチンで、*
ハードコーディングされているただし、sudo
グラフィカルコマンド(など)を含む外部コマンドを使用してパスワードを入力するか、ssh-askpass
直接/usr/libexec/seahorse/ssh-askpass
実装することもできます。
これ*
はASCIIセットの一部であり、システム内のすべてのロケールで一定でなければなりませんが、非常に●
少ない数の文字セットでは見つからず、そのエンコーディングはロケールによって変更されます。 UTF-8では3バイトにエンコードされるため、マルチバイト文字を処理してそれをユーザーのロケールにエンコードするための●
ルーチンが必要です。
たとえば、次のように書くことができます。
#! /usr/bin/perl
use Term::ReadPassword;
use Encode::Locale;
use Encode;
$Term::ReadPassword::USE_STARS = 1;
my $bullet = encode(locale => "\N{BLACK CIRCLE}");
$Term::ReadPassword::STAR_STRING = $bullet eq '?' ? '*' : $bullet;
$pass = read_password(join " ", @ARGV);
if (defined($pass)) {
print "$pass\n";
} else {
exit(1);
}
実行export SUDO_ASKPASS=/path/to/that-script
またはPath askpass /path/to/that-script
追加し/etc/sudo.conf
てsudo
実行します-A
。
$ sudo -A id -u
[sudo] password for you: ●●●●●●●●●●●●●●
0
私が知る限り、Term :: ReadPasswordはマルチバイトをサポートしていません。このプロンプトでマルチバイト文字を入力すると、文字内のバイト数だけ箇条書きが表示されます。それでもまだうまくいきます。