หากมีบุคคลมากกว่าหนึ่งคนลงชื่อเข้าใช้บนคอมพิวเตอร์ของฉัน Ubuntu ต้องการการรับรองความถูกต้องของผู้ใช้ขั้นสูงเมื่อปิดเครื่องคอมพิวเตอร์ ฉันจะสร้างมันขึ้นมาเพื่อให้ผู้ใช้สามารถปิดเครื่องคอมพิวเตอร์โดยไม่ถามรหัสผ่านได้อย่างไร
หากมีบุคคลมากกว่าหนึ่งคนลงชื่อเข้าใช้บนคอมพิวเตอร์ของฉัน Ubuntu ต้องการการรับรองความถูกต้องของผู้ใช้ขั้นสูงเมื่อปิดเครื่องคอมพิวเตอร์ ฉันจะสร้างมันขึ้นมาเพื่อให้ผู้ใช้สามารถปิดเครื่องคอมพิวเตอร์โดยไม่ถามรหัสผ่านได้อย่างไร
คำตอบ:
คุณไม่จำเป็นต้องแก้ไขปัญหาเพียงแค่เปลี่ยนนโยบายเพื่ออนุญาตให้คุณปิดระบบโดยไม่ต้องตรวจสอบสิทธิ์ในฐานะผู้ดูแลระบบสำหรับการปิดและรีบูตเมื่อผู้ใช้หลายคนเข้าสู่ระบบ
แก้ไขไฟล์ /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 เมื่อมีผู้ใช้หลายคนเข้าสู่ระบบไม่ว่าคุณต้องการจะทำเช่นนั้นเป็นคำถามที่แตกต่างกันหรือไม่
คำตอบของ 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
/var/lib/polkit-1/localauthority/50-local.d
และบรรทัดเพิ่มเติมResultAny=yes
นั้นจำเป็นสำหรับทั้งสองไฟล์ ข้อความเตือนเดียวที่ฉันได้รับตอนนี้คือการFailed to set wall message, ignoring: Interactive authentication required.
ปิดและเริ่มการทำงานใหม่อย่างถูกต้องตอนนี้
sysctl poweroff -i
ต้องการorg.freedesktop.login1.power-off-multiple-sessions
ดังนั้นฉันจึงแยกไฟล์ที่มีบรรทัดเดียวกันยกเว้นด้วยAction=org.freedesktop.login1.power-off-multiple-sessions
มีวิธีที่ดีกว่าคือ หากคุณมี 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
ความนับถือ.
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 ใส่ใจ ...
สิ่งนี้ใช้ได้กับ 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
ไม่มีวิธีหลีกเลี่ยงพรอมต์สำหรับรหัสผ่าน superuser เมื่อรีบูตในขณะที่ผู้ใช้รายอื่นเข้าสู่ระบบโดยไม่เปิดหน้าต่างเทอร์มินัลและออกreboot
คำสั่งเป็นรูท:
sudo reboot
แม้ว่าจะยังไม่ได้รับการกำหนดค่าให้ข้ามรหัสผ่านสำหรับบัญชีผู้ใช้ของคุณsudo
ก็จะถามรหัสผ่านของคุณ
ไม่ต้องกังวลนี่คือสิ่งที่ดี การรีบูตเครื่องควรเป็นสิ่งที่หายากและพรอมต์รหัสผ่านของผู้ดูแลระบบที่เรียบง่ายจะช่วยให้คุณซ่อนตัวเองโดยไม่ได้ตั้งใจ!
เพิ่มหยุดและ / หรือรีบูตลงในไฟล์ sudoers ที่กำหนดให้กับกลุ่ม / ผู้ใช้ที่คุณต้องการอนุญาตให้ทำงานนี้ ด้วยวิธีนี้คุณยังสามารถควบคุมผู้ที่สามารถปิดเครื่องได้โดยไม่ต้องให้สิทธิ์การเข้าถึงรูทเครื่อง
http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without-sudo-password/
เห็นได้ชัดว่าคุณสามารถปิดได้โดยไม่ต้องรูทจาก GUI เพราะ gdm ทำงานเป็นรูท Gnome บอกให้ gdm ปิดเครื่องและ gdm ก็ทำเช่นนั้น
คุณสามารถทำสิ่งที่คล้ายกับสคริปต์ ฉันไม่แน่ใจว่าคุณใช้งาน BASH ได้อย่างสะดวกเพียงใด แต่ฉันเชื่อว่ามีใครสามารถเขียนสคริปต์ที่ทำงานเหมือนรูทและเมื่อได้รับสัญญาณบางอย่างให้รันคำสั่ง shutdown
โปรดทราบว่านี่อาจทำให้เกิดปัญหาด้านความปลอดภัย