Jak mogę się dowiedzieć, czy jestem sudoerem?

32

Jak zachowuje się system Linux, gdy nie jestem sudoerem? Oto, co się stanie, jeśli spróbuję użyć sudo:

server:/tmp>$ sudo cal
[sudo] password for user:
Sorry, try again.

Czy to możliwe, że po prostu nie znam swojego hasła, czy to oznacza, że ​​nie jestem sudoer? (Na innym systemie maszynowym wydrukowano, że nie jestem sudoer i incydent zostanie zgłoszony)

Rasto
źródło
Lepsza odpowiedź niż którakolwiek z poniższych: superuser.com/questions/553932/…
barnhillec

Odpowiedzi:

40

Aby wiedzieć, czy dany użytkownik ma dostęp do sudo, możemy używać razem -li -Uopcji razem.

Na przykład,

Jeśli użytkownik ma dostęp do sudo, wydrukuje poziom dostępu do sudo dla tego konkretnego użytkownika.

   $ sudo -l -U pradeep
     User pradeep may run the following commands on this host:
     (ALL : ALL) ALL

Jeśli użytkownik nie ma dostępu do sudo, wydrukuje, że nie może uruchomić sudo na localhost.

   $ sudo -l -U pradeep.c
     User pradeep.c is not allowed to run sudo on localhost.
pradeepchhetri
źródło
4
To mi nie działa. Zamiast podawać mi informacje, prosi mnie ponownie o hasło: server:/home/drasto>$ sudo -l -U drasto [sudo] password for drasto:Na tym serwerze jest dystrybucja Red Hat, jeśli to pomaga
Rasto,
9

Możesz użyć -lflagi, aby wyświetlić listę swoich uprawnień.

-l[l] [command]
   If no command is specified, the -l (list) option will list the allowed (and forbidden)
   commands for the invoking user (or the user specified by the -U option) on the current
   host.  If a command is specified and is permitted by sudoers, the fully-qualified path
   to the command is displayed along with any command line arguments.  If command is
   specified but not allowed, sudo will exit with a status value of 1.  If the -l option
   is specified with an l argument (i.e. -ll), or if -l is specified multiple times, a
   longer list format is used.

Jeśli nie ma Cię w pliku, powinieneś zobaczyć błąd „nie ma w pliku sudoers”, który zobaczyłeś na drugim komputerze.

Kevin
źródło
2
To też nie działa dla mnie. Po prostu prosi mnie o hasło:server:/home/drasto>$ sudo -l [sudo] password for drasto:
Rasto,
1
Wprowadź swoje hasło
Kevin,
1
@Kevin @Michael Moje hasło nie działa. Wiem tylko jedno hasło do tego serwera i to jest to, którego używam do logowania się na serwerze. Ten po prostu nie działa, gdy poproszę o hasło sudo (próbowałem go około 100 razy, Capslock, Numlock itp.). Ale cała myśl nie ma sensu! Chcę wiedzieć, czy mam uprawnienia sudo, ale żeby się dowiedzieć, potrzebuję uprawnień sudo ?! Do uruchomienia sudo -lpotrzebuję hasła sudo? Więc muszę być rootem, żeby wiedzieć, czy jestem rootem ?!
Rasto
1
@drasto Jak powiedział Bill, sudoszuka swojej hasło logowania. Więc jeśli spróbowałeś tego i to nie działa, albo sudo jest strasznie źle skonfigurowane, albo jesteś w jakimś więzieniu, w którym nie widzi ani nie czyta odpowiednich plików. Tak czy inaczej, nie masz żadnych uprawnień sudo.
Kevin
1
@Kevin Więc prawdopodobnie jestem w jakimś więzieniu. Właściwie myślę, że nie powinienem mieć tych uprawnień sudo na tym komputerze. Byłem więc zaskoczony, gdy w pierwszej kolejności poprosił mnie o hasło sudo. W każdym razie jest tak, jak napisałem: moje hasło logowania nie działa.
Rasto
-1

Możesz sprawdzić, czy jesteś w grupie sudo, używając polecenia

groups

W skrypcie powłoki możesz chcieć użyć tego:

if groups | grep "\<sudo\>" &> /dev/null; then
   echo yes
else
   echo no
fi
Schlacki
źródło
1
Grupa może być sudo, admin, wheel, lub coś zupełnie innego, a nawet z członkostwa w grupie, indywidualny użytkownik może odmowa dostępu sudo poprzez przepisów szczególnych (lub na odwrót).
muru
To ma zbyt wiele fałszywych negatywów dla mojego celu (weryfikacja twardnienia). Odpowiedź Kevina jest bardziej jednoznaczna.
StockB