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


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フルパスで置き換えるのは論理的だと思われます。しかし、どうすればよいですか?

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

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

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

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


どうsuですか?またはgksu?のようなものsu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
qdii

passwdファイルの行は/ usr / bin / zshであるべきではありませんか?なぜ文字列zshだけを入れたのですか?
slm

@slmそれはOPが加えたい変更です...
CVn

1
@qdii提案が機能する(つまりsu -c "<commands>")場合... su -c "/bin/bash"ユーザーrootで動作するbashに到達するために単に使用することはできませんか?
humanityANDpeace

1
@humanityANDpeace:これは機能しないはずです。に渡されるコマンドは-c、ユーザーのログインシェルを介して実行されます。-s別のシェルを使用するために使用できます...既存のログインシェルが有効であるか、呼び出し元がrootである場合のみ。
マット2013年

回答:


4

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

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

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


2
物理的にアクセスできないため、GRUBメニューを表示できない可能性があります。
レナン

@レナン。最初の数回の読み取りではそれがわかりませんでした。不思議なフレーズである「..ライブCDでは起動できない..」の行に隠れています。
slm

4
あなたのsuコマンドは、rootのシェル、存在しない起動しようとするでしょうから、機能しません。
Gilles 'SO-悪をやめる'

@ギレス:他にアイデアはありますか?物理的なアクセスなしでこれを修正する方法を私は見ていません。この時点でシステムが防止するように設計されたものに正確に反対しているように感じます。
slm

1
@slm sudoがなければ、rootアカウントがロックされていると思うので、物理的なアクセスが必要です。
Gilles「SO-邪悪なことをやめなさい」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.