Nein, ein direktes Echo funktioniert nicht, Sie müssen es in einer Subshell ausführen. Versuchen Sie stattdessen Folgendes:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
Sie könnten einfach echo (natürlich mit erhöhten Rechten) direkt zum /etc/sudoers Datei:
sudo -i
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
# ^^
# tab
(Beachten Sie das Tabulatorzeichen zwischen dem Benutzernamen und dem ersten ALL )
Oder für ein Skript:
#!/bin/bash
# Run me with superuser privileges
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
Speichern Sie dann unter somefile.sh , chmod a+rx es und führen Sie sudo ./somefile.sh aus aus einem Terminalfenster.
Um mehrere Benutzer hinzuzufügen, ändern Sie das Skript wie folgt:
#!/bin/bash
while [[ -n $1 ]]; do
echo "$1 ALL=(ALL:ALL) ALL" >> /etc/sudoers;
shift # shift all parameters;
done
Führen Sie dann das Skript wie folgt aus (vorausgesetzt, Sie haben es als addsudousers.sh gespeichert ):
sudo ./addsudousers.sh bob joe jeff
das heißt, durch Leerzeichen getrennt.
So lesen Sie die Namen aus einer Datei:
[email protected] ~ $ sudo ./addsudousers.sh `cat listofusers.txt`
listofusers.txt sollten ebenfalls durch Leerzeichen getrennt werden.
Bearbeiten: Jappie Kirk weist zu Recht darauf hin, dass Sie sudo echo ... >> /etc/sudoers nicht direkt anrufen können weil die >> die Umleitung wird von der Shell gehandhabt, die zu diesem Zeitpunkt die Superuser-Privilegien fallen gelassen hat. Wenn Sie jedoch ein Skript ausführen, das echo ... >> /etc/sudoers enthält und das Skript selbst Superuser-Rechte hat, sollte alles gut funktionieren.