ฉันจะขออนุญาตแก้ไขไฟล์การกำหนดค่าระบบได้อย่างไร


47

ฉันดูเหมือนจะไม่สามารถแก้ไขและบันทึกไฟล์กำหนดค่าในระบบราก (เช่น:) /etc/dhcp/dhcpd.config; มันเพิ่งพูดว่า "การอนุญาตถูกปฏิเสธ" หรือตัวเลือกการบันทึกถูกบล็อกในโปรแกรมแก้ไขข้อความ

ฉันค่อนข้างแน่ใจว่าฉันเป็นผู้ใช้รูท แต่ฉันจะแน่ใจได้อย่างไร หากฉันเป็นผู้ใช้รูทฉันจะแก้ไขได้อย่างไร

คำตอบ:


42

คุณใช้โปรแกรมแก้ไขข้อความใด หากคุณเป็นผู้ใช้รูทและรู้รหัสผ่านให้ลอง (ในเทอร์มินัล) อย่างใดอย่างหนึ่ง:

  • sudoedit /etc/dhcp/dhcpd.configถ้าคุณกำลังใช้เทอร์มินัลเอดิเตอร์เช่นnanoหรือกำลัง ssh'ing เข้าสู่เซิร์ฟเวอร์
  • gksudo <text editor here> /etc/dhcp/dhcpd.config หากคุณใช้โปรแกรมแก้ไขบน GUI เช่น gedit

ไม่ว่าในกรณีใดคุณจะต้องระบุรหัสผ่านรูทของคุณก่อนเมื่อได้รับการร้องขอ

ใน Ubuntu 14.04 เป็นต้นไปgksudoจะไม่ได้รับการติดตั้งเป็นค่าเริ่มต้น คุณจะต้องติดตั้งgksuแพคเกจ (ทั้งจากศูนย์ซอฟต์แวร์หรือผ่านsudo apt-get install gksu) เพื่อรับมัน

ใน Ubuntu 17.10 Wayland เป็นค่าเริ่มต้นแทนที่จะเป็นเซิร์ฟเวอร์ X แบบดั้งเดิมและการรันโปรแกรมแก้ไขกราฟิกเนื่องจากรูทนั้นยาก ดูที่เหตุใดจึงไม่ gksu / gksudo หรือเรียกใช้แอปพลิเคชันกราฟิกที่มี sudo ทำงานร่วมกับ Wayland สำหรับรายละเอียด

ใน Ubuntu 18.04 gksudoไม่มีให้บริการในที่เก็บอย่างเป็นทางการ ใช้sudo -H <text editor>แทนหรือโปรโตคอล :admin://

gedit admin:///etc/dhcp/dhcpd.config

15

หากคุณไม่ต้องการใช้เทอร์มินัลคุณสามารถเรียกใช้โปรแกรม GUI ในฐานะรูทดังนั้น (ตัวอย่างนี้ใช้สำหรับ Gedit):

  1. กดAlt+ F2เพื่อเปิดกล่องโต้ตอบเรียกใช้
  2. พิมพ์gksudoตามด้วยชื่อปฏิบัติการของโปรแกรมของคุณ (ซึ่งอาจแตกต่างจากชื่อที่แสดงโดย GUI) ตัวอย่างเช่น:

    gksudo gedit
    
  3. Enterhit

10

permission deniedฉันไม่สามารถคิดของกรณีที่รากจะได้รับ

ใน 12.04 คุณสามารถทำสิ่งนี้: alt+ f2และป้อนgksudoในกล่องที่ปรากฏดังนี้:

บทสนทนา F2

คุณได้รับกล่องแบบนี้แล้วป้อนgeditแล้วคลิกok:

พิมพ์ gedit ในกล่องโต้ตอบ Run

คลิกOpen:

เปิดแท็บด้านในของ gedit

เพียงเรียกดูไฟล์:

กล่องโต้ตอบเปิดไฟล์

เสร็จสิ้น

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

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

