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.
su - username
uruchomić jako root? Czy sprawdziłeś strony podręcznika? To z pewnością dziwne.Odpowiedzi:
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 innysu
lub że wywołane polecenie faktycznie robi innesu
.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 isu
jednak, ponieważ chyba że się nie mylę, Solaris 8su
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.źródło