Назад | Перейти на главную страницу

Как создать интерактивный вход для демона?

Я запускаю службу на машине 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.