ОК ОК ОК! Я полностью получил это.
Это может быть немного излишним, но я не уверен, что файлы sudoers одинаковы в разных дистрибутивах.
Я нашел документацию по буферу хранения для sed здесь:
http://anaturb.net/sed.htm
и команда x для sed здесь:
http://www.kingcomputerservices.com/unix_101/hands_off_editing_with_sed_part_2.htm
и я придумал это:
sed -e '/^root/{h;}' -e 'x' -e 's/root/micronxd/' -e 'x' -e '/^root/G' -e 'wsudoers' sudoers
Вот разбивка 6 шагов:
1.
'/ ^ root / {h;}'
находит нескомментированные строки, начинающиеся с root , и заменяет им буфер хранения.
- обычный буфер sed: [весь файл sudoers]
- буфер хранения: root ALL = (ALL) ALL
2.
'x'
заменяет удерживающий буфер обычным буфером «be sed».
- обычный буфер sed: root ALL = (ALL) ALL
- буфер хранения: [весь файл sudoers]
3.
's / root / micronxd /'
заменяет root на micronxd
- обычный буфер sed: micronxd ALL = (ALL) ALL
- буфер хранения: [весь файл sudoers]
4.
'x'
заменяет удерживающий буфер на обычный буфер «be sed», снова.
- обычный буфер sed: [весь файл sudoers]
- буфер хранения: micronxd ALL = (ALL) ALL
5.
'/ ^ root / G'
G добавляет буфер хранения после соответствия строки ^ root .
- обычный буфер sed (только соответствующие биты):
##
Разрешить root ALL = (ALL) ALL запускать любые команды в любом месте
root ALL = (ALL) ALL
micronxd ALL = (ALL) ALL
- буфер хранения: micronxd ALL = (ALL) ALL
6.
wsudoers
записывает обычный буфер sed обратно в sudoers
Я уверен, что есть лучший способ, но я пытаюсь освоить sed. Кроме того, я не был уверен, является ли user MACHINE=COMMANDS ????
синтаксисом для всех систем Linux, или просто Fedora (с чем я имею дело).
В любом случае, я рад видеть другие пути (особенно лучшие).