Uruchamiam skrypt bash z perspektywy roota, która następnie uruchamia program w skrypcie
su -c "sh /home/user2/script.sh" -m user2
Problem polega na tym, że program uruchamiany przez ten skrypt, mimo że jest uruchamiany jako użytkownik2 , nadal próbuje utworzyć pliki w katalogu /root/.config/ , co oczywiście kończy się niepowodzeniem, ponieważ nie jest dozwolone przez użytkownika2 .
Czy robię coś źle? Czy istnieje inny lepszy sposób na faktyczną zmianę użytkownika w skrypcie, wprowadzenie hasła użytkownika i uruchomienie programu?
[bash]
i zaczyna się od: „Uruchamiam skrypt bash ...”. W dzisiejszych czasach nie jest używane Bash, ponieważ jest to domyślna powłoka w większości dystrybucji Linuksa. Jeśli twój skrypt zaczyna się od #!/bin/bash
lub #!/bin/sh
, to określi, która powłoka jest używana, niezależnie od powłoki, z której został uruchomiony. Na marginesie, jest to wspólny program sh
i bash
jest to ten sam program, z przełącznikami określającymi, jakiej składni należy użyć. Odpowiem na twoje pytanie, aby inni mogli zobaczyć, że jest odpowiedź,
-m
parametr zachowuje środowisko powłoki wywołującej, więc$HOME
pozostanie ustawiony na,/root
jeśli zostanie wywołany z powłoki root. Dlaczego go używałeś? I dlaczego dzwonisz do powłoki Bourne'a, aby uruchomićbash
skrypt?