サードパーティのアプリケーションを使用せずに特定のプログラムを実行するためにユーザーにパスワードを入力する必要がある最もクリーンな方法は何ですか?たとえば、firefox
端末から入力して起動すると、パスワードの入力を求められ、正しいパスワードを入力した場合にのみ実行されます。これはユーザー権限の使用に影響を与える可能性があります。
答え1
パスワードを作成してexampleuser
設定してください。
次にfirefox
権限をに変更し、700
Fireforeをown
に変更しますexampleruser
。その後、Firefoxを実行するか、root
コマンドをexampleuser
使用できます。sudo
su
たとえば、
sudo useradd exampleuser
sudo passwd exampleuser
sudo chown exampleuser:exampleuser ../firefox
sudo chmod 700 ../firefox
テスト:
$ ../firefox
bash: ../firefox: Permission denied
$ su - exampleuser -c ../firefox
Password: #<-- type exampleuser password
または root ユーザーとして実行します。
$ sudo ../firefox
[sudo] password for username: #<-type root password
答え2
このスクリプトを使用してダイアログボックスでパスワードを要求し、アプリケーションを起動します。パスワードが正しい場合は、アプリケーションのフルパスが復号化され実行されます。
このスクリプトを使用する前に、コンピュータでアプリケーションを非表示にしてから、このコマンドを使用してアプリケーションのフルパスを暗号化してみてください。パスワードを要求し、フルパスBase64でパスワードを暗号化してエンコードします。
echo -n "/Path/To/Your/Application" | openssl enc -aes256 -a -pbkdf2
このスクリプトでは、yadがダイアログボックスを表示する必要があります。
sudo apt install yad
#!/bin/bash
#
# Require yad:
# $ sudo apt install yad
#
# Before use it, use these command to get the full path of your application, encrypted and coded in base64, with your password:
# $ echo -n "/Path/To/Your/Application" | openssl enc -aes256 -a -pbkdf2
function main
{
password=$(yad --text-align=center --text="Password" --entry --entry-text="" --hide-text --fixed --title="" --button=OK)
data="xxx" # replace xxx by the full path of your app encrypted and coded in base64 with the upper command
MyApp=$(echo "$data" | openssl enc -aes256 -d -a -pbkdf2 -pass pass:"$password")
$password=""
# test if file exist
if [ -a $MyApp ]
then
$MyApp # run your application
exit 0
else
notify-send "Incorrect" "$x/3"
fi
}
# limit try
x=1
while [ $x -le 3 ]
do
main
x=$(( $x + 1 ))
done
exit 0