ใช่สายการกู้คืนคอนโซลคำสั่งดูเหมือนน่ากลัวน้อยกว่าแม้นี้ แค่ระวัง


คุณอาจต้องอัปเดตสิ่งนี้สำหรับ 13.04 และใหม่กว่า บางสิ่งที่เกี่ยวข้องกับ gksu / gksudo มีการเปลี่ยนแปลง (ไม่แน่ใจว่าเกี่ยวข้องกับคำตอบของคุณหรือไม่)
เซท

มันเป็นความเข้าใจของฉันในขณะนี้ sudo ส่งออกตัวแปรสภาพแวดล้อม DISPLAY อย่างน่าอัศจรรย์และ gksu / gksudo ได้หายไปหรือกำลังจะหายไป ฉันยังไม่ได้ตรวจสอบ
RobotHumans

rootสามารถได้รับอนุญาตปฏิเสธหากไฟล์ถูกตั้งค่าไม่เปลี่ยนรูปโดยใช้chattrหรือบางครั้งหากดิสก์เป็นแบบอ่านอย่างเดียว
Chai T. Rex

6

คุณสามารถทดสอบว่าเชลล์ปัจจุบันของคุณทำงานเป็นรูทได้หลายวิธีหรือไม่

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

คำตอบอื่น ๆ ให้วิธีที่ดีในการเพิ่มระดับสิทธิ์รูทดังนั้นฉันจะไม่ทำซ้ำ สมมติว่าคุณมีรากและคุณยังไม่สามารถแก้ไขไฟล์/etc/dhcp/dhcpd.config- แล้วมากอาจจะมีใครบางคนหรือบางโปรแกรมได้ใช้chattrโปรแกรมที่จะทำให้การเปลี่ยนรูปไฟล์

จากหน้าคู่มือ chattr :

ไฟล์ที่มีแอตทริบิวต์ 'i' ไม่สามารถแก้ไขได้: ไม่สามารถลบหรือเปลี่ยนชื่อได้ไม่สามารถสร้างลิงก์ไปยังไฟล์นี้และไม่สามารถเขียนข้อมูลลงในไฟล์ได้ เฉพาะ superuser หรือกระบวนการที่มีCAP_LINUX_IMMUTABLEความสามารถเท่านั้นที่สามารถตั้งค่าหรือล้างแอตทริบิวต์นี้

คุณสามารถค้นหาโดยใช้ lsattr

lsattr /etc/dhcp/dhcpd.config

หากไม่แน่นอนคุณสามารถปิดเช่นนี้

chattr -i /etc/dhcp/dhcpd.config

3

หากคุณกำลังใช้อูบุนตู 17.04หรือสูงกว่าก็จะแนะนำให้ใช้gvfs แบ็กเอนด์ผู้ดูแลระบบ เพียงแค่เพิ่มadmin://ไปยังด้านหน้าของ filepath เต็มรูปแบบที่คุณต้องการจะเปิดใน app เช่นที่แก้ไขข้อความหรือปพลิเคชันไฟล์

ตัวอย่างเช่นหากต้องการเปลี่ยนการตั้งค่าการบูตให้เปิด

admin:///etc/default/grub

หากคุณใช้ Ubuntu 17.10 กับ Wayland ที่เป็นค่าเริ่มต้นsudoและgksuดังที่กล่าวไว้ในคำตอบเก่าที่นี่จะไม่ทำงาน


2

ใช้โปรแกรมแก้ไขข้อความที่คุณโปรดปราน

คุณสามารถใช้sudo -eหรือนามแฝงsudoeditกับโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ (กราฟิก!) ผ่านVISUALตัวแปรสภาพแวดล้อม1 :

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

ซึ่งเทียบเท่ากับ

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

แน่นอนคุณสามารถใช้โปรแกรมแก้ไขอื่น ๆ ที่คุณชอบเช่นleafpad, หรือkatesubl

