Аутентификация Рут в sh скрипте

Модератор: Модераторы разделов

TehnoMag
Сообщения: 3
ОС: Fedora 11

Аутентификация Рут в sh скрипте

Сообщение TehnoMag »

Здравствуйте. Пишу sh скрипт для установки конфигов.
Т.к. скрипт будет применяться не только у меня на машине, то сделал GUI через KDialog.

Так вот. Нужно организовать получение прав доступа руут, причем пароль брать из KDialog --password

пробовал так

Код: Выделить всё

pass=`kdialog --title "Title" --password --text 'password'`

echo "$pass" | su -c "cmd"


выводит ошибку
"standard in must be a tty"

подскажите пожалуйста как избавиться от нее.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Аутентификация Рут в sh скрипте

Сообщение nesk »

Может стоит использовать sudo для выполнения конкретной команды без пароля?

Или вот! У sudo есть опция -S для передачи пароля через stdin

для su гугл нашел вот такое решение:
su username -c "cd; pwd; ls" << __eof
password
__eof

Проверить не на чем.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
TehnoMag
Сообщения: 3
ОС: Fedora 11

Re: Аутентификация Рут в sh скрипте

Сообщение TehnoMag »

sudo использовать нет возможности, ибо скрипт пишеться для начинающих линксойдов (не думаю что первые часа два они смогут добавить себя в судорес), а если я правельно помню, то судорес также требует рутовских прав оО.

для su гугл нашел вот такое решение:
su username -c "cd; pwd; ls" << __eof
password
__eof


странная конструкция оО. немогу понять при чем тут прверка конца файла?

еще раз скажу: мне нужно в получить права доступа рут, используя пароль, введенный в kdiaog.
Щас погуглил немножко и нашел, что та ошибка, которая у меня аозникает являеться ошбикой безопасности (на хфкер.ру писали, что эта ошибка возникает при попытки получения доступа из сырого псевдо терминала)
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Аутентификация Рут в sh скрипте

Сообщение Rootlexx »

TehnoMag писал(а):
05.09.2009 16:21
еще раз скажу: мне нужно в получить права доступа рут, используя пароль, введенный в kdiaog.

Почему не использовать kdesu?
И пользуйтесь поиском, этот вопрос уже обсуждался.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Аутентификация Рут в sh скрипте

Сообщение nesk »

TehnoMag писал(а):
05.09.2009 16:21
еще раз скажу: мне нужно в получить права доступа рут, используя пароль, введенный в kdiaog.
Щас погуглил немножко и нашел, что та ошибка, которая у меня аозникает являеться ошбикой безопасности (на хфкер.ру писали, что эта ошибка возникает при попытки получения доступа из сырого псевдо терминала)


Используйте
kdesu [-u username] [options] command

Он отстраивает псевдотерминал.
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
TehnoMag
Сообщения: 3
ОС: Fedora 11

Re: Аутентификация Рут в sh скрипте

Сообщение TehnoMag »

Почему не использовать kdesu?


спасибо, совершенно забыл про эту комманду=)
Спасибо сказали:
Аватара пользователя
Fangelion
Сообщения: 112
ОС: Debian GNU/Linux

Re: Аутентификация Рут в sh скрипте

Сообщение Fangelion »

sudo вполне подходит для даных целей. можно логинится под любым пользователем

Код: Выделить всё

[user@debian]:~$ sudo -u username -p password command

и не надо городить никаких гуевых логинменеджеров
Спасибо сказали:
Аватара пользователя
begin2009
Сообщения: 349
Статус: Ламер со стажем
ОС: без глюков

Re: Аутентификация Рут в sh скрипте

Сообщение begin2009 »

Я, конечно дико извиняюсь, но в баше я не очень. Тема меня заинтересовала и попробовал.

Код: Выделить всё

#!/bin/bash
su root -c "cd; pwd; ls" << __eof
password
__eof

Результат: "standard in must be a tty"

Код: Выделить всё

#!/bin/bash
kdesu -u root command mc

