Кроме стандартных аккаунтов типа root и username, имеющих пароль и ассоциированных в с конкретными пользователями системы в Unix-системах есть еще несколько типов:
- LK: Locked-аккаунты, которым запрещена вся интерактивная деятельность в системе
- NL: No login-аккаунты, которые не могут быть аутентифицированы (т.о. невозможен вход в систему через ssh, login)
- NP No password-аккаунты, которые не имеют паролей.
Они нужны как правило для запуска различных сервисов системы
Изменяется тип аккаунта командой passwd, вторая команда покажет его текущий статус:
passwd [-l | -N | -u] имя_аккаунта
passwd -s имя_аккаунта
Более подробно об этом написано здесь: Managing Non-Login and Locked Solaris Accounts
Укрощаем cron
Если, например создать crontab для locked-пользователя, то в логе /var/cron/log появятся ошибки типа
! bad user (locked) Wed Nov 3 15:48:00 2010
> CMD: date > /tmp/crontest
> locked 3702 c Wed Nov 3 15:48:00 2010
< locked 3702 c Wed Nov 3 15:48:00 2010 rc=1
Как же быть в случае, если нам необходим только cron, а запуск процессов через другие сервисы должен быть запрещен? К счастью, cron использует систему PAM, которая позволяет нам самим выбирать, каким образом должны быть разрешены cron-задания. Таким образом, нам достаточно добавить следующую строчку в /etc/pam.conf:
cron account sufficient pam_list.so.1 allow=/etc/cron.d/cron.allow
sufficient в данном случае означает, что PAM должен сразу же вернуть состояние Success и игнорировать остальные модули, а опция allow указывает файл со списком разрешенных пользователь
И создать файл /etc/cron.d/cron.allow, содержащий всего одну строчку:
После этого cron нормально работает:
> CMD: date > /tmp/crontest
> locked 3780 c Wed Nov 3 16:07:00 2010
< locked 3780 c Wed Nov 3 16:07:00 2010
Более подробную информацию можно найти в man-страницах команды passwd, модуля pam_list и по указанной мной ссылке.