타사 응용 프로그램을 사용하지 않고 특정 프로그램을 실행하기 위해 사용자에게 암호를 입력하도록 요구하는 가장 깨끗한 방법은 무엇입니까? 예를 들어, 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
또는 루트 사용자로 실행하십시오.
$ 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