ホームサーバーとして再利用した古い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に戻す方法はありますか?
ありがとう
レスキューモードで再起動せずに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を実行しないでください。