LINUX.ORG.RU
ФорумAdmin

Как выполнить команду от root без интерактивного ввода пароля?

 , ,


0

2
IPB:~ mobile$ sw_vers -productVersion
8.4.1
IPB:~ mobile$ uname -a
Darwin IPB 14.0.0 Darwin Kernel Version 14.0.0: Wed Aug  5 19:26:26 PDT 2015; root:xnu-2784.40.6~18/MarijuanARM_S5L8942X iPad2,5 arm P105AP Darwin
IPB:~ mobile$ su --help
Usage: su [OPTION]... [-] [USER [ARG]...]
Change the effective user id and group id to that of USER.

  -, -l, --login               make the shell a login shell
  -c, --command=COMMAND        pass a single COMMAND to the shell with -c
  -f, --fast                   pass -f to the shell (for csh or tcsh)
  -m, --preserve-environment   do not reset environment variables
  -p                           same as -m
  -s, --shell=SHELL            run SHELL if /etc/shells allows it
      --help     display this help and exit
      --version  output version information and exit

A mere - implies -l.   If USER not given, assume root.

Report su bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report su translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'su invocation'
IPB:~ mobile$ sudo
-sh: sudo: command not found
IPB:~ mobile$ echo "alpine" | su -c id
Password:
uid=0(root) gid=0(wheel) groups=0(wheel),1(daemon),2(kmem),3(sys),4(tty),5(operator),8(procview),9(procmod),20(staff),29(certusers),80(admin)
IPB:~ mobile$ echo alpine | su -c id
Password:
uid=0(root) gid=0(wheel) groups=0(wheel),1(daemon),2(kmem),3(sys),4(tty),5(operator),8(procview),9(procmod),20(staff),29(certusers),80(admin)
IPB:~ mobile$ echo -e alpine | su -c id
Password:
uid=0(root) gid=0(wheel) groups=0(wheel),1(daemon),2(kmem),3(sys),4(tty),5(operator),8(procview),9(procmod),20(staff),29(certusers),80(admin)
IPB:~ mobile$ 

Всегда запрашиваетcя интерактивный ввод пароля, который надо вбивать с клавиатуры. sudo нет, есть только su sudo, к сожалению, поставить нельзя. параметров su, вроде -kSs вовсе нет. Есть только то, что есть (выше). Как можно выполнить команду от имени root, пароль root известен и он указан (стандартный - alpine), и он подходит.


Ответ на: комментарий от deadNightTiger

Потому что для установка sudo, как пример, это и есть та вожделенная команда, которую надо выполнить от имени root. Если интересно, то это (вверху) пример на устройсте, на котором всё зашибись. А на другом устройстве на котором не всё зашибись как раз и надо умудриться выполнить скриптец с командой от root, но, блин, консоль утрачена. Однако, скрипты исполняются. Но от имени пользователя. Понятно уточнил?

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

Ещё раз. Для того, чтобы установить sudo надо подать apt-get install sudo от имени root. А эта команда запрашивает интерактивный ввод пароля. У меня нет консоли. шелл отключился, терминала нет. Скрипты гоняю из гуя, они выполняются, но от имени простого пользователя. Как интерактивности избежать?

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

Серьёзно?
IPB:~ mobile$ echo 'test'|read test_var
IPB:~ mobile$ echo $test_var
IPB:~ mobile$

Нет, там всё правильно. Ты забыл про subshell

$ echo 'test' | { read test_var ; echo $test_var; }
test

Kroz ★★★★★
()

А там expect есть?

$ cat script.sh
#!/usr/bin/expect

spawn /bin/su
expect "Password: "
send "super_password\n"

# Now wait for a prompt and send the command to run
expect "$"
send "whoami\n"
expect "$"
send "exit\n"
Суть, думаю, понятна.

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

Ниже по ссылке то, что есть. Там тоже самое есть, что и на рабочем девайсе. За исключением «левых» приложений вроде филзы или консольного «фотографа», но это мелкие отличия.

expect - нет

https://drive.google.com/drive/folders/1MmwoxHc_3kV6a_J2VxczQFEqrMkjJJGm?usp=sharing

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

Хорошо бы... Но и тут засада:

IPB:~ mobile$ echo alpine | script -c "su -c id"
script: illegal option -- c
usage: script [-akq] [-t time] [file [command ...]]

IPB:~ mobile$ script --help             
script: illegal option -- -
usage: script [-akq] [-t time] [file [command ...]]

Пытаюсь найти что тут значит этот -k ... Пока безуспешно. -с точно нет. --command тоже.

LaLe
() автор топика

Пальцем в небо. Если есть возможность. Взять пакет expect или sshpass, скопировать в хомяк, развернуть, и запускать с абсолютным путем оттуда.

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

А вот так работает. Огромное спасибо.

По поводу expect. Пока он отсутствует. Я вообще не уверен, что он хоть когда-нибудь был для обсуждаемого устройства:

IPB:~ root# apt-get install expect
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Couldn't find package expect
IPB:~ root# aptitude search expect
p   com.hackyouriphone.quitunexpectedly                                                               - be notified when an app has crashed or quit unexpectedly                                                   
p   com.iphonemodding2.thehobbitanunexpectedjourney                                                   - The Hobbit - An Unexpected Journey theme.                                                                  
p   com.wrightscs.quitunexpectedly                                                                    - be notified when an app has crashed or quit unexpectedly                                                   
p   repo.biteyourapple.net.quitunexpectedly                                                           - be notified when an app has crashed or quit unexpectedly                                                   
IPB:~ root# 
ssh - это есть. Но пока по неизвестной причине рухнул. Вот я и решил разобраться и не смог залогиниться. Ещё раз огромное спасибо.

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