web-dev-qa-db-ja.com

Sudo、su、およびpkexecが機能していない状態でリモートサーバーへのルートアクセスを取得する

ホームサーバーとして再利用した古いDellボックスでCentOS7を実行しています。また、リモートの場所からSSHで接続して、すべてがスムーズに実行されていることを確認したり、ラップトップをrsyncしたりします。言い換えれば、何か問題が発生した場合、通常、誰も家にいてマシンをリセットすることはありません。

状況:

先週のいつか、Sudo、su、pkexecなどのコマンドを機能させる何かを壊したに違いありません。

Suは私のrootパスワードを受け入れません、Sudoはエラーを出します:

Sudo: /usr/bin/Sudo must be owned by uid 0 and have the setuid bit set

Pkexec/bin/bashのようなものを実行しようとしましたが、エラーが発生しました:

pkexec must be setuid root

それを見て、私はそれからしました:

[crlsmdrn@server ~]$ ls -l /usr/bin/Sudo                                                                                                       

---x--x--x. 1 root root 143248 Jun 27 13:03 /usr/bin/Sudo

それで、マシンを再起動せずにルートシェルをリモートで戻すことができるように、Sudoでアクセス許可を4755に戻す方法はありますか?

ありがとう

1
Carlos1001

レスキューモードで再起動せずにSudoの権限をリセットできました!これは私がしたことです:

ありがたいことに、systemdはpolkitを介して認証を行っていたため、デーモンの再起動を許可していました。

そこで、ホームディレクトリに次のようなユニットファイルを作成しました。

/home/crlsmdrn/Sudo-reset.service:

[Unit]
Description=reset Sudo

[Service]
Type=oneshot
ExecStart=/home/crlsmdrn/Sudo-reset.sh

[Install]
WantedBy=multi-user.target

次に、Sudo-reset.shという名前のファイルを作成しました。

/home/crlsmdrn/Sudo-reset.sh:

#!/bin/sh
chmod 4755 /usr/bin/Sudo

次に:

[crlsmdrn@server ~]$ chmod +x /home/crlsmdrn/Sudo-reset.sh

続いて、サービスを有効にして実行します。

[crlsmdrn@server ~]$ systemctl enable /home/crlsmdrn/Sudo-reset.service
[crlsmdrn@server ~]$ systemctl start Sudo-reset-service

[crlsmdrn@server ~]$ Sudo
usage: Sudo -h | -K | -k | -V
usage: Sudo -v [-AknS] [-g group] [-h Host] [-p Prompt] [-u user]
usage: Sudo -l [-AknS] [-g group] [-h Host] [-p Prompt] [-U user] [-u user] [command]
usage: Sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h Host] [-p Prompt] [-u user] [VAR=value] [-i|-s]
            [<command>]
usage: Sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h Host] [-p Prompt] [-u user] file ...

その後、Sudo -sを実行し、bashの履歴を振り返って、どの権限が壊れているかを確認することができました。/usr/binだけが中断されたように見えるので、rpm --setperms -aを実行しました。これにより、アクセス許可が修正されたようです。

これを行った後、サービスを無効にすることを忘れないでください。

ここでの話の教訓:同じように機能することを期待せずに、/ usr/binでchown-R root:rootを実行しないでください。

1
Carlos1001