ฉันจะเปิดไฟล์ในฐานะ root ใน TextEdit on Lion ได้อย่างไร


13

ฉันจะเปิดไฟล์ในฐานะ root ใน TextEdit ได้อย่างไร ฉันได้ลองคำสั่งเหล่านี้rootแล้ว แต่ TextEdit บอกว่ามันล็อคอยู่เสมอ

open -e /etc/apache2/httpd.conf
open -e -F /etc/apache2/httpd.conf
open -e -F -W /etc/apache2/httpd.conf

และแน่นอนsudo !!ทำให้ไม่แตกต่าง

คำตอบ:


14

คุณสามารถเปิดอินสแตนซ์ textedit เป็นรูทได้โดยการป้อนพา ธ เต็มไปยังไฟล์ปฏิบัติการจริง:

sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"

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

sudo su - root -c "open -e /etc/apache2/httpd.conf"

ขอบคุณมันใช้งานได้! sudo /Applications/Textedit.app/Contents/MacOS/TextEditจากนั้นให้เปิดไฟล์จาก TextEdit
Znarkus

หากคุณไม่ต้องการพิมพ์ออกมาทุกครั้งที่คุณสามารถสร้างนามแฝงได้โดยไปที่โฮมไดเร็กตอรี่ของคุณในเทอร์มินัลจากนั้นpico .bash_profileเพิ่มalias sudotext='sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"', เพิ่ม, บันทึกไฟล์, รีสตาร์ท Terminal ตอนนี้คุณสามารถพิมพ์sudotextเพื่อเริ่ม TextEdit เป็น root
webbiedave

ตามที่คำตอบอื่น ๆ ชี้ให้เห็นการทำใน 1 ซับตัวเลือกเดียวเท่านั้นที่มีตัวแก้ไขบุคคลที่สามที่รองรับ จากนั้นให้พิมพ์open -t "/etc/hosts"เช่น ด้วยTextWrangleredit /etc/hostsคุณก็สามารถพิมพ์
cregox

2
ช่างเป็นประสบการณ์ที่น่ากลัวสำหรับผู้ใช้! ไม่มีวิธีที่ง่ายกว่านี้ไหม
Marc

2
ในโยเซมิตีของฉัน 10.10.2 sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"ไม่ทำงาน :(
Henrique de Sousa

8

BBEdit เป็นเครื่องมือฟรีที่ใช้ทำสิ่งนี้ในปี 2562 และแทนที่ฟังก์ชันการทำงานทั้งหมดของ TextErangler และคุณสามารถดาวน์โหลดได้จาก App Store และเว็บไซต์ผู้พัฒนา


TextEdit ไม่ใช่เครื่องมือที่เหมาะสมสำหรับการแก้ไขไฟล์กำหนดค่า - ใช้TextWranglerแทน ฟรีมีความสามารถในตัวในการแก้ไขไฟล์ที่มีการเข้าถึงรูทจากบัญชีผู้ดูแลระบบรวมถึงสิ่งต่าง ๆ เช่นการเปิดไฟล์และไดเรกทอรีที่มองไม่เห็นแก้ไขไฟล์ได้อย่างง่ายดายผ่าน SFTP เป็นต้น


emacsมีโหมด conf รหัสสีที่ดีเช่นกัน
msanford

ดูเหมือนจะไม่เหมาะกับฉันใน Mountain Lion ฉันได้รับข้อผิดพลาดเมื่อพยายามบันทึกไฟล์กำหนดค่าระบบใน TextWrangler สิ่งนี้มีการเปลี่ยนแปลงหรือไม่?
Simon East

@Simon: เสียงเหมือนคุณมีรุ่นของ TextWrangler จาก App Store มากกว่าการดาวน์โหลดโดยตรงจากbarebones.com ถ้าเป็นเช่นนั้นก็มีฟีเจอร์มากมาย (รวมถึงฟีเจอร์นี้) ออกเพื่อให้สอดคล้องกับนโยบายความปลอดภัยของ App Store ดังนั้นทิ้งมันและรับเวอร์ชั่นโดยตรงแทน!
Gordon Davisson

ถ้าคุณใช้ Mac เครื่องอื่นที่ไม่มีอินเทอร์เน็ตล่ะ การแก้ปัญหาการลักลอบ 2 สายขั้วยอมรับยังคงเป็นโดยทั่วไปดีขึ้น แต่สำหรับการใช้งานแบบวันต่อวันฉันจะไปกับบุคคลที่ 3 ตลอดทาง! :-)
cregox

