Comment ouvrir un fichier en tant que root dans TextEdit on Lion?

13

Comment ouvrir un fichier en tant que root, dans TextEdit? J'ai essayé ces commandes en tant que root, mais TextEdit dit toujours qu'il est verrouillé:

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

Et bien sûr, sudo !!cela ne fait aucune différence.

Znarkus
la source

Réponses:

14

Vous pouvez ouvrir une instance textedit en tant que root en entrant le chemin d'accès complet à l'exécutable réel:

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

Une fois votre instance racine ouverte, vous pouvez rechercher le fichier dont vous avez besoin ou le faire à partir de la ligne de commande:

sudo su - root -c "open -e /etc/apache2/httpd.conf"
Tyr
la source
Merci, ça a marché! sudo /Applications/Textedit.app/Contents/MacOS/TextEditpuis ouvrez simplement le fichier de TextEdit
Znarkus
Si vous ne souhaitez pas taper cela à chaque fois que vous pouvez créer un alias en accédant à votre répertoire personnel dans Terminal pico .bash_profile, ajoutez alias sudotext='sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"', enregistrez le fichier, redémarrez Terminal. Maintenant, vous pouvez simplement taper sudotextpour démarrer TextEdit en tant que root.
webbiedave
Comme d'autres réponses l'ont souligné, pour le faire dans 1 doublure, la seule vraie option est d'avoir un éditeur tiers qui le prend en charge. Tapez ensuite open -t "/etc/hosts"par exemple. Avec TextWrangler, vous pouvez simplement taper edit /etc/hosts.
cregox
2
Quelle horrible expérience utilisateur! N'y a-t-il pas un moyen plus simple?
Marc
2
Eh bien, sur mon Yosemite 10.10.2, ça ne marche sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"pas :(
Henrique de Sousa
8

BBEdit est l'outil gratuit pour le faire en 2019 et il remplace toutes les fonctionnalités de TextErangler et vous pouvez le télécharger à partir de l'App Store et du site Web du développeur.


TextEdit n'est pas vraiment le bon outil pour éditer des fichiers de configuration - utilisez plutôt TextWrangler . C'est gratuit, a la capacité intégrée de modifier des fichiers avec un accès root à partir d'un compte administrateur, ainsi que des choses comme l'ouverture de fichiers et de répertoires invisibles, la modification facile de fichiers via SFTP, etc.

Gordon Davisson
la source
emacsa aussi un joli mode de conf de code couleur.
msanford
Cela ne semble pas fonctionner pour moi dans Mountain Lion. Je reçois une erreur lorsque j'essaie d'enregistrer des fichiers de configuration système dans TextWrangler. Cela a-t-il changé?
Simon East
@Simon: On dirait que vous avez la version de TextWrangler sur l'App Store, plutôt que le téléchargement direct sur barebones.com . Si c'est le cas, plusieurs fonctionnalités (dont celle-ci) ont été supprimées pour se conformer aux politiques de sécurité de l'App Store; alors jetez-le et obtenez la version directe à la place!
Gordon Davisson
Et si vous êtes sur un Mac étranger sans Internet? La solution acceptée par les 2 lignes de terminaux de piratage est encore généralement meilleure. Mais pour une utilisation pratique au quotidien, je vais avec des tiers tout le temps! :-)
cregox
6

Voici un moyen d'éviter d'exécuter TextEdit en tant que root:

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

Vous devrez quitter la copie de TextEdit après avoir modifié le fichier.

sudo -e, parfois appelé sudoeditOS X, mais pas sur celui-ci, crée une copie temporaire du fichier avec une autorisation d'écriture pour l'utilisateur actuel, appelle un éditeur dessus de la manière Unix habituelle, puis le recopie.

Les options pour open: -Wattend que TextEdit se ferme, donc sudosait quand recopier le fichier. -ngarantit qu'il attend une instance distincte de TextEdit, pas celle que vous avez déjà ouverte et que vous ne voudrez peut-être pas quitter. Vous pouvez également remplacer -tau lieu de -esi vous avez un éditeur de texte préféré autre que TextEdit.

Si vous avez déjà un EDITORensemble de variables pour utiliser un éditeur graphique avec son propre outil de ligne de commande capable d'attendre (comme TextMate ou BBEdit), alors vous n'avez besoin d'aucune de ces astuces et vous pouvez simplement l'utiliser sudo -e <file>directement.

Kevin Reid
la source
2

Étant donné que l'utilisateur root est désactivé, la seule façon de forcer une application OS X arbitraire à disposer des autorisations root est d'activer root et de se connecter en tant que root.

Les applications peuvent bien sûr utiliser l'API pour demander au système l'authentification et faire apparaître la boîte de dialogue que vous attendez lorsqu'on vous demande un utilisateur administrateur et un mot de passe. TextEdit n'a pas cette fonction, vous devez donc contourner les autorisations de fichier avant et après avoir ouvert et écrit les fichiers souhaités.

Avez-vous essayé sudo open -a texteditd'ouvrir l'application?

bmike
la source
Avez-vous des suggestions sur les applications qui ont cette fonctionnalité? De préférence gratuit :)
Znarkus
3
Ce n'est pas tout à fait exact. Dans Terminal.app, je lance sudo su -pour démarrer un shell en tant que root, puis je peux exécuter open "/Applications/Textedit.app/Contents/MacOS/TextEdit"avec succès. Je n'ai pas l'utilisateur root activé et je ne me suis pas connecté en tant qu'utilisateur root.
EmmEff
1
sudo chmod +w name_of_the_file
sudo open -a TextEdit name_of_the_file
sudo chmod -w name_of_the_file

Devrait marcher

Gio
la source
D'accord, il n'est donc pas possible de lancer TextEdit en tant que root? J'aimerais vraiment éviter les tracas supplémentaires de changer les autorisations d'avant en arrière.
Znarkus
1
Les choses ont changé à Lion, je suppose que c'est le sandboxing
Paul Eccles
Le fait est que le fichier que vous essayez d'ouvrir n'est pas accessible en écriture à la racine en raison de leur autorisation. Ce serait la même chose pour l'un de vos fichiers (en fait, c'est la même chose, sauf que TextEdit est "intelligent" pour les fichiers des utilisateurs, donc il modifie l'autorisation en vous le demandant).
Gio
@Gio En effet, cela est dû au sandboxing de Lion: /etc/apache2/httpd.confdispose d'autorisations par défaut 0444. J'ai essayé toute la matinée de modifier ce fichier (avec à emacsdistance) mais je n'ai jamais pensé à vérifier les (nouveaux Lion) autorisations.
msanford
-5
sudo nano /etc/hosts 

travaille pour Lion

Bektur
la source
2
La question concerne TextEdit, pas nano.
gosmond