Comment supprimer une ligne d'un fichier nécessitant une autorisation telle que visudo en utilisant sed?

0

Je veux ajouter cette commande timestamp=20à la fin du visudofichier, ce qui augmentera le temps sudo pendant 20 min. De cette façon, je pourrai utiliser mon script bash pour installer de nombreuses applications. Une fois que j'ai terminé, je souhaite supprimer la même commande du visudofichier.

Ma question peut paraître triviale, mais comme elle visudonécessite une autorisation de modification, je ne sais pas comment l'utiliser pour créer un fichier nécessitant une autorisation.

Voici ce que je suis venu avec:

echo -e "add the timestamp" | sudo tee -a /etc/sudoers #This will add the timestamp command
sed '31,35' /etc/sudoers #This will remove the timestamp command

La première commande fonctionne parfaitement. Cependant, l'exécution de la deuxième commande montre cette erreur:

sed: -e expression # 1, char 5: commande manquante

Des suggestions ou des modifications que je peux utiliser?

Suhaib
la source
1
Le message d'erreur que vous avez publié indique que le "d" n'était pas présent lorsque vous avez exécuté la commande sed, mais que la réponse que vous avez publiée ci-dessous rend le fichier modifié en place.
dannysauer
De plus, vous devez ajouter "timestamp_timeout", pas "timestamp". Et le sed devrait vraiment supprimer une ligne correspondant à "Defaults timestamp_timeout = 20", et non cinq lignes du fichier. Tout ce scénario est suspect.
dannysauer

Réponses:

0

Ok, j'ai résolu ce problème. J'ai ajouté l'option -iet la dlettre après le chiffre 35. Les chiffres 31 et 35 signifient que sed supprimera tout ce qui se situe entre les lignes 31 à 35.

J'ai aussi ajouté la commande sudopour pouvoir utiliser les sedfichiers nécessitant une autorisation ...

Voici la dernière commande:

sudo sed '31, 35d '-i / etc / sudoers

Suhaib
la source