6

นี่คือวิธีหลีกเลี่ยงการใช้ TextEdit ในฐานะ root:

EDITOR='open -Wne' sudo -e /etc/apache2/httpd.conf

คุณจะต้องออกจากการคัดลอก TextEdit หลังจากแก้ไขไฟล์

sudo -eบางครั้งรู้จักกันsudoeditแต่ไม่ใช่ใน OS X ทำสำเนาชั่วคราวของไฟล์ที่มีสิทธิ์เขียนสำหรับผู้ใช้ปัจจุบันเรียกใช้ตัวแก้ไขในรูปแบบ Unix ตามปกติแล้วคัดลอกกลับ

ตัวเลือกเพื่อopen: -Wรอให้ TextEdit เลิกออกดังนั้นควรsudoรู้ว่าเมื่อใดจึงจะคัดลอกไฟล์กลับมา -nตรวจสอบให้แน่ใจว่ามันกำลังรออินสแตนซ์แยกต่างหากของ TextEdit ไม่ใช่ที่คุณเปิดไว้แล้วซึ่งคุณอาจไม่ต้องการออก นอกจากนี้คุณยังสามารถใช้แทน-tแทน-eถ้าคุณมีโปรแกรมแก้ไขข้อความโปรดอื่น ๆ กว่า TextEdit

หากคุณมีEDITORชุดตัวแปรที่ใช้ตัวแก้ไขกราฟิกด้วยเครื่องมือบรรทัดคำสั่งที่สามารถรอได้ (เช่น TextMate หรือ BBEdit) คุณไม่จำเป็นต้องใช้ลูกเล่นใด ๆ และสามารถใช้sudo -e <file>โดยตรงได้


2

เนื่องจากผู้ใช้รูทถูกปิดการใช้งานวิธีเดียวที่จะบังคับให้แอป OS X โดยพลการมีสิทธิ์ใช้งานรูทคือการเปิดใช้งานรูทและเข้าสู่ระบบในฐานะรูท

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

คุณได้ลองใช้sudo open -a texteditเพื่อเปิดแอปแล้วหรือยัง?


คุณมีคำแนะนำเกี่ยวกับแอพที่มีฟังก์ชั่นการใช้งานนั้นหรือไม่? โดยเฉพาะอย่างยิ่ง :) ฟรี
Znarkus

3
มันไม่ถูกต้องนัก ใน Terminal.app ฉันเรียกใช้sudo su -เพื่อเริ่มเชลล์ในฐานะรูทแล้วฉันสามารถรันได้open "/Applications/Textedit.app/Contents/MacOS/TextEdit"สำเร็จ ฉันไม่ได้เปิดใช้งานผู้ใช้รูทหรือไม่ได้ล็อกอินเป็นผู้ใช้รูท
EmmEff

1
sudo chmod +w name_of_the_file
sudo open -a TextEdit name_of_the_file
sudo chmod -w name_of_the_file

ควรทำงาน


โอเคดังนั้นจึงเป็นไปไม่ได้ที่จะเปิดใช้ TextEdit เป็นรูท ฉันต้องการหลีกเลี่ยงการเปลี่ยนแปลงการอนุญาตที่ยุ่งยากเป็นพิเศษ
Znarkus

1
สิ่งต่าง ๆ เปลี่ยนไปใน Lion ฉันคิดว่ามันคือ sandboxing
Paul Eccles

ประเด็นก็คือไฟล์ที่คุณพยายามเปิดไม่สามารถเขียนได้ถึงรูทเนื่องจากการอนุญาตของพวกเขา มันจะเหมือนกันสำหรับไฟล์ใดไฟล์หนึ่งของคุณ (อันที่จริงมันก็เหมือนกันยกเว้นว่า TextEdit เป็น "ฉลาด" สำหรับไฟล์ของผู้ใช้ดังนั้นจึงเป็นการเปลี่ยนแปลงการอนุญาตโดยขอให้คุณ)
Gio

@Gio จริงมันเนื่องจากการ sandboxing สิงโต: มีสิทธิ์เริ่มต้น/etc/apache2/httpd.conf 0444ฉันพยายามทุกเช้าเพื่อแก้ไขไฟล์นั้น (ด้วยemacsระยะไกล) แต่ไม่เคยคิดที่จะตรวจสอบการอนุญาต (Lion ใหม่)
msanford

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