Могу ли я запустить процесс как root без запуска оболочки входа root?

8

Я попытался изменить оболочку входа в систему.

Вот как /etc/passwdвыглядит первая строка (при установке Debian Wheezy):

rootx:0:0:root:/root:/:zsh

Когда я пытаюсь войти как root:

Cannot execute zsh: No such file or directory

Я знаю zsh, доступно:

$ which zsh
/usr/bin/zsh

Хорошо, кажется логичным заменить zshего полным путем. Но как я могу это сделать?

У меня есть еще один пользователь в системе ( user), однако он не имеет привилегий root и sudoне установлен в системе.

Предположим, что по какой-либо причине (шифрование, физический доступ, ...) я не могу загрузиться с live CD для изменения файла.

Я знаю, однако, учетные данные для rootучетной записи.

Мой вопрос: есть ли способ, даже программно, запустить процесс с rootучетной записью, не запуская сначала свою оболочку входа?

rahmu
источник
о чем su? или gksu? что-то вродеsu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
qdii
Разве строка файла passwd не должна быть / usr / bin / zsh? Почему вы положили только строку Zsh?
SLM
@slm Это изменение, которое ОП хочет сделать ...
CVn
1
если предложение @qdii работает (то есть так su -c "<commands>") работает ... не могли бы мы тогда просто использовать, su -c "/bin/bash"чтобы получить работающий bash с пользователем root ?
человечествоANDpeace
1
@humanityANDpeace: это не должно работать. Переданная команда -cзапускается через оболочку пользователя. -sможет использоваться для использования другой оболочки ... только в том случае, если существующая оболочка входа в систему действительна или инициатор является пользователем root.
Мат

Ответы:

4

Иметь права su

Вы можете использовать следующую команду, чтобы изменить оболочку любого пользователя.

su -c "/usr/bin/chsh -s /bin/bash root"

Если у вас есть физический доступ

Во время загрузки Grub вы можете войти в любую систему, если у вас есть консольный доступ и нет пароля, который мешает вам получить доступ к меню Grub.

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

  • Один
  • INIT = / бен / ш
  • 1

Линия будет выглядеть примерно так:

 kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash

В Grub это должно выглядеть примерно так:

       сс личинки

После внесения изменений загрузите ядро ​​(нажмите клавишу b).

Это даст вам временный доступ к системе с оболочкой, где вы можете использовать vi / vim для внесения любых необходимых изменений в ваш /etc/passwdфайл. Просто введите, rebootкогда вы закончите.

SLM
источник
2
Он говорит, что не имеет физического доступа, поэтому, вероятно, он не сможет увидеть меню GRUB.
Ренан
@Renan. ОК, я не получил это с первых нескольких чтений. Он спрятан в строке о том, что "я не могу загрузиться с живого компакт-диска ...", что странно для меня сформулировано.
SLM
4
Ваша suкоманда не будет работать, так как она попытается вызвать оболочку root, которой не существует.
Жиль "ТАК - перестань быть злым"
@ Жиль: Есть другие идеи? Я не вижу способа исправить это без физического доступа. Похоже, мы работаем против того, что система была разработана, чтобы предотвратить на данный момент.
SLM
1
@slm Без sudo, я думаю, корневая учетная запись заблокирована, поэтому требуется физический доступ.
Жиль "ТАК - перестань быть злым"