Результат: После выхода гуевого диалога в терминале имеем:
kdesu (kdelibs): [process.cpp:326] Running `/bin/su'
kdesu (kdelibs): [su.cpp:240] Read line <Password: >
kdesu (kdelibs): [process.cpp:326] Running `/bin/su'
kdesu (kdelibs): [su.cpp:240] Read line <Password: >
kdesu (kdelibs): [process.cpp:421] Child pid 5936
kdesu (kdelibs): [su.cpp:240] Read line <>
kdesu (kdelibs): [su.cpp:240] Read line <kdesu_stub>
kdesu (kdelibs): [process.cpp:326] Running `/bin/su'
kdesu (kdelibs): [su.cpp:240] Read line <Password: >
kdesu (kdelibs): [process.cpp:421] Child pid 5944
kdesu (kdelibs): [su.cpp:240] Read line <>
kdesu (kdelibs): [su.cpp:240] Read line <kdesu_stub>
И глухой висяк, вплоть до ctrl+C.

Код: Выделить всё

#!/bin/bash
sudo -u root -p password command mc

Результат: "rex is not in the sudoers file. This incident will be reported."

Что есть Истина? (П. Пилат)
Пессимист видит темный туннель, оптимист видит свет в конце туннеля, реалист видит свет, туннель и поезд.
И только машинист видит этих трех идиотов, сидящих на рельсах.
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Аутентификация Рут в sh скрипте

Сообщение Portnov »

Ну, по второму - ясно же, должна быть соответствующая запись в /etc/sudoers (man 5 sudoers).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Аутентификация Рут в sh скрипте

Сообщение watashiwa_daredeska »

begin2009 писал(а):
09.09.2009 23:49

Код: Выделить всё

#!/bin/bash
kdesu -u root command mc

И глухой висяк, вплоть до ctrl+C.

Код: Выделить всё

kdesu -u root konsole -e mc
Спасибо сказали:
Аватара пользователя
begin2009
Сообщения: 349
Статус: Ламер со стажем
ОС: без глюков

Re: Аутентификация Рут в sh скрипте

Сообщение begin2009 »

Код: Выделить всё

kdesu -u root konsole -e mc
Ругается.

А вот идет!!!!!!!

Код: Выделить всё

#!/bin/bash
su -c mc


Выходит mc под рутом.

А вот собственно что надо топистартеру:

Код: Выделить всё

#!/bin/bash
kdesu -c oowriter

Гуевый запуск опеновского редактора под рутом. То?
Пессимист видит темный туннель, оптимист видит свет в конце туннеля, реалист видит свет, туннель и поезд.
И только машинист видит этих трех идиотов, сидящих на рельсах.
Спасибо сказали:
Аватара пользователя
tmp13
Сообщения: 986
ОС: openSuse 11.2

Re: Аутентификация Рут в sh скрипте

Сообщение tmp13 »

Цитата
для su гугл нашел вот такое решение:
su username -c "cd; pwd; ls" << __eof
password
__eof


странная конструкция оО. немогу понять при чем тут прверка конца файла?

это не проверка конца файла... это митировать стандартный ввод пока не встретится
Красных бей и белых бей!
Вот вам иерархия!
Я люблю тебя за это, милая моя,
Разудалая, хмельная мать моя – Анархия!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Аутентификация Рут в sh скрипте

Сообщение drBatty »

nesk писал(а):
05.09.2009 16:02
для su гугл нашел вот такое решение:
su username -c "cd; pwd; ls" << __eof
password
__eof

это не решение, это дыра. причём уже давно закрытая. (наверное лет 20 как)
не жрёт su ничего, кроме истинного tty (только ручками). Впрочем и sudo тоже.

TehnoMag писал(а):
05.09.2009 15:33
выводит ошибку
"standard in must be a tty"

подскажите пожалуйста как избавиться от нее.

это не баг, а фича. используйте sudo.

Код: Выделить всё

user  ALL=NOPASSWD:/usr/bin/команда
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Аутентификация Рут в sh скрипте

Сообщение frp »

Есть ведь empty-expect. Он создает pty и два FIFO-канала. В один можно передавать ввод, другим получать вывод.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Аутентификация Рут в sh скрипте

Сообщение drBatty »

frp писал(а):
12.09.2009 22:05
Есть ведь empty-expect. Он создает pty и два FIFO-канала. В один можно передавать ввод, другим получать вывод.

по соображениям безопасности su контролирует такое. т.е. проверяет, является-ли ввод - терминалом, или чем-то другим(например FIFO), если-бы проверки не было, стало-бы возможно подобрать пароль (просто тупым перебором, или не тупым). А так подбирать приходится ручками, что очень сложно...
su очень опасная команда - например можно зайти на сервер по ssh как юзер, затем выполнить su, и делать с сервером что угодно...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: Аутентификация Рут в sh скрипте

Сообщение frp »

drBatty писал(а):
14.09.2009 02:05
по соображениям безопасности su контролирует такое. т.е. проверяет, является-ли ввод - терминалом, или чем-то другим(например FIFO), если-бы проверки не было, стало-бы возможно подобрать пароль (просто тупым перебором, или не тупым). А так подбирать приходится ручками, что очень сложно...

В случае empty ввод является терминалом и пароль в su вполне можно ввести при помощи empty (только что проверено).
И написать программу для подбора паролей - не проблема.
drBatty писал(а):
14.09.2009 02:05
su очень опасная команда - например можно зайти на сервер по ssh как юзер, затем выполнить su, и делать с сервером что угодно...

Использование su можно запретить. Самый простой и прямой путь - создать группу и для самого файла /bin/su дать права 750 и присвоить этот файл какой-нибудь группе, в которой будут все, кому разрешен доступ к /bin/su
Спасибо сказали: