<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 28, 2020, 13:40 An Liu <<a href="mailto:sourceonly@gmail.com">sourceonly@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,sans-serif">Hi, folks, </div><div class="gmail_default" style="font-family:arial,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,sans-serif">I used to type systemctl reboot with non-privileged users, and to my surprise, the system goes down for the reboot. </div><div class="gmail_default" style="font-family:arial,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,sans-serif">I've tested in both debian and centos 7, they act the same, however, systemctl halt will prompt you to enter administrator password to continue. </div><div class="gmail_default" style="font-family:arial,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,sans-serif">Is it default behavior by design?</div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Yes, but... Depends on whether the user is doing it locally or remotely, and whether they're the only person who's logged in or whether there are other users as well. There are different rules in systemd for these cases.</div><div dir="auto"><br></div><div dir="auto">I'm not entirely sure why reboot is treated differently from halt, though. From my experience, *neither* is allowed over remote (SSH) sessions by default.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,sans-serif"> I dont think a non-privileged user could reboot the system as he/she wishes. </div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">It hasn't been true for a long time that a user is either fully privileged or not privileged at all, and nothing in between.</div><div dir="auto"><br></div><div dir="auto">For example, in the case of systemctl, locally logged in users are allowed to call `systemctl poweroff` because they could just as well pull the plug. But the exact same user, logged in via SSH, will not be allowed it.</div><div dir="auto"><br></div><div dir="auto">In most everyday installations (talking about other operating systems), rebooting the local system is a default privilege that even "unprivileged" users have...</div><div dir="auto"><br></div><div dir="auto">And I do think that defaults should be suitable for the majority, leaving the burden of customization to unusual sites (kiosks, clusters) – not the other way around.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,sans-serif">btw, I'm in an HPC related domain, if this behavior of systemctl is allowed, every single user could reboot the whole cluster as they wish, it's a disaster. </div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Then don't allow it. Change your polkit (PolicyKit) rules to block all reboot-related actions.</div><div dir="auto"><br></div><div dir="auto">(Check the journal to see which specific action was authorized, though – the same reboot command can use a few different action IDs to apply different rules.)</div><div dir="auto"><br></div><div dir="auto">If CentOS uses JS-based rules, here are some examples: <a href="https://gist.github.com/grawity/3886114">https://gist.github.com/grawity/3886114</a></div><div dir="auto"><br></div><div dir="auto">Debian's polkit uses the older .pkla format, which is simpler but I don't have a good example on hand.</div><div dir="auto"><br></div><div dir="auto"><br></div></div>