Какой самый простой способ или способ автоматизировать добавление пользователя в новый файл sudoers? - PullRequest
1 голос
/ 18 марта 2011

итак, у меня есть micronxd.Я передал micronxd.теперь я хочу сделать micronxd пользователем sudo.

Я пытаюсь упаковать как можно больше этого процесса в сценарий оболочки.Если это возможно, может ли решение включать sed'ing файл sudoers?Я хотел бы получить действительно сильное понимание этого ужасного маленького самородка (сед).

Ответы [ 2 ]

5 голосов
/ 18 марта 2011

Файл sudoers действительно должен редактироваться только с помощью visudo(8).

При этом, возможно, вам следует просто добавить micronxd в группу wheel при добавлении пользователя micronxd, (см. параметр adduser(8) --add_extra_groups), а затем добавьте эту строку в sudoers (через visudo(8) :):

%wheel ALL=(ALL) ALL

Теперь каждый пользователь, которого вы создаете с основной или дополнительной группой wheelполучает sudo доступ автоматически.Возможно, вам больше не придется редактировать файл sudoers.

(Обратите внимание, что вы можете легко добавить любого желаемого в группу wheel; vigr(8), найти группу wheel и добавить ихвведите логин в строку. Используйте запятые для разделения имен пользователей.)

0 голосов
/ 18 марта 2011

ОК ОК ОК! Я полностью получил это. Это может быть немного излишним, но я не уверен, что файлы 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 (с чем я имею дело).

В любом случае, я рад видеть другие пути (особенно лучшие).

...