Ten użytkownik jest obecnie niedostępny, ale zezwala na uruchomienie skryptu przez tego użytkownika

22

Stworzyłem specjalnego użytkownika w / etc / passwd za pomocą:

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

Nie chcę zezwalać na logowanie tego użytkownika (przez konsolę, ssh, ftp, w jakikolwiek sposób).

On jest po prostu do uruchomienia jednego skryptu poprzez:

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

Ale to mi daje This user is currently not available.. Jak skonfigurować, aby można było uruchamiać skrypt w ten sposób, ale zapobiegać logowaniu (konsoli, ssh, ftp, ...) tego użytkownika do systemu?


Zauważyłem, że po wpisaniu /usr/sbin/nologinw wierszu polecenia, komputer reaguje This account is currently not available..

Piotr
źródło
O sudo su, patrz unix.stackexchange.com/questions/218169/…
Kusalananda

Odpowiedzi:

27

Jest to typowy przypadek użycia dla sudo.

Miksujesz, sudoco pozwala na uruchamianie poleceń jako inny użytkownik i jest wysoce konfigurowalne (możesz selektywnie określić, który użytkownik może uruchomić które polecenie jako który użytkownik) i suktóry przełącza się na innego użytkownika, jeśli znasz hasło (lub jesteś rootem). suzawsze uruchamia napisaną powłokę /etc/passwd, nawet jeśli su -cjest używana. Z tego powodu sunie jest kompatybilny z /usr/sbin/nologin.

Powinieneś użyć

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

W miarę sudokonfigurowalności możesz kontrolować, kto może korzystać z tego polecenia i czy musi wprowadzić hasło, aby je uruchomić. Aby to zrobić, musisz dokonać edycji /etc/sudoersza pomocą visudo. (Zachowaj ostrożność podczas edytowania / etc / sudoers i zawsze używaj do tego visudo. Składnia nie jest trywialna, a jeden błąd może zablokować ci konto root).

Ta linia w sudoers pozwala każdemu w grupie somegroupna uruchomienie polecenia jako secure:

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

Dzięki temu każdy w grupie somegroupmoże uruchomić polecenie securebez wprowadzania hasła:

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

Pozwala to user1na uruchomienie polecenia securebez wprowadzania hasła:

user1    ALL=(secure) /home/someuser/secure.script
cg909
źródło
13

Odkryłem, że głównym problemem jest „ /usr/sbin/nologin” w /etc/passwd Kiedy chcę wykonać su w tym przypadku, musi mieć -s /bin/bashwewnątrz, więc na przykład:su -s /bin/bash -c '/home/someuser/secure.script' secure

Piotr
źródło
1
Tak, sudomyślnie używa powłoki napisanej w / etc / passwd. Używanie sujest sposobem na zalogowanie się jako użytkownik od innego użytkownika. nologindrukuje komunikat „Ten użytkownik jest obecnie niedostępny”. i wychodzi. sudonie używa powłoki do wykonania komendy, więc użycie sudobez subędzie również działać. Więcej informacji na temat mojej odpowiedzi sudo.
cg909
2

suużywa powłoki określonej w /etc/passwd.

Nie musisz używać suz sudo.

Dlatego nie mieszaj suz sudo: użyj sudo -u secure '/home/someuser/secure.script'.

ctrl-alt-delor
źródło
-3

To może nie być w 100% istotne dla pytania, ale może pomóc komuś, kto miał podobny komunikat ostrzegawczy This user is currently not available

1) Skontaktuj się z firmą hostingową, czy uzyskałeś dostęp do powłoki.

2) jeśli używasz CWP7: Ustaw Shell Access na ON wprowadź opis zdjęcia tutaj

ShapCyber
źródło
2
1) dostęp Shell jest wyraźnie dostępny jak kwestia rozmów o bieganiu su, sudoi wszelkiego rodzaju inne rzeczy. 2) Nic nie wskazuje na to, że dana instalacja znajduje się za panelem sterowania w dowolnej formie.
Philip Kendall,
1
Tak (inne niż strona z pytaniami i odpowiedziami, a nie forum). Ale częścią bycia pomocnym jest upewnienie się, że twoja odpowiedź jest rzeczywiście istotna dla pytania, i nie sądzę, że ta odpowiedź jest rzeczywiście istotna: plakat wyraźnie ma już dostęp do powłoki, więc jak włączyć go za pomocą panelu sterowania (który może nawet nie istnieć) rozwiązać problem?
Philip Kendall,
3
@ShapCyber: Zwróć uwagę, że to pytanie dotyczy osoby, która samodzielnie utworzyła nowego specjalnego użytkownika. Odpowiedzi w tym „wątku” (pytaniu) powinny dotyczyć sytuacji w tym pytaniu. Jeśli napotkałeś inny problem, który ma to jako rozwiązanie, właściwą rzeczą jest, aby zadać i samodzielnie odpowiedzieć na swoje nowe pytanie.
Jeff Schaller
1
To, co powiedział @JeffSchaller, jest poprawne. I zachęcam cię, ShapCyber, do zrobienia naprawdę , proszę, zadaj sobie pytanie i odpowiedz na nie samodzielnie, z napotkanym problemem i rozwiązaniem (wystarczająco szczegółowo, aby były przydatne); a następnie dodaj komentarz do tego pytania, aby utworzyć link do twojego. W ten sposób najlepiej pomóc przyszłym czytelnikom w ramach konfiguracji tej witryny. :)
Wildcard,
2
@ShapCyber ​​dlatego zachęcamy do otwarcia nowego pytania, aby wyszukiwarka znalazła właściwą odpowiedź na swój problem.
Jeff Schaller