Этот пользователь в настоящее время недоступен - но разрешить запуск сценария этим пользователем

22

Я создал специального пользователя в / etc / passwd с:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

Я не хочу разрешать вход в систему этого пользователя (через консоль, SSH, FTP, любым способом).

Он просто для запуска одного скрипта через:

sudo su secure -c '/home/someuser/secure.script'

Но это дает мне This user is currently not available.. Как настроить его так, чтобы он мог запускать скрипт таким образом, но запретить вход в систему (console, ssh, ftp, ...) этого пользователя в систему?


Я заметил , что когда я набираю /usr/sbin/nologinв командной строке, то компьютер отвечает This account is currently not available..

Питер
источник
О sudo su, см. Unix.stackexchange.com/questions/218169/…
Кусалананда

Ответы:

27

Это типичный вариант использования sudo.

Вы микшируете, sudoчто позволяет запускать команды от имени другого пользователя и легко настраивается (вы можете выборочно указать, какой пользователь может выполнять какую команду от имени какого пользователя), а suкакой переключается на другого пользователя, если вы знаете пароль (или являетесь пользователем root). suвсегда запускает оболочку, написанную на /etc/passwd, даже если su -cиспользуется. Из-за этого suне совместимо с /usr/sbin/nologin.

Вы должны использовать

sudo -u secure /home/someuser/secure.script

Как sudoнастраивается вы можете контролировать , кто может использовать эту команду , и если он / она должен ввести пароль , чтобы запустить его. Вы должны отредактировать, /etc/sudoersиспользуя visudoдля этого. (Будьте осторожны при редактировании / etc / sudoers и всегда используйте visudo для этого. Синтаксис не тривиален, и одна ошибка может заблокировать вас от вашей учетной записи root.)

Эта строка в sudoers позволяет любому в группе somegroupзапускать команду как secure:

%somegroup    ALL=(secure) /home/someuser/secure.script

Это позволяет любому в группе somegroupзапускать команду как secureбез ввода пароля:

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

Это позволяет user1выполнить команду как secureбез ввода пароля:

user1    ALL=(secure) /home/someuser/secure.script
cg909
источник
13

Я обнаружил, что основная проблема " /usr/sbin/nologin" в /etc/passwd Когда я хочу выполнить su в этом случае, он должен иметь-s /bin/bash внутри, например:su -s /bin/bash -c '/home/someuser/secure.script' secure

Питер
источник
1
Да, suпо умолчанию используется оболочка, написанная в / etc / passwd. Использование su- это способ входа в систему как пользователя от другого пользователя. nologinпечатает сообщение «Этот пользователь в данный момент недоступен». и выходит. sudoне использует оболочку для выполнения команды, поэтому использование sudoбез suбудет работать. Смотрите мой ответ для получения дополнительной информации sudo.
cg909
2

suиспользует оболочку, указанную в /etc/passwd.

Вам не нужно использовать su с sudo.

Поэтому не смешивайте suс sudo: используйте sudo -u secure '/home/someuser/secure.script'.

Ctrl-Alt-Делор
источник
-2

Возможно, это не на 100% относится к вопросу, но может помочь кому-то, у кого было похожее предупреждение This user is currently not available

1) Узнайте у вашей хостинговой компании, был ли вам предоставлен доступ к оболочке.

2) если вы используете CWP7: установите для Shell Access значение ON введите описание изображения здесь

ShapCyber
источник
2
1) доступ Shell явно доступен как вопрос переговоров о запуске su, sudoи все виды других вещей. 2) В вопросе нет указания на то, что рассматриваемая установка находится за веб-панелью управления в любой форме.
Филипп Кендалл
1
Да (кроме сайта вопросов и ответов, а не форума). Но часть быть полезным является обеспечение того , чтобы ваш ответ на самом деле отношения к вопросу, и я не думаю , что этот ответ является на самом деле отношением: плакат явно имеет оболочки доступа уже, так что как бы включить его с помощью панели управления (который может даже не существовать) решить проблему?
Филипп Кендалл
3
@ShapCyber: обратите внимание, что этот вопрос касается кого-то, кто самостоятельно создал нового, специального пользователя. Ответы в этой «ветке» (Вопрос) должны учитывать ситуацию в этом вопросе. Если вы столкнулись с другой проблемой, которая имеет решение, правильное решение - задать свой вопрос и ответить на него самостоятельно.
Джефф Шаллер
1
То, что сказал @JeffSchaller, правильно. И я призываю вас, ShapCyber, чтобы действительно сделать , пожалуйста , спросите и самостоятельно ответить на вопрос с проблемой и ее решением вы столкнулись (достаточно подробно , чтобы быть полезным); а затем добавьте комментарий к этому вопросу, чтобы добавить ссылку на ваш. Вот как лучше всего помочь будущим читателям в рамках создания этого сайта. :)
Wildcard
2
@ShapCyber, поэтому мы рекомендуем вам открыть новый вопрос, чтобы поиски нашли правильный ответ для своей проблемы.
Джефф Шаллер