16.04で/ sbin / shutdown、/ sbin / rebootなどにsudoを再度要求するにはどうすればよいですか?


18

何らかの理由で、我々はルート(または使用しているように、もはや必要ありませんsudo)を実行するには/sbin/shutdown/sbin/rebootなど

これは、これらの実行可能ファイルが/bin/systemctlすべてを通常のユーザーとして処理するシンボリックリンクになったためと思われます。

ただし、ルート認証を再度必要shutdownrebootする場合はどうすればよいですか?どうすればこれを達成できますか?


3
私はポルキットのルールを推測します。askubuntu.com/a/570969/158442を必要に応じて変更します(pkaction | grep login1関心のある他のルールの使用)
muru

3
(管理者権限を要求するためのルールの例:askubuntu.com/a/744094/158442
muru

1
ログインしているのがあなただけである場合、これだけではありません。他の誰かがシステムにログインしている場合、rootパスワードを入力するように求められます。
ognjen

それはあなたが期待している答えではないかもしれませんが、「/ etc / sudoers」を編集した別の管理者ユーザーによって同様の動作が引き起こされる可能性があります。これが問題の原因であるsudo visudo場合は、これらの実行可能ファイルへのパスを含む行があるかどうかを入力して確認することにより、元に戻すことができます。
ダミアン

回答:


5

Systemdは実際にshutdownrebootおよびその他のコマンドを処理し、デフォルトで割り当てられる特権は許容されます。これを変更するには、Polkitルールを作成する必要があります。(を含む)に.pklaファイルを作成します:/etc/polkit-1/localauthority/50-local.dconfirm-shutdown.pkla

[Confirm shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.*
ResultActive=auth_admin_keep

様々なシャットダウン、リブートなどのコマンドで、Polkit用語で、アクションでorg.freedesktop.login1、例えば、org.freedesktop.login1.power-offorg.freedesktop.login1.rebootここでは具体的な問題がある中で、デフォルトの設定であり、その他/usr/share/polkit-1/actions/org.freedesktop.login1.policy

<action id="org.freedesktop.login1.power-off">
        <description>Power off the system</description>
        ...
        <defaults>
                <allow_any>auth_admin_keep</allow_any>
                <allow_inactive>auth_admin_keep</allow_inactive>
                <allow_active>yes</allow_active>
        </defaults>

アクティブなユーザーが電源を切ったり、再起動したりできるようになります。


0

chmodコマンドを使用できます。

  • ルートのみにアクセスを許可する場合は、次のように記述できます。

    chmod 700 directory/to/the/file
    
  • ルートとsudoグループに許可を与えたい場合、次のように書くことができます:

    chmod 770 directory/to/the/file
    
  • ファイルのグループをsudoから別のグループ(ユーザーや管理者など)に変更する場合は、次のように入力する必要があります。

    chown owner:group directory/to/the/file
    
  • 元に戻すには、次を実行します。

    chown root:sudo filedirectory 
    

sudoこれらのコマンドを使用するか、rootアカウントにログインする必要がある場合があります


リンクの許可を変更しようとすると、ターゲット(この場合/bin/systemctl)の許可が変更されるため、chmod / sbin / shutdownを実行/bin/systemctlするbin/systemctlと、コマンドで確認されるように許可が変更されるため、指すすべてのリンクに影響することに注意してください$ ll /bin/systemctl -rwx ------ 1ルートルート659848 1月18日16:04 / bin / systemctl *
長老Geek

あなたが戻ってそれを変更する必要がある場合は、デフォルトのアクセス権がある-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
エルダーオタク


-1

ユーザーがroot権限で実行しているかどうかを確認するスクリプトを作成できます。
次に、systemctlコマンドを実行するか、エラーを返します。

#!/ bin / bash
if ["$(whoami)"!= "root"]; それから
    echo「ごめんなさい、あなたはルートではありません。」
    1番出口
そうしないと
    (systemctl shutdownコマンド)
fi

ソース


4
root以外のユーザーがこのスクリプトを単純にバイパスしないようにするにはどうすればよいですか?
ロビーバサック

-1

ターミナルで権限を変更してみてください。wheelやadminなどの特定のグループによってのみ実行可能にすることができます。悲しいことに(または幸いなことに)、ファイルは1つのグループ所有権しか持てないため、chownは単独では機能しません。「sudo chown root:wheel / sbin / shutdown」を試してから、「sudo chmod g + x / sbin / shutdown」を試してください。これにより、rootのみがファイルを実行できるようになり、admins(shudders)とsudoersがパスワードを入力する必要があります。


2
「ホイール」グループはArch Linuxや他のディストリビューションのものですが、Ubuntuに関しては間違いありません。
バイトコマンダー

2
これは効果的ではありません。ユーザーは、どこかからsystemctlバイナリをダウンロードして、代わりにそれを実行できます。
ロビーバサック

@ロビー、あなたはどんなソリューションでもそれをすることができます。電源ボタンを押し続けることができます。私の解決策は、彼が求めていることに対して機能します。
chevydog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.