web-dev-qa-db-ja.com

rootのログインシェルを起動せずにrootとしてプロセスを起動できますか?

ログインシェルを変更しようとしました。

/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をフルパスに置き換えるのは理にかなっているようです。しかし、どうすればそれを行うことができますか?

システムにもう1人のユーザー(user)がいますが、root権限がなく、Sudoがシステムにインストールされていません。

何らかの理由(暗号化、物理アクセスなど)で、ライブCDから起動してファイルを変更できないと仮定します。

ただし、rootアカウントの資格情報は知っています。

私の質問は、プログラムでさえ、最初にログインシェルを起動せずにrootアカウントでプロセスを起動する方法はありますか?

8
rahmu

Su権限を持っている

次のコマンドを使用して、任意のユーザーのシェルを変更できます。

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

物理的にアクセスできる場合

Grubの起動中は、コンソールにアクセスでき、Grubメニューへのアクセスを妨げるパスワードがない限り、どのシステムにもアクセスできます。

Grubメニューが表示されたときのシステムの最初の起動時に、メニューに入って編集した場合(を押します) e キー)カーネルラインでは、次のいずれかを追加して、カーネルをシングルユーザーモードで起動できます。

  • シングル
  • init =/bin/sh
  • 1

行は次のようになります。

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

Grubでは、次のようになります。

ss of grub

変更を加えたら、カーネルを起動します(キーを押します) b)。

これにより、シェルを使用してシステムに一時的にアクセスでき、vi/vimを使用して/etc/passwdファイルに必要な変更を加えることができます。完了したら、rebootと入力するだけです。

4
slm