ตัวแก้ไขบางตัวเสนอตัวเลือกบรรทัดคำสั่งเพื่อเริ่มต้นอินสแตนซ์ใหม่เสมอแม้ว่าจะมีอยู่ในปัจจุบัน เนื่องจากsudoeditรอให้กระบวนการแก้ไขสิ้นสุดลงเพื่อใช้การเปลี่ยนแปลงกับไฟล์ที่ถูกแก้ไขนี่อาจจำเป็นถ้าคุณมีอินสแตนซ์อื่น ๆ ของ Editor เดียวกันทำงานอยู่:

  • VISUAL='gedit -s'สำหรับการใช้งาน gedit
  • VISUAL='kate -n'สำหรับการใช้งานของเคท

ข้อดี

  • ไม่ต้องการแอปพลิเคชันเพิ่มเติมและ / หรือไม่สนับสนุน
  • ไม่ต้องการการเปลี่ยนแปลงนโยบายความปลอดภัยเช่นpkexec(ซึ่งคุณต้องการแก้ไขไฟล์ ... ในฐานะผู้ใช้ขั้นสูงสิ่งที่คำตอบนี้พยายามแก้ไข)
  • ไม่ต้องการการเรียกใช้แอปพลิเคชันที่อาจไม่ปลอดภัยด้วยสิทธิ์ระดับสูง
  • ใช้การกำหนดค่าแอปพลิเคชันของผู้ใช้ปัจจุบัน แต่ยุ่งกับสิทธิ์การเข้าถึงไฟล์การกำหนดค่าเช่นsudo -Hอื่น ๆ
  • ไม่ถอยกลับไปยังข้อมูลการกำหนดค่าแอปพลิเคชันผู้ใช้ของrootผู้ใช้ซึ่งอาจมีหรือไม่มีลักษณะและพฤติกรรมที่ยอมรับได้

ข้อเสีย

  • คุณต้องเรียนรู้คำสั่งสั้น ๆ

1 EDITORหรือSUDO_EDITORทำงานด้วย แต่ให้ความสำคัญน้อยกว่าหรือมีความเชี่ยวชาญมากกว่า ดูหน้าคู่มือสำหรับรายละเอียด


0

เพื่อความปลอดภัยสำรองข้อมูลโดยใช้cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup และเรียกใช้gksu gedit /etc/dhcp/dhcpd.config

แทนที่geditด้วยเครื่องมือแก้ไขที่คุณเลือก

คุณจะได้รับพรอมต์เช่นนี้

ให้ใส่รหัสผ่าน

ใส่รหัสผ่านของคุณที่นี่

หน้าต่างใหม่จะเปิดขึ้นและคุณสามารถแก้ไขการกำหนดค่าได้ที่นั่น

ในกรณีที่มีสิ่งผิดปกติคุณสามารถกู้คืนจากข้อมูลสำรองในโฟลเดอร์บ้านได้

คุณได้รับ "สิทธิ์ถูกปฏิเสธ" เนื่องจากวิธีที่ Linux จัดการสิทธิ์

ทุกสิ่งใน$HOMEโฟลเดอร์เป็นของผู้ใช้ในขณะที่เกือบทุกอย่างจะเป็นของรูท

/etc/dhcp/dhcpd.confไฟล์ที่คุณกำลังพยายามที่จะเข้าถึงเป็นรากและไฟล์มากที่สุดใน/etc/เป็นของรากโดยเริ่มต้นสำหรับเหตุผลด้านความปลอดภัย

คุณยังสามารถแก้ไขไฟล์นี้ได้โดยยกระดับสิทธิ์ของคุณ

ในการทำเช่นนี้คุณมีหลายวิธี:

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

  • การใช้การsudoยกระดับสิทธิ์ของคุณสำหรับคำสั่งเดียวเท่านั้น นี้โดยทั่วไปจะใช้เฉพาะสำหรับบรรทัดคำสั่งปพลิเคชันเช่น CLI แก้ไขข้อความชอบvim, nanoฯลฯ

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


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.