โซลูชั่น
ใน Wayland มักจะยากที่จะเรียกใช้โปรแกรมแอปพลิเคชัน GUI ที่มีสิทธิ์ระดับสูง (sudo -H, gksu ... ) เป็นความคิดที่ดีที่จะทำงานกับเครื่องมือบรรทัดคำสั่ง
แต่มีวิธีแก้ไขหากคุณมีเครื่องมือ GUI ที่ใช้งานได้ดีสำหรับคุณและต้องได้รับการยกระดับสิทธิ์ (ฉันใช้เครื่องมือมาตรฐานสองอย่าง: Synaptic Package Manager synaptic
และเครื่องมือการแบ่งพาร์ติชัน Gparted, gparted
ฉันใช้ MakeUSB เพื่อสร้างไดรฟ์สำหรับบูต USB mkusb
ด้วย แต่สามารถเรียกใช้ส่วนที่ต้องได้รับการยกระดับโดยไม่ต้องใช้กราฟิก)
xhost
และ sudo -H
มีวิธีแก้ปัญหาเพื่อให้โปรแกรมกราฟิกเป็นเจ้าของโดยผู้ใช้อื่นนอกเหนือจากผู้ใช้ที่เข้าสู่ระบบใน Wayland
xhost +si:localuser:root
gksu
และgksudo
ไม่ได้รวมอยู่ใน Ubuntu มาตรฐานและไม่ทำงานที่นี่ แต่ใช้งานได้ใน Xorg
แต่คุณสามารถใช้
sudo -H
เป็นความคิดที่ดีที่จะป้องกันไม่ให้โปรแกรมแอปพลิเคชันกราฟิกเป็นเจ้าของโดยผู้ใช้รายอื่นนอกเหนือจากผู้ใช้ที่ล็อกอินหลังจากนั้น
xhost -si:localuser:root
แบ็กเอนด์ผู้ดูแลระบบ gvfs
ใน Ubuntu 17.10 (gvfs> = 1.29.4) คุณสามารถใช้แบ็กเอนด์ผู้ดูแลระบบ gvfs ขอให้สังเกตว่าคุณต้องการเส้นทางแบบเต็ม
gedit admin:///path/to/file
ในทางทฤษฎีแล้ววิธีการแบ็กเอนด์ gvfs admin (ซึ่งใช้ polkit) ดีกว่าและปลอดภัยกว่า ( xhost
และxudo -H
) โดยไม่คำนึงถึง UI ที่คุณใช้
คุณไม่ได้รันแอปพลิเคชันทั้งหมดในฐานะรูท การเพิ่มระดับสิทธิ์จะเกิดขึ้นเฉพาะเมื่อจำเป็นเท่านั้น ดูลิงค์ต่อไปนี้และลิงค์จากมัน
หอยโข่งผู้ดูแลระบบ
นอกจากนี้ยังเป็นไปได้ที่จะใช้nautilus-admin
สำหรับการดำเนินการกับไฟล์ที่มีสิทธิ์ยกระดับและใช้gedit
กับสิทธิ์ยกระดับ นี่คือคำอธิบายในคำตอบ AskUbuntu ต่อไปนี้
การเข้าถึงรูทไปยังเดสก์ท็อป Wayland ชั่วคราวผ่านฟังก์ชั่น gks
sudo GUI-program
หลีกเลี่ยงโปรด มันอาจทำให้ระบบเขียนทับไฟล์กำหนดค่าสำหรับ ID ผู้ใช้ปกติของคุณด้วยroot
การกำหนดค่าและตั้งค่าความเป็นเจ้าของและการอนุญาตให้เหมาะสมroot
และล็อค ID ผู้ใช้ปกติของคุณ คุณควรรันแอพพลิเคชั่น GUI ด้วยsudo -H
ซึ่งจะเขียนไฟล์การกำหนดค่าในroot
โฮมไดเร็/root
กตอรี่ของ ตัวอย่าง:
sudo -H gedit myfile.txt
-H
แต่มีความเสี่ยงที่คุณลืม ตัวอย่างเช่นคุณสามารถสร้างฟังก์ชันได้gks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
และเก็บไว้~/.bashrc
ใกล้นามแฝงของคุณ จากนั้นคุณสามารถเรียกใช้
gks gedit myfile.txt
ในแบบที่คุณเคยใช้มาgksudo
ก่อน
การทดสอบ
คุณสามารถตรวจสอบวิธีการsudo
, sudo -H
และgks
การทำงานที่มีคำสั่งดังต่อไปนี้
sudodus@xenial32 ~ $ sudo bash -c "echo ~"
/home/sudodus
sudodus@xenial32 ~ $ sudo -H bash -c "echo ~"
/root
sudodus@xenial32 ~ $ gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
sudodus@xenial32 ~ $ gks bash -c "echo ~"
localuser:root being added to access control list
/root
localuser:root being removed from access control list
sudodus@xenial32 ~ $
และแน่นอนว่า
gks gedit myfile.txt
ตามตัวอย่างในส่วนก่อนหน้า
วิธีการที่ทำงานผ่านเมนู Alt-F2 และ Gnome Shell
แทนที่จะเพิ่มฟังก์ชั่นหนึ่งบรรทัดง่ายๆ~/.bashrc
คุณสามารถสร้างระบบที่ใช้งานได้โดยไม่ต้องทุบตี อาจสะดวกในการใช้งาน แต่มีความซับซ้อนในการตั้งค่า โปรดสังเกตว่าคุณควรติดตั้งทางเลือกเดียวเท่านั้นเนื่องจากฟังก์ชั่นหนึ่งบรรทัดจะรบกวนการใช้งานระบบที่ซับซ้อนกว่านี้
สามไฟล์
The shellscript gks
:
#!/bin/bash
xhost +si:localuser:root
if [ $# -eq 0 ]
then
xterm -T "gks console - enter command and password" \
-fa default -fs 14 -geometry 60x4 \
-e bash -c 'echo "gks lets you run command lines with GUI programs
with temporary elevated permissions in Wayland."; \
read -p "Enter command: " cmd; \
cmdfile=$(mktemp); echo "$cmd" > "$cmdfile"; \
sudo -H bash "$cmdfile"; rm "$cmdfile"'
else
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H "$@"
fi
xhost -si:localuser:root;
ไฟล์เดสก์ท็อปgks.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gks
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gks %f
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
ไฟล์ไอคอนgks.svg
มีลักษณะดังนี้:
คุณสามารถดาวน์โหลดไฟล์ไอคอนหรือ tarball ที่มีทั้งสามไฟล์ได้จากลิงค์นี้
wiki.ubuntu.com/Wayland/gks
คัดลอกไฟล์ [แยกหรือคัดลอก & วาง] ไปยังตำแหน่งต่อไปนี้
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
ออกจากระบบ / เข้าสู่ระบบหรือรีบูตและควรมีไอคอนเดสก์ท็อปที่ใช้งานได้ มันจะทำงานจากหน้าจอเทอร์มินัลเหมือนกับโซลูชันที่เรียบง่ายพร้อมฟังก์ชั่น
Alt F2 กล่อง:
เมนู Gnome Shell:
gks console และ gparted:
สคริปต์ที่กำหนดเองและไฟล์เดสก์ทอป
หากคุณมีแอปพลิเคชั่น GUI เพียงไม่กี่ตัวที่ต้องการการยกระดับคุณสามารถสร้างสคริปต์ที่กำหนดเองและไฟล์เดสก์ท็อปสำหรับพวกเขาและหลีกเลี่ยงการป้อนคำสั่ง (ชื่อแอปพลิเคชัน) คุณจะป้อนรหัสผ่านเท่านั้นซึ่งไม่ยากขึ้นเมื่อเทียบกับ Ubuntu รุ่นก่อนหน้า (คุณควรป้อนรหัสผ่านต่อไป)
ตัวอย่างด้วยโปรแกรม GUI อย่างง่ายxlogo
ที่มาพร้อมกับแพ็คเกจโปรแกรมx11-apps
:
shellscript gkslogo
(ง่ายกว่าเมื่อเทียบกับgks
)
#!/bin/bash
xhost +si:localuser:root
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H xlogo
xhost -si:localuser:root;
ไฟล์เดสก์ท็อปgkslogo.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gkslogo
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gkslogo
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
ฉันขี้เกียจและใช้ไฟล์ไอคอนเดียวกัน gks.svg
คัดลอกไฟล์ [คัดลอก & วาง] ไปยังตำแหน่งต่อไปนี้
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [โลโก้] คอนโซลและ xlogo:
gksudo
จะไม่ทำงานในเซสชัน Waylandคุณสามารถเปลี่ยนไปใช้เซสชัน Xorgและลอง