Dowiedziałem się dzisiaj, że ekran do uruchamiania jako inny użytkownik, do którego sudo się włącza, nie będzie działał!
to znaczy
ssh bob@server # ssh into server as bob
sudo su "monitor" -
screen # fails: Cannot open your terminal '/dev/pts/0'
Mam skrypt działający jako użytkownik „monitora”. Uruchamiamy go w sesji ekranowej, aby zobaczyć wynik na ekranie. Problem polega na tym, że mamy wielu użytkowników, którzy logują się na swoje własne konta (np. Bob, James, Susie itp.), A następnie sudo do użytkownika „monitorującego”. Zapewnienie im dostępu do użytkownika „monitorującego” nie wchodzi w rachubę.
sudo
gnu-screen
luckytaxi
źródło
źródło
sudo su "user" -
. Dlaczego nie użyćsudo -u user -s
?sudo su
- myślę, że ludzie po prostu się do tego przyzwyczaili (w moim przypadku dzieje się tak dlatego, że nie musisz znać żadnych flag sudosudo su
- nie sądzę, żebym kiedykolwiek przeczytał stronę sudo :)Odpowiedzi:
Spróbuj uruchomić się
script /dev/null
jako użytkowniksu
przed uruchomieniem ekranu - to mały hack w getcie, ale powinien uszczęśliwić ekran.źródło
script
może być użyte do uruchomieniascreen
. Następnie musisz wyjść tylko dwa razy (raz dlascreen
, raz dlasu
). (Jest to coś, coscript
strona podręcznika może dla ciebie wyjaśnić, jeśli poświęcisz trochę czasu na jej przeczytanie ...)sudo -u bob script -q -c 'screen -dr myscreen' /dev/null
. Masz tylko jeden terminal, z którego można wyjść / odłączyć.script
otwiera własne urządzenie tty, należące do użytkownika, który je uruchomił (zajrzyj,/dev
a zobaczysz, że pojawi się po uruchomieniuscript
).screen
następnie pobiera to urządzenie tty (które jest własnością uruchomionego użytkownika,screen
więc nie ma problemów z dostępem do niego). To totalna robota hakerska, ale działa. Patrząc na niektóre z moich maszyn, wydaje się, że nowe wersje ekranu wydają się instalować setuid-root, co również działa, ale oznacza, że masz innego binarnego setuida-roota, co sprawia, że niektórzy ludzie są niekomfortowo nieswojo.Korzystam z funkcji otoki
screen
dla użytkowników, których używamsudo su
. To jest funkcja otoki, którą dodałem do użytkownika~/.bashrc
:To pozwala mi korzystać ze wszystkich opcji i parametrów
screen
, których mógłbym chcieć użyć. Zastanawiam się nad wprowadzeniem tej funkcji w całym systemie.źródło
Zakładając, że i tak są one połączone z hostem SSH, możesz dodać publiczne klucze ssh dla każdego użytkownika, który potrzebuje dostępu do konta monitora w pliku ~ monitor / .ssh / Author_keys. Następnie na zdalnym komputerze każdego użytkownika mogą działać
źródło
Zakładając, że mówimy o tym błędzie:
Oto jedna linijka (na przykład może być używana jako „alias gobob”):
Wyjaśnienie:
To uruchomi powłokę (jak powłokę logowania) jako bob użytkownika. Uruchamia się bob użytkownika
script
, który ma wywołać bash (może to być myślnik lub ksh ...), a kopia sesji zostaje wyrzucona.źródło
Prawdopodobnie musiałaby zmienić uprawnienia na danym urządzeniu lub dodać monitor do grupy, która ma pozwolenie na odczyt tego urządzenia, byłoby to moją pierwszą skłonnością. Ale musiałbyś rozważyć konsekwencje bezpieczeństwa.
źródło
Mówisz, że robisz:
Zastanawiam się nad końcową kreską. Zwyklę robię:
Myślnik (na stronie podręcznika użytkownika su) mówi su, aby „uczynił powłokę powłoką logowania”. Oznacza to, że pozyska wszystkie zwykłe skrypty startowe powłoki i odpowiednio skonfiguruje takie rzeczy, jak PATH i HOME.
źródło
sudo su - username
isudo su username -
rób to samo.Właśnie trafiłem w ten problem. Rozwiązałem to
chmod +rw $(tty)
przed uruchomieniem sudo. Problem z tym rozwiązaniem polega na tym, że każdy może potem połączyć się i węszyć na twoim terminalu.źródło
gpg
na przykład). I na pewno nigdy nie będzie w systemie ze złośliwymi użytkownikami, którzy będą oglądaćtty
i wąchać hasła ...