Цей користувач наразі недоступний, але дозволяють запускати сценарій цим користувачем


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.. Як налаштувати його так, щоб мати змогу запускати скрипт таким чином, але запобігати входу в систему (консоль, ssh, ftp, ...) цього користувача?


Я помітив, що під час введення /usr/sbin/nologinв командному рядку комп'ютер відповідає This account is currently not available..


Про sudo su, дивіться unix.stackexchange.com/questions/218169/…
Kusalananda

Відповіді:


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 і завжди використовуйте візуально для цього. Синтаксис не тривіальний, і одна помилка може заблокувати вас із вашого кореневого облікового запису.)

Цей рядок у 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

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'.


-3

Це може бути не на 100% відносно питання, але може допомогти тому, у кого було подібне попереджувальне повідомлення This user is currently not available

1) Зверніться до своєї хостингової компанії, чи отримали ви доступ до оболонки.

2) якщо ви використовуєте CWP7: Встановіть доступ до оболонки на ВКЛ введіть тут опис зображення


2
1) доступ Shell явно доступний як питання переговорів про запуск su, sudoі всі види інших речей. 2) У запитанні немає вказівки на те, що відповідна установка стоїть за веб-панеллю управління будь-якої форми.
Філіп Кендалл

1
Так (крім сайту Q&A, а не форуму). Але корисною частиною є те, що ваша відповідь справді відповідна на питання, і я не думаю, що ця відповідь насправді є актуальною: плакат вже чітко має доступ до оболонки, тож як увімкнути її через панель управління (яка може навіть не існувати) вирішити проблему?
Філіп Кендалл

3
@ShapCyber: Зауважте, що це питання стосується того, хто вручну створив нового, спеціального користувача самостійно. Відповіді в цій "нитці" (Питання) повинні вирішувати ситуацію з цього питання. Якщо ви зіткнулися з іншою проблемою, яка вирішує цю проблему, правильним питанням є запитання та самовідповідь на власне нове запитання.
Jeff Schaller

1
Те, що сказав @JeffSchaller, є правильним. І я закликаю вас, ShapCyber, щоб дійсно зробити , будь ласка , запитайте і самостійно відповісти на питання з проблемою і її рішенням ви зіткнулися (досить докладно , щоб бути корисним); а потім додайте коментар до цього питання, щоб пов’язати своє. Ось як найкращим чином допомогти майбутнім читачам у рамках налаштування цього веб-сайту. :)
Wildcard

2
@ShapCyber, тому ми рекомендуємо вам відкрити нове запитання, щоб пошуки знайшли правильну відповідь на свою проблему.
Jeff Schaller
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.