LINUX.ORG.RU

Проверка верности пароля от пользователя


0

1

Проверка пароля sudo.

Необходимо в sh,bash каким то сказочным образом проверить, пароль из shadow. Нужно это для того чтобы как говорится «от идиота». Есть набросаный пример. Однако для его использования нужен верный пароль судо.

_check_passwd()
{

printf "$GRN\nВведите административный пароль(пароль для входа в систему): \n$NON"
read –s test_sudo
printf "$GRN\nВВедите пароль еще раз: \n$NON"
read –s test_sudo_idiot

arg_f=$(echo $test_sudo_idiot | sudo –S cat /etc/shadow* | grep `whoami` | awk '{split($1,a,":"); print a[2] }' | awk '{split($1,a,"$"); print a[2] }')
arg_sec=$(echo $test_sudo_idiot | sudo –S cat /etc/shadow* | grep `whoami` | awk '{split($1,a,":"); print a[2] }' | awk '{split($1,a,"$"); print a[3] }')
encrypt=$(python –c "import crypt, getpass, pwd; print crypt.crypt('$test_sudo_idiot', '\$$arg_f\$$arg_sec\$')" | awk '{split($1,a,"$"); print a[4] }')

if [ "$test_sudo" == "$test_sudo_idiot" ]; then
echo $encrypt
else
echo "Нах"
fi


}

Прочитать из файла, доступного только руту на чтение, проверить не было-ли ошибок? Например, из /dev?

chenger ★★
()
Ответ на: комментарий от Lavos

А есть возможность например брать пароль из переменной.

К примеру:

printf "$GRN\nВведите административный пароль(пароль для входа в систему): \n$NON"
read –s test_sudo
printf "$GRN\nВВедите пароль еще раз: \n$NON"
read –s test_sudo_idiot
Взял я значит пароль у Юзера, сохранил, и решил его проверить Вашей комбинацией(очень кстати помогла). Ведь от меня ждут ввода. Можли использовать значение переменной и подставить в строку ввода? Минуя «глаза» пользователя.

iandriyanov
() автор топика
Ответ на: комментарий от iandriyanov

Можно поюзать expect, например как-нибудь так:

#!/bin/bash

USER=`whoami`
PASSWD="secret"

expect -c 'log_user 0; spawn su -c /bin/true $::env(USER); expect Password:; send "$::env(PASSWD)\n"; interact; catch wait result; exit [lindex $result 3]'

if [ $? -eq 0 ];
then
        echo ok
else
        echo not ok
fi

Lavos ★★★★★
()
Ответ на: комментарий от iandriyanov

Взял я значит пароль у Юзера, сохранил
сохранил

Сохранил пароль? Храни нас небо от таких безопасников.

legolegs ★★★★★
()
Ответ на: комментарий от iandriyanov

Минуя «глаза» пользователя.

stty_orig=`stty -g`
stty -echo
read secret
stty $stty_orig
Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от legolegs

На все воля Божия. А вам бы матчасть изучить, и убедится в том что за пределы скрипта не одна переменная не выйдет. Ок!?

iandriyanov
() автор топика
Ответ на: комментарий от Eddy_Em

С sudo еще проще, оно умеет брать пароль из stdin, костылить expect не нужно.

PASSWD="secret"
echo $PASSWD | sudo -S /bin/true && echo ok
Lavos ★★★★★
()
Ответ на: комментарий от Eddy_Em

А я откуда знаю? Я показал как это можно сделать. Мотороллер не мой.

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

sudo не. Этот вариант готовый и уже есть. Необходимость была именно в проверке того что человек ввел в $PASSWD с тем что хранится с солью в хэше shadow

iandriyanov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.