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.