Я запускаю службу на машине debian / linux, которая запускается при загрузке с сеансом «screen», к которому я всегда могу подключиться.
Я хотел бы создать имя пользователя, под которым я могу запускать эту службу. На данный момент я использую «обычную» учетную запись для входа. Я хотел бы добавить безопасность имени пользователя, посвященного этому серверу (аналогично тому, как «никто» или «сеть» используются с apache).
Требования:
Я полагаю, что в решении будет творческое использование su / sudo и деталей того, как создать учетную запись.
Сначала создайте учетную запись screen
сеанс выполняется как (скажем, он называется screenimage
), а также группу пользователей, которым разрешено его использовать (скажем, screenusers
):
adduser --system --group screenimage
addgroup --system screenusers
Затем для каждого пользователя, которому разрешено использовать его, добавьте их в screenusers
группа:
adduser USER screenusers
Затем добавьте утвержденных пользователей в /etc/sudoers
: бегать visudo
и добавьте строку
%screenusers ALL = (screenimage) /usr/bin/screen
ETA: Чтобы обратиться к другим ответам на этот пост: --system
создает учетные записи без оболочки или пароля. В sudoers
линия означает, что пользователи не могут работать screen
, как screenimage
только пользователь.
Создание пользователя - самая простая часть. Просто добавьте пользователя со скриптом adduser (это специфично для debian, но я заметил это в ваших тегах), затем отредактируйте полученную строку / etc / passwd для этого пользователя. Изменить x
к !
это делает так, что ни один пароль никогда не будет считаться действительным. + Изменить /bin/bash
к /bin/false
так что, если кто-то войдет в систему как этот пользователь, он не получит оболочки.
Что касается остального, это действительно зависит от того, какую службу вы пытаетесь запустить или как вам нужно с ней взаимодействовать. Я чувствую, что, вероятно, есть лучший способ решить это, чем запускать его в сеансе экрана.
Хорошо, как насчет (в /etc/rc.something):
sudo -u user screen -d -m service
и установить пользователь оболочка для /bin/false
.