Ne, přímé echo nebude fungovat, musíte ho spustit v subshellu. Zkuste místo toho toto:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
Můžete jednoduše echo
(samozřejmě se zvýšenými oprávněními) přímo do /etc/sudoers
soubor:
sudo -i
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
# ^^
# tab
(všimněte si znaku tabulátoru mezi uživatelským jménem a prvním ALL
)
Nebo pro skript:
#!/bin/bash
# Run me with superuser privileges
echo 'nickw444 ALL=(ALL:ALL) ALL' >> /etc/sudoers
Poté uložte do somefile.sh
, chmod a+rx
a spusťte sudo ./somefile.sh
z okna terminálu.
Chcete-li přidat více uživatelů, změňte skript na toto;
#!/bin/bash
while [[ -n $1 ]]; do
echo "$1 ALL=(ALL:ALL) ALL" >> /etc/sudoers;
shift # shift all parameters;
done
Poté spusťte skript takto (za předpokladu, že jste jej uložili jako addsudousers.sh
):
sudo ./addsudousers.sh bob joe jeff
tedy oddělené prostorem.
Čtení jmen ze souboru:
[email protected] ~ $ sudo ./addsudousers.sh `cat listofusers.txt`
listofusers.txt
měly by být také odděleny mezerou.
Upravit: Jappie Kirk správně poukazuje na to, že nemůžete přímo volat sudo echo ... >> /etc/sudoers
protože >>
přesměrování je řešeno shellem, který do té doby zrušil oprávnění superuživatele. Pokud však spustíte skript, který obsahuje echo ... >> /etc/sudoers
a samotný skript má práva superuživatele, vše by mělo fungovat v pořádku.