Я использую настроенную установку Redmine для управления проектами. Мне удалось подключить новых пользователей и отправить информацию для входа в имеющийся у меня сценарий bash. Ниже мой сценарий:
#!/bin/sh
UNAME=$1
UPASS=$2
wall "$UNAME $UPASS"
useradd "$UNAME"
echo "$UPASS" | passwd "$UNAME" --stdin
usermod -g restricted "$UNAME"
Echo - это встроенная функция bash, поэтому она не будет отображаться в таблице процессов при вводе пароля. Проблема в том, что я получаю жалобу на разрешение от Redmine:
/opt/rms/redmine/new-user: line 5: /usr/sbin/useradd: Permission denied
Only root can do that.
/opt/rms/redmine/new-user: line 7: /usr/sbin/usermod: Permission denied
Это, очевидно, указывает на то, что мне нужно разрешение root или другой способ сделать это. Поэтому я попытался установить бит UID с разрешениями 4755 для файла, чтобы он запускался от имени пользователя root, и получил ту же ошибку, что и выше. Есть идеи, что здесь происходит?
Моя общая ситуация заключается в том, что я стремлюсь автоматически добавлять новых пользователей в систему управления проектами в качестве пользователей Linux, а затем, когда они добавляются в определенную группу, я планирую подключить ее, чтобы они получили расширенные разрешения, которые позволяют им получить доступ к репозиторию Mercurial через SSH - поэтому управление пользователями полностью осуществляется через интерфейс.
Из-за ограниченности информации я не собираюсь подробно теоретизировать о возможных последствиях для безопасности вашей архитектуры. Однако я был бы особенно осторожен с предоставлением возможности добавлять пользователей к пользователю без полномочий root.
С учетом сказанного, я бы не рекомендовал использовать бит SUID для этой цели. По крайней мере, потому что это дает дополнительную возможность каждому пользователю системы. Смысл, каждый пользователь потенциально может добавить пользователей.
В качестве альтернативы вы можете настроить судо чтобы позволить пользователю без полномочий root запускать usermod. Например, запустите visudo
и добавьте эту строку:
redmineuser ALL=NOPASSWD: /usr/sbin/usermod
Из man wall
:
Wall отображает содержимое файла или, по умолчанию, его стандартный ввод на терминалах всех пользователей, вошедших в систему.
Зачем вам передавать имя пользователя и пароль всем, кто вошел в систему?
Echo - это встроенная функция bash, поэтому она не будет отображаться в таблице процессов при вводе пароля.
Однако вы передаете пароль в качестве аргумента этому сценарию, что делает этот вопрос спорным.
Если вас беспокоит безопасность echo
появляется в ps
вывода, вы должны беспокоиться о других вещах, а также о проблеме с аргументом командной строки и о том, что SETUID на useradd
и передача паролей - плохая идея.