ฉันจะปิดเครื่องโดยไม่ต้องใช้รหัสผ่านของผู้ดูแลระบบได้อย่างไร


49

หากมีบุคคลมากกว่าหนึ่งคนลงชื่อเข้าใช้บนคอมพิวเตอร์ของฉัน Ubuntu ต้องการการรับรองความถูกต้องของผู้ใช้ขั้นสูงเมื่อปิดเครื่องคอมพิวเตอร์ ฉันจะสร้างมันขึ้นมาเพื่อให้ผู้ใช้สามารถปิดเครื่องคอมพิวเตอร์โดยไม่ถามรหัสผ่านได้อย่างไร


3
+1 ฉันสงสัยว่าการป้อนรหัสผ่านในการปิดเครื่องทำให้ผู้ใช้หลายคนสับสนบนพีซีที่ใช้งานที่บ้าน
Richard Holloway

7
หากคุณปิดคอมพิวเตอร์ขณะที่คนอื่นลงชื่อเข้าใช้จะเกิดอะไรขึ้นกับหน้าต่างที่เปิดอยู่ เปิดเอกสารของพวกเขา? ฉันคิดว่าทุกสิ่งที่ไม่ได้บันทึกอัตโนมัติจะสูญหายไป นี่คือการพิจารณาที่คุ้มค่า
Torben Gundtofte-Bruun

"Ubuntu ต้องการการรับรองความถูกต้องของผู้ใช้ขั้นสูงเมื่อปิดเครื่องคอมพิวเตอร์" ใน Ubuntu 11.10 จะไม่ขอการอนุญาต superuser เมื่อปิดเมนูโดยใช้มันจะทำงานเป็นออกจากระบบและนำไปที่หน้าเข้าสู่ระบบเช่นในคำถามนี้: askubuntu.com/ q / 64073/11995 , ฉันสนใจวิธีกำหนดค่า Ubuntu เพื่อขอรหัสผ่าน superuser หรือไม่
Mikl

1
สำหรับ 14.04 และใหม่กว่า:ดูaskubuntu.com/questions/454039/…
Takkat

คำตอบ:


27

คุณไม่จำเป็นต้องแก้ไขปัญหาเพียงแค่เปลี่ยนนโยบายเพื่ออนุญาตให้คุณปิดระบบโดยไม่ต้องตรวจสอบสิทธิ์ในฐานะผู้ดูแลระบบสำหรับการปิดและรีบูตเมื่อผู้ใช้หลายคนเข้าสู่ระบบ

แก้ไขไฟล์ /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy โดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบ คุณจะต้องได้รับอนุญาตรูท

เปลี่ยนหัวข้อที่เกี่ยวข้องกับการปิดระบบเมื่อผู้อื่นเข้าสู่ระบบ

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

ไปยัง

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

และส่วนที่เกี่ยวข้องกับการรีบูตเครื่องเมื่อมีคนอื่นเข้าสู่ระบบ

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

ไปยัง

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

และนั่นจะช่วยให้คุณปิดเครื่องและรีบูตเครื่อง PC เมื่อมีผู้ใช้หลายคนเข้าสู่ระบบไม่ว่าคุณต้องการจะทำเช่นนั้นเป็นคำถามที่แตกต่างกันหรือไม่


1
นี่คือลิงค์ที่มีเพิ่มเติมเกี่ยวกับ policykit: hal.freedesktop.org/docs/PolicyKit/polkit-conf.html
Richard Holloway

4
การเปลี่ยนแปลงของคุณจะไม่ถูกลบออกเมื่อใดก็ตามที่ติดตั้งใหม่หรืออัพเกรด polkit
Ryan Thompson

3
@ Ryanตามwiki.ubuntu.com/SecurityTeam/PolicyKitPermissions/12.04คุณสามารถเขียนไฟล์. pkla ภายใน / etc / polkit-1 / localauthority แต่ฉันไม่แน่ใจเกี่ยวกับไวยากรณ์ของมัน :) (ข้อมูลบางอย่างที่นี่wiki archlinux.org/index.php/PolicyKit#Authorities )
Joril

1
คำตอบด้านล่างจาก Flimm จะดีกว่าจะไม่ถูกเขียนทับในระหว่างการอัปเดต askubuntu.com/a/251942/7472
Konstigt

1
วิธีการโหลดกฎโดยไม่ต้องรีบูต?
Suncatcher

33

คำตอบของ Richard Hollowayไม่ใช่วิธีการอนุมัติของ PolickKit ไฟล์ที่ติดตั้งภายใต้/usr/share/polkit-1/actionsไม่ได้มีไว้สำหรับแก้ไข /etc/polkit-1/localauthority/50-local.d/แต่คุณควรปรับเปลี่ยนหน่วยงานที่อยู่ภายใต้

นี่คือวิธีที่คุณทำกับคำถามนี้:

สร้างชื่อไฟล์/etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pklaและแก้ไขโดยใช้sudoeditในลักษณะดังนี้:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes

จากนั้นสร้าง.pklaไฟล์อื่นในไดเรกทอรีเดียวกัน ใช้ชื่อใด ๆ ที่คุณชอบลงท้ายด้วย.pklaตัวอย่างเช่นallow_all_users_to_restart.pkla, และกรอกด้วยเนื้อหาเหล่านี้:

[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

อ้างอิง:


นี่เป็นวิธีแก้ปัญหาที่แปลกมาก ใน 12.04 หลังจากติดตั้ง PowerBroker (เพื่อรับรองความถูกต้องไปยัง Active Directory) ผู้ใช้ไม่สามารถรีสตาร์ทหรือปิดเครื่องคอมพิวเตอร์ด้วย GUI (ไม่ว่า lightdm หรือตัวบ่งชี้ - เซสชันทำงานมันเพิ่งจะกลับไปที่หน้าจอเข้าสู่ระบบ) หลังจากเพิ่มสิทธิ์เหล่านี้ policykit ทุกอย่างทำงานได้
korylprince

man pklocalauthority มีข้อมูลใน Ubuntu
Konstigt

4
โปรดทราบว่าชื่อได้เปลี่ยนไปแล้ว! นี่คือจาก 14.04: / usr / share / polkit-1 / actions $ grep หลาย * org.freedesktop.login1.policy: <action id = "org.freedesktop.login1.power-off-multiple-session"> org.freedesktop .login1.policy: <action id = "org.freedesktop.login1.reboot-multiple-session"> org.freedesktop.login1.policy: <action id = "org.freedesktop.login1.suspend- หลายเซสชัน"> org .freedesktop.login1.policy: <action id = "org.freedesktop.login1.hibernate- หลายเซสชัน">
Konstigt

1
สำหรับ 16.04 นอกเหนือจากการเปลี่ยนแปลงของ @ Konstigt สำหรับฉันไฟล์จะต้องมีอยู่/var/lib/polkit-1/localauthority/50-local.dและบรรทัดเพิ่มเติมResultAny=yesนั้นจำเป็นสำหรับทั้งสองไฟล์ ข้อความเตือนเดียวที่ฉันได้รับตอนนี้คือการFailed to set wall message, ignoring: Interactive authentication required.ปิดและเริ่มการทำงานใหม่อย่างถูกต้องตอนนี้
sigalor

ความคิดเห็นของ @ sigalor ได้ผลสำหรับฉันด้วยการเพิ่มที่sysctl poweroff -iต้องการorg.freedesktop.login1.power-off-multiple-sessionsดังนั้นฉันจึงแยกไฟล์ที่มีบรรทัดเดียวกันยกเว้นด้วยAction=org.freedesktop.login1.power-off-multiple-sessions
wickedchicken

16

มีวิธีที่ดีกว่าคือ หากคุณมี dbus-send ติดตั้งอยู่คุณสามารถปิดระบบผ่าน dbus โดยไม่จำเป็นต้องเลื่อนระดับเป็นสิทธิพิเศษรู

ฉันจำหน้าไม่ได้ว่าเอกสารอยู่ที่ไหน แต่มีผู้ใช้ Archlinux 1 คนคิดออก

ปิดตัวลง:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

Reboot:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Reboot

ระงับ:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1

Hibernate:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate

ความนับถือ.


ว้าวนั่นคือ ... แฮ็ค เจ๋งมาก แต่
แฮ็

1
ดูเหมือนว่าการปิดเครื่องและการรีบูตจะไม่ทำงานอีกต่อไปใน 11.10
Mikl

@Mikl ลองติดตั้ง hal (sudo apt-get install hal)
Epeli

12

HAL ดูเหมือนจะเลิกใช้แล้วและไม่ได้ติดตั้งใน Ubuntu รุ่นล่าสุด

คุณต้องใช้บริการConsoleKitและUPower dbus เพื่อจัดการสถานะพลังงาน

ปิดตัวลง:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

เริ่มต้นใหม่:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

ระงับ:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Hibernate:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

ขอขอบคุณที่ Arch ลินุกซ์ฟอรั่ม

ตอนนี้ใช้งานได้ในแม่นยำและปริมาณ แต่ไม่ทราบว่าจะต้องปรับโฟกัส Freedesktop เป็นระยะเวลานานเท่าไหร่เนื่องจาก ConsoleKit เปลี่ยนเป็น systemd ไม่ทราบว่า Canonical ใส่ใจ ...


4

สิ่งนี้ใช้ได้กับ 14.04 รูปแบบที่ได้รับการปรับปรุงก่อนหน้า IMO ถูกต้องคำตอบโดย Flimm

sudo mkdir -p /etc/polkit-1/localauthority/50-local.d
sudoedit /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown_reboot_suspend.pkla 

วางสิ่งนี้ไว้ข้างใน:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-multiple-sessions
ResultActive=yes

[Allow all users to reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-multiple-sessions
ResultActive=yes

[Allow all users to suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes

[Allow all users to ignore inhibit of shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-ignore-inhibit
ResultActive=yes

1

ไม่มีวิธีหลีกเลี่ยงพรอมต์สำหรับรหัสผ่าน superuser เมื่อรีบูตในขณะที่ผู้ใช้รายอื่นเข้าสู่ระบบโดยไม่เปิดหน้าต่างเทอร์มินัลและออกrebootคำสั่งเป็นรูท:

sudo reboot

แม้ว่าจะยังไม่ได้รับการกำหนดค่าให้ข้ามรหัสผ่านสำหรับบัญชีผู้ใช้ของคุณsudoก็จะถามรหัสผ่านของคุณ

ไม่ต้องกังวลนี่คือสิ่งที่ดี การรีบูตเครื่องควรเป็นสิ่งที่หายากและพรอมต์รหัสผ่านของผู้ดูแลระบบที่เรียบง่ายจะช่วยให้คุณซ่อนตัวเองโดยไม่ได้ตั้งใจ!


นอกจากนี้คุณยังสามารถแก้ไข visudo และทำให้ผู้ใช้ไม่ต้องใส่รหัสผ่านเมื่อพิมพ์ sudo
Da1T

0

ฉันเชื่อว่านี่เป็นเพียงปัญหาเมื่อทำผ่านบรรทัดคำสั่ง

ถ้านี่คือลิงค์ที่สามารถช่วยคุณแก้ปัญหาได้


ไม่มีหน้าต่างป๊อปอัพที่ขอรหัสผ่านผู้ดูแลระบบหากมีผู้ใช้อื่นเข้าสู่ระบบเมื่อคุณปิดมัน ใช้ gui
อิสยาห์

0

เพิ่มหยุดและ / หรือรีบูตลงในไฟล์ sudoers ที่กำหนดให้กับกลุ่ม / ผู้ใช้ที่คุณต้องการอนุญาตให้ทำงานนี้ ด้วยวิธีนี้คุณยังสามารถควบคุมผู้ที่สามารถปิดเครื่องได้โดยไม่ต้องให้สิทธิ์การเข้าถึงรูทเครื่อง

http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/


-1

เห็นได้ชัดว่าคุณสามารถปิดได้โดยไม่ต้องรูทจาก GUI เพราะ gdm ทำงานเป็นรูท Gnome บอกให้ gdm ปิดเครื่องและ gdm ก็ทำเช่นนั้น

คุณสามารถทำสิ่งที่คล้ายกับสคริปต์ ฉันไม่แน่ใจว่าคุณใช้งาน BASH ได้อย่างสะดวกเพียงใด แต่ฉันเชื่อว่ามีใครสามารถเขียนสคริปต์ที่ทำงานเหมือนรูทและเมื่อได้รับสัญญาณบางอย่างให้รันคำสั่ง shutdown

โปรดทราบว่านี่อาจทำให้เกิดปัญหาด้านความปลอดภัย


ฉันคิดว่าปัญหาที่เขาน่าจะพบคือพรอมต์ที่ปรากฏขึ้นเพื่อให้คำแนะนำว่าคนอื่นยังคงเข้าสู่ระบบและต้องใช้รหัสผ่าน sudo เพื่อเปิดใช้งานการปิด / รีสตาร์ท
David Thomas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.