Сделайте .sh, который устанавливает новое имя пользователя, имя хоста и пароль

Я распределяю VM своим студентам для новички, программирующие курс. Для скорости, вместо того, чтобы заставить их устанавливать Ubuntu с нуля, я планирую дать им полностью настроенное изображение, которое они могут просто выполнить.

Для получения его, настроил, я дал ему жертвенное имя хоста, имя пользователя и пароль. Что самый чистый путь состоит в том, чтобы изменить это для студентов, когда они встают и выполнение?

Я имею до этой сути, которая имеет некоторый ненадежный прогресс с именем хоста, но имя пользователя сопротивляется мне изменяющий его.

Я хотел бы, чтобы это было максимально безболезненным процессом, поскольку это, как предполагается, происходит в их первой лаборатории.

Совершенно возможно, что существует совершенно другой подход, который я должен проявить. Я открыт для всех предложений.

#!/bin/bash
clear
toilet  "     CODE1161     "  --metal --font future
echo    ""
toilet  "Let's get started!"  --metal --font future
echo    ""
echo    "We need to make this computer be YOURS"
echo    "We need a name for you and your computer, make it short or it'll take up a lot of space."
echo    "My computer is called um and my name is ben, so I get ben@um:~$ as my command prompt."
echo    ""
read -p "Enter a name for your computer:"  compname
read -p "Enter your name: "  username
echo    ""
toilet  "$username@$compname~$"  --gay --font wideterm
echo    ""
echo    "What do you think? If you hate it, press ctrl+c and do this again"
read -p "otherwise, just press enter." sacrificial

# set the host name, in a million places, for some unknown reason.
echo "1"
sed -i "/127\.0\.1\.1\s*vc/ { c \
127.0.1.1   $compname
}" /etc/hosts
echo "2"
sudo hostname -b $compname
echo "3"
sudo hostnamectl set-hostname $compname
echo "4"
sudo groupadd $username
echo "5"
sudo usermod -d /home/$username -m -g $username -l $username ben

a screen shot of the output progress

9
задан 19 February 2017 в 19:41

2 ответа

Почему не только используют установку OEM для этого? Это не столь симпатично, но это сделало задание. Если Вы хотите спуститься по этому маршруту, см. превосходный ответ izx на этот вопрос: , Как я предварительно устанавливаю Ubuntu для кого-то (установка OEM)?

В основном, система будет (на первой начальной загрузке), предлагают пользователю набор информации персонализировать их машину. Это включает язык, местоположение, имя пользователя, имя хоста, пароль, и так далее. В основном, все, с чем Ваш компьютер будет обычно предлагать Вам установку.

Это точно , для чего предназначены изображения OEM, и они делают отличную работу по нему. Плюс, Вы дадите Вашим студентам маленький вкус "установки Ubuntu" опыт. Хотя, установки Ubuntu не являются точно болезненными. Можно, вероятно, сделать это в едином классе и дать студентам некоторую домашнюю работу, чтобы персонализировать и исследовать их VM. Плюс, разделение является болезненной забавой!

<час>

Назад к проблеме под рукой (и ответ на Ваш фактический вопрос).....

Позволяют нам посмотреть man usermod для получения объяснения того, что продолжается:

CAVEATS
   You must make certain that the named user is not executing any
   processes when this command is being executed if the user's numerical
   user ID, the user's name, or the user's home directory is being
   changed.  usermod checks this on Linux, but only check if the user is
   logged in according to utmp on other architectures.

В основном, это просто означает, что мы не можем изменить UID пользователя, их имя пользователя, корневой каталог или что-либо вида, если пользователь зарегистрирован.

Так, мы можем сделать некоторый забавный материал для установки этого на следующей начальной загрузке системы. Вместо Вашего сценария, делающего работу, мы заставляем Ваш сценарий сделать другой сценарий, чтобы сделать весь тяжелый подъем и управление. Пример этого:

# Make the first-run script
touch /etc/init.d/firstrun-setup.sh

# Add in user modifier
echo "usermod -d /home/$username -m -g $username -l $username ben" >> /etc/init.d/firstrun-setup.sh

# Add in group rename
echo "groupmod -n $username ben" >> /etc/init.d/firstrun-setup.sh

# Add in password expiry
echo "passwd -e $username" >> /etc/init.d/firstrun-setup.sh

# Add in file self-destruct
echo "rm /etc/init.d/firstrun-setup.sh" >> /etc/init.d/firstrun-setup.sh

# Mark the file as executable
chmod a+x /etc/init.d/firstrun-setup.sh

# Reboot the computer
reboot

В основном, путем выполнения этого, Вы - события "организации очередей" для работы следующей начальной загрузки системы. Это будет работать, прежде чем пространство пользователя происходит, таким образом, система выполнит эти команды как корень. Поэтому ben пользователь не будет зарегистрирован, и система не будет жаловаться.

Вы, возможно, все еще должны добавить дополнительные команды к этой вещи позволить больше персонализации (как определение подлинного имени, и т.д.). Однако это является дополнительным и только должно быть сделано, если Вы хотите, чтобы это произошло во время сценария установки.

, Хотя, это может быть хорошая идея просто создать нового пользователя для студентов полностью и затем сохранить Вашу существующую жертвенную учетную запись. Таким образом, если что-то происходит, можно войти и восстанавливать/управлять их машину если вообще необходимый. Конечно, при предоставлении доступа администратора студентов к их VM это - вид спорного вопроса, поскольку они могли бы очень хорошо удалить пользователя "преподавателя", потому что они - студенты.

8
ответ дан 23 November 2019 в 05:05

В экране входа в систему сделайте, чтобы они нажали ctrlaltF2 и вход в систему как ben от терминала, который открывается и выполненный

sudo passwd

И дайте им все равно пароль для корня, т.е., число курса, поэтому если что-то повреждается, можно войти и зафиксировать его. Затем сделайте, чтобы они вышли из системы путем ввода exit, и войдите в систему как корень с их новым паролем root и запустите скрипт (Вам, вероятно, придется изменить его так, он изменяется ben пользователь и не корень).

Или, сделайте, чтобы они вошли в систему как ben от терминала путем нажатия ctrlaltF2 (как прежде) в экране входа в систему и имели их, затем запускает скрипт оттуда. Это могло работать, потому что, поскольку Muru и Kaz Wolfe указали в предыдущем ответе, пользователь не может выполнять процессы и регистрироваться на пути, терминал не должен запускать процессы, такой как X или Ubuntu-Desktop, или другие процессы пространства пользователя, которые вмешиваются в usermod. (Я не знаю, работает ли это, я не попробовал его, но это стоит попытки).

0
ответ дан 23 November 2019 в 05:05

Другие вопросы по тегам:

Похожие вопросы: