Skrypt inicjujący solaris 8 prosi o podanie hasła użytkownika

3

Mam skrypt w fazie inicjalizacji Solaris 8, pod /etc/rc3.d, który zawiera a su - username -c "a command", ale widzę przez komunikaty rozruchowe, że polecenie su pyta o hasło użytkownika. W wyniku tego rozruch jest kontynuowany (nie ma konsoli, która podałaby hasło użytkownika), a skrypt się nie powiedzie.

Ten sam skrypt w systemie Solaris 10 działa podczas rozruchu.

Dziwne, że skrypt uruchamiany jako root prosi o podanie zwykłego hasła użytkownika.

fluca1978
źródło
Co robi su - username uruchomić jako root? Czy sprawdziłeś strony podręcznika? To z pewnością dziwne.
vonbrand
Opcja - jest skrótem dla -l, czyli do logowania się w tym samym środowisku użytkownika docelowego. I działa, jeśli działa interaktywnie, bez pytania o hasło.
fluca1978
Sprawdź, kto uruchamia ten skrypt, tj. Dodaj tam osoby, które / whoami / inne i zbierz dane wyjściowe [Jak to przypomina mi ponad 400 lat Flamewara na lwn.net na temat mitów dotyczących systemd, gdzie niektórzy twierdzą, że bałagan sysvinit jest łatwy do debugowania ...]
vonbrand
Zaczekaj chwilę, co Solaris 8 używa do organizowania rozruchu? To już nie jest tradycyjny init SysV, prawda? I Solaris 10?
vonbrand
BTW, mam zwyczaj używania Nie skróty w skryptach init (i innych systemach-y): Nie polegaj na $ PATH, wszystkie opcje w pełni zapisane, ... To po kilku raczej niemiłych niespodziankach.
vonbrand

Odpowiedzi:

1

Jeśli nie masz kilku naprawdę dziwnych niestandardowych modułów PAM, nie ma możliwości, aby „su” pytało o hasło podczas uruchamiania jako root. Używając su - user -c ... z myślnikiem (-) zamiast używać su user -c ..., twój skrypt startowy przetwarza pliki startowe „dot”. Prawdopodobnie coś w ich plikach kropkowych wywołuje inny su lub że wywołane polecenie faktycznie robi inne su.

Na podobnej zasadzie, w przypadku wielu skryptów, pomocne jest przeczytanie linii exec < /dev/null. Zapobiegnie to próbom odczytu standardowego wejścia dla większości rzeczy. Może to nie pomóc w skryptach rozruchowych i su jednak, ponieważ chyba że się nie mylę, Solaris 8 su chwyta terminal zamiast standardowego.

Sprawdź pliki kropek. I spróbuj usunąć „-” z su aby nie były przetwarzane. Jeśli masz jakieś ustawienia, które muszą być widoczne zarówno dla interaktywnego użycia, jak i przez skrypt rozruchowy, rozważ umieszczenie tych ustawień w tak zwanym pliku środowiska. Pliki kropek i skrypt rozruchowy mogą wtedy oba źródła pliku środowiska. Ustawienia w pliku środowiska prawdopodobnie będą się rzadko zmieniały, a proces rozruchu jest mniej prawdopodobny, jeśli ktoś zmieni pliki kropek.

Mike Mondy
źródło