Возможно, странный вопрос, но я не эксперт по сценарию оболочки.
Я настраиваю сервер Ubuntu, начинающийся как корень. Я хотел бы нев интерактивном режиме установить новую учетную запись пользователя, удалить корневой вход в систему и установить ssh ключ, все в единственном сценарии.
Что я имею до сих пор:
# Reconfigure sshd to disable root login
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# add user with no password (vagrant copies root ssh key)
useradd new-user -d /home/new-user
echo 'new-user ALL=(ALL:ALL) ALL' >> /etc/sudoers
mkdir -p /home/new-user/.ssh
cp /root/.ssh/authorized_keys /home/new-user/.ssh/authorized_keys
chown new-user:new-user /home/new-user/.ssh/authorized_keys
# restart ssh
service ssh reload
Это работает - но я теперь немного обеспокоен, что пропускаю некоторую лазейку безопасности, или что это - плохой способ достигнуть задачи.
Существует ли более простой метод для достижения этого?
Спасибо.
На мой взгляд, это выглядит достаточно хорошо (больше опытных людей, пожалуйста, поправьте меня!), только несколько предостережений.
Вам не нужно перенастройте sshd_config для каждого пользователя, и было бы лучше вручную настроить авторизованные ключи для пользователя, поскольку у каждого пользователя могут быть разные ключи (но поведение, которое вы закодировали, может быть тем, которое вы хотите).
Вы также не можете необходимо перезапустить ssh после создания пользователя.
вот так:
#!bin/sh
# $Id$
# sshd
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
service ssh reload
# sudo
echo '%wheel ALL=(ALL) ALL' > /etc/sudoers.d/wheel
# user
useradd new-user -d /home/new-user
mkdir /home/new-user/.ssh
cp /root/.ssh/authorized_keys /home/new-user/.ssh/authorized_keys
chown -R new-user:new-user /home/new-user/.ssh/