Chciałbym utworzyć alias, który robi coś takiego:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Więc z mojego wiersza poleceń jestem zalogowany z użytkownikiem sudo i chciałbym wpisać alias userYYY
, aby moja powłoka była zalogowana userYYY
i pwd
była zalogowana /a/path/that/only/userYYY/has/access
.
Jak mogę to zrobić? Służy userYYY
to do uruchamiania niektórych procesów i musi być coś w jego domu. Dlatego próbowałem zmienić jego $ HOME za pomocą:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
A potem zrobiłem to z mojej powłoki z plikiem sudoer sudo su userYYY
. Ale to nie zadziałało. Jedyne, co zadziałało, sudo su -l userYYYY
to otworzyło nowy bash w mojej oryginalnej powłoce ( -bash-4.1$ ....
).
Podsumowując, chcę po prostu uniknąć pisania 2 linii w mojej powłoce:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
Jakieś pomysły?
bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
.bashrc
plik dosudo
tegocd
miejsca, w którym 2 oddzielne linie po prostu nie działały.Jedną z opcji byłaby edycja
~/.bashrc
docelowego użytkownika i dodaniecd
tam:źródło
Krótka odpowiedź - nie możesz.
sudo su
Rozpoczyna nową powłokę, która musi wyjść, zanim dostanie się docd
polecenia.źródło
Dla mnie połączenie
sudo
iscreen
opracowane:To polecenie najpierw przełącza się na
vagrant
użytkownika. Następnie, jakvagrant
zmienia katalog/vagrant
i wykonujenpm install
.źródło
Wiem, że to nieco różni się od pierwotnego pytania, ale pomysł polega na uruchomieniu polecenia jako inny użytkownik bez wpisywania hasła, gdy zasady zabraniają
sudo su <user> -c
.źródło