Zdefiniowałem 2 konta użytkowników:
- jeden z uprawnieniami administratora (z
sudo
prawem) => pozwala to nazwaćadminuser
. - drugi bez żadnych uprawnień => pozwala to nazwać
i skonfiguruję automatyczne logowanie dla tego drugiego użytkownika .
normaluser
normaluser
Kiedy więc otwieram normaluser
sesję i chcę uruchomić aplikację z uprawnieniami administratora,
otwieram terminal Ctrl+ Alt+ Ti:
su adminuser
sudo anyapplication ...
Działa dobrze, bez konieczności wychodzenia z normaluser
sesji (nie trzeba otwierać adminuser
sesji).
Ale co powinienem zrobić, jeśli aplikacja musi działać z graficznym interfejsem użytkownika?
Myślałem o tym:
su adminuser
gksu anyapplication ...
ale rozumiem
** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
normaluser
czasem jest używany przez kogoś, kto nie powinien być w stanie uruchamiać poleceń jakoroot
, wówczas uczynienie użytkownikanormaluser
niebędącego administratorem zdecydowanie poprawia bezpieczeństwo . Niebezpieczeństwo związane z udostępnieniem komuś konta użytkownika, ale nie przekazaniem mu własnego hasła, wykracza daleko poza sytuację Borisa w kłopotach i złożoności. Jeśli chcesz uzyskać pełne wyjaśnienie, dlaczego jest to problematyczne, sugeruję opublikowanie nowego pytania, ale 3 powody są takie, że użytkownik powinien mieć możliwość zablokowania i odblokowania ekranu, wylogowania się i zalogowania przy użyciu innego typu sesji oraz odszyfrowaćecryptfs
dane.normaluser
iadminuser
ustawienie jest złotą zasadą.normaluser
konta do codziennej pracy iadmin
konta do wykonywania zadań administracyjnych, co tak naprawdę niczego nie poprawia. Na komputerze z wieloma użytkownikami ma to sens.Odpowiedzi:
PAM może się tym zająć
Działa to dla mnie na Ubuntu 16.04 (edytuj: działa również na 18.04 LTS):
postaw linię:
gdzieś w:
i / lub
a następnie wykonując „su -” lub „sudo su -” Mogę używać aplikacji graficznych jako root.
źródło
sux
igksu
że nie są już dostępne.Terminologia
W tej odpowiedzi:
normaluser
jest normalnym użytkownikiem, który nie jest administratorem i nie może uruchamiać poleceń jak wroot
przypadkusudo
.admin
jest administratorem, który może uruchamiać polecenia tak jak wroot
przypadkusudo
. (Oczywiście wszelkie polecenia graficzne powinny używać graficznego interfejsu użytkownika, takiego jakgksu
/gksudo
, a niesudo
bezpośrednio.)anyapplication
to nazwa aplikacji graficznej, którąnormaluser
chce uruchomićroot
.normaluser
znaadmin
hasło i (prawdopodobnie) powiedziano mu, że może go użyć do tego celu.Problem
Przyczyną problemu, a powodem większości innych odpowiedzi do tej pory nie działają (z wyjątkiem Marty Fried „s doskonała odpowiedź ), to:
gksu
może być skonfigurowany do używania jednego z nichsudo
lubsu
jako zaplecza. Domyślnym zachowaniemgksu
w Ubuntu jest działanie jako interfejs dlasudo
, a nie dlasu
. To znaczy, że domyślnie,gksu
igksudo
zachowują się dokładnie tak samo . Zobacz stronę podręcznika .normaluser
nie jest administratorem i dlatego nie może uruchamiać poleceń jak wroot
przypadkusudo
.sudo
wyświetla monit o podanie hasła użytkownika, który go uruchomił , a nie hasła użytkownika, którym chce zostać . Brak możliwości używania hasła do wykonywania czynności jako osoby, które nie są tobą, oznacza, że nie jesteś administratorem .normaluser
Pod warunkiem, że nie jest to konto gościa, można uruchomić polecenia jako inny użytkownik zsu
, oddanie w hasło innego użytkownika . Alegksu
działa jak nakładkasudo
, niesu
.normaluser
Nie można bezpośrednio uruchomić dowolną komendę jakoroot
, ponieważnormaluser
nie można używaćsudo
, i nikt nie może staćroot
sięsu
bo nie maroot
hasła .Rozwiązanie
Rozwiązanie wymaga napisania polecenia wykonującego dwa kroki uwierzytelniania:
normaluser
musi zostaćadmin
uruchomione polecenie graficzne. Aby to zrobić,normaluser
należy uruchomićgksu
z-w
flagą, aby go uruchomić w su-mode zamiast domyślnego sudo-mode , a-u
flaga uruchomić polecenie jakoadmin
zamiastroot
.admin
trzeba wykorzystaćgksu
bez tej-w
flagi używaćsudo
staćroot
.Oto polecenie (tak, przetestowałem je ;-) ):
Zostaniesz dwukrotnie zapytany o hasło :
admin
hasło, abynormaluser
uruchomić polecenie tak jakadmin
w przypadkusu
backendu.admin
hasło, abyadmin
uruchomić polecenie tak jakroot
w przypadkusudo
backendu.Zgadza się. Podajesz
admin
hasło dwukrotnie.Różne uwagi:
gksu
zgksudo
aby uczynić go mniej mylące. W Ubuntu są one równoważne. (Można również wymienić pierwszegksu
zgksudo
, ale to byłoby sprzeczne z intuicją i bardzo mylące).-w
jest krótką formą--su-mode
.-S
jest krótką formą,--sudo-mode
ale nie należy jej używać, ponieważ domyślny jest tryb sudo .xclock
jest ładną, prostą aplikacją okna z zegarem.źródło
sudo
aby działało. Przykład:sudo gksu -w -u thedude gksu xclock
kdesudo
wygląda na czystsze, przynajmniej na KUbuntu.gksu
nie jest już dostępnyJednym ze sposobów, który prawdopodobnie będzie działał, jest użycie „sux” zamiast „su” po pierwszym przełączeniu na użytkownika administratora. sux naprawia problem z uruchomieniem aplikacji x od sfałszowanego użytkownika. Znajduje się w standardowym repozytorium i można go zainstalować, wpisując
sudo apt-get install sux
w wierszu polecenia.Następnie po prostu użyj „sux” zamiast „su” i powinno działać tak, jak się spodziewasz.
Pozwala ponownie wykorzystać przykład aplikacji
xclock
:źródło
sux
Ubuntu 14.04 64bits;(
pkexec
Istnieje wszechobecna alternatywa dla kdesudo i gksu -
pkexec
która pochodzi zpolicykit-1
pakietu wymaganego przez wiele pakietów.źródło
sudo
lub polkit), która zna hasło administratora (czyli kogoś, kto może stać się korzeń zsudo
lub polkit), można używaćpkexec
do uruchom program graficzny jako root. Oto pytanie tutaj. To nie jest dla mnie jasne, żepkexec
będzie to zrobić, przynajmniej w znacznym stopniu bez edycji plików konfiguracyjnych, zwłaszcza, żepkexec
nie można na ogół używane do uruchamiania dowolnych programów graficznych (bez profili polkit) w ogóle . Czy istnieje sposób?pkexec command
i działa. Konfiguracja znajduje się w pliku/usr/share/polkit-1/actions/org.freedesktop.policykit.policy
instalowanym przez nazwany pakiet. W rzeczywistości wymaga toZamiast
Sugeruję, aby spróbować
gksu -u admin anyapplication
, gdzie wszystko robisz za pomocą samegogksu
polecenia. Pamiętaj również, że musisz wprowadzić hasło użytkownika wymienionego w poleceniu, tj. W tym przypadku musisz wprowadzić hasło administratora .źródło
normaluser
uruchomionygksu -u admin anyapplication
, wyświetli monit o podanienormaluser
hasła, które będzieadmin
używane przezsudo
backend, podobnie jak ogksu anyapplication
podanienormaluser
hasła, które będzieroot
używane przezsudo
backend. Oba zawiodą z tego samego powodu -normaluser
nie ma mocy, aby wykonywać poleceniasudo
.Oto polecenie, aby to osiągnąć.
Uruchom najpierw bez uruchamiania
su
. Musisz tylko uruchomić powyższe polecenie z normalnej sesji użytkownika, a aplikacja zostanie uruchomiona jako root.źródło
normal
hasło użytkownika - pojawia się komunikat „Niemożliwe do uruchomienia jako użytkownik root”superuser/admin
hasło - pojawia się komunikat „nieprawidłowe hasło, spróbuj ponownie”Powinieneś użyć:
Spowoduje to wyświetlenie najpierw graficznego żądania hasła (hasło użytkownika), a następnie uruchamia aplikację GUI jako root (właśnie próbowałem, to naprawdę działa. Zabawna rzecz:
gksu AppName
potem spróbowałem natychmiast, i to też zadziałało - tak jak jest prawdopodobnie powinien, jak sugeruje przedrostek „gk”. Nie jestem więc całkowicie pewien, gdzie może być zlokalizowany problem).źródło
sudo
w trybie tekstowym działa dla niego.Jest tylko jeden superużytkownik i jest to root.
Użytkownik 1 jest administratorem i ma prawa sudo.
Użytkownik 2 nie jest administratorem i nie ma uprawnień sudo.
Spróbuj zalogować się jako użytkownik 1, a następnie za pomocą polecenia
(zastępując nazwę aplikacji nazwą aplikacji)
Mam nadzieję, że to pomoże - daj mi znać. : o)
EDYCJA: Więcej informacji zgodnie z życzeniem
Jeśli to tylko Ty na komputerze,
korzystanie z użytkownika 1 (który ma uprawnienia do korzystania z sudo)
nie różni się od korzystania z użytkownika 2 (który nie ma uprawnień do korzystania z sudo).
Użytkownik 1 ma takie same uprawnienia jak użytkownik 2.
Chyba że użytkownik 1 wyda polecenie poprzedzone sudo i / lub poda swoje hasło, aby umożliwić aplikacjom uruchamianie z uprawnieniami root.
Jedyną różnicą jest to, że użytkownik 2 nie może uruchamiać aplikacji jako root.
Mam nadzieję, że to ci trochę wyjaśni. : o)
źródło
su admin
+sudo ...
przykładusudo vi file
, z wyjątkiem aplikacji z GUI