Sudo gibi kök ayrıcalıklara sahip tüm kullanıcıları listelemek için komut istiyorum.
Sanırım daha iyi bir kullanıcıyım. Diğer tüm sudoer kullanıcılarını nasıl bilebilirim?
Sudo gibi kök ayrıcalıklara sahip tüm kullanıcıları listelemek için komut istiyorum.
Sanırım daha iyi bir kullanıcıyım. Diğer tüm sudoer kullanıcılarını nasıl bilebilirim?
Yanıtlar:
sudoGrupta listelenen sudo'ları listelemeniz gerekiyorsa , bunu yapmanın en iyi yolunun bu komutu çalıştırmak olduğunu ( bu cevaptaki diğer komutlardan herhangi birine göre hesaplamalı olarak daha hafif olması gerektiğini ) düşünüyorum:
grep -Po '^sudo.+:\K.*$' /etc/group
Ayrıca, muru tarafından yapılan yorumlarda da belirtildiği gibi, girişlerin formatı /etc/groupaşağıdakiler tarafından kolayca yönetilebilir cut:
grep '^sudo:.*$' /etc/group | cut -d: -f4
Ayrıca yine Muru yorumlarına önerildiği üzere, birini kullanabilirsiniz getentyerine grep:
getent group sudo | cut -d: -f4
Bu komutlardan herhangi biri, sudogrupta listelenen tüm kullanıcıları /etc/group(varsa) yazdıracaktır .
Komut # 1 dağılımı:
grep: Bir dosyadaki regex ile eşleşen tüm satırları yazdırır.-P: grepPerl tarzı regexlerle eşleşiro: grepyalnızca eşleşen dizeyi yazdırır'^sudo.+:\K.*$': greptırnak işaretleri arasındaki regex eşleşmesini sağlarRegex # 1 dağılımı:
^: satır başlangıcı.+: bir veya daha fazla karakter\K: önceki maçı sil.*: sıfır veya daha fazla karakter$: yolun sonuKomut # 2 dağılımı:
grep: Bir dosyadaki regex ile eşleşen tüm satırları yazdırır.'^sudo.+:\K.*$': greptırnak işaretleri arasındaki regex eşleşmesini sağlarcut: Dosyadaki her satırın yalnızca belirli bir bölümünü yazdırır-d:: alan sınırlayıcı olarak cutyorumlama yapar:-f4: cutyalnızca dördüncü alanı yazdırırRegex # 2 dağılımı:
^: satır başlangıcı.*: sıfır veya daha fazla karakter$: yolun sonugetent group sudo | cut -d: -f4veya awk kullanın, ancak her iki durumda da grup ve şifrenin sınırlayıcılarla birlikte sabit biçimlerde olduğunu unutmayın.
getent grouphiç ihtiyacınız yok. getent group foogibi grep foo /etc/group, ama daha yetenekli.
getent, hesaplamalı nasıl grepve herhangi bir düşündüm getent? Koşması daha getentmı hafif ?
sudogrubun üyesi olduğunu varsayar . Bazı unix'ler gibi başka gruplar da vardır wheel. @Muru tarafından verilen cevap, hangi gruplarda olursa olsun tüm sudo'ları içerecektir.
O belirtildiği gibi burada ben keşfetmeye simpliest yolu düşünün -l& -Uaraya seçenekleri, sadece tipi usersbu örneğin listeler: Johno zaman:
Kullanıcının sudoerişimi varsa, sudosöz konusu kullanıcının erişim düzeyini yazdırır :
sudo -l -U John
User John may run the following commands on this host:
(ALL : ALL) ALL
Kullanıcı sudo erişimine sahip değilse, kullanıcının localhost'ta çalışmasına izin verilmediğini yazdıracaktır sudo:
sudo -l -U John
User John is not allowed to run sudo on localhost.
for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU "$u" ; done. hızlı kesmek garantili hiçbir şey :)
"%domain admins@mycompany.intra" ALL=(ALL) ALLo zaman çalışır. Bana çok zaman kazandırdın, çünkü bunun yerel olmayan kullanıcılar için de işe yaradığını bilmiyordum.
Daha önce de belirtildiği gibi, cevabı Unix ve Linux Stack Exchange'de bulabilirsiniz :
Bu, "saml" kullanıcısının, tekerlek grubunun bir üyesi olduğunu gösterir.
$ getent group wheel wheel:x:10:saml
Tek fark Ubuntu’daki grubun değil wheel, sudo(veya adminUbuntu’nun eski sürümlerinde) olmasıdır. Böylece komut olur:
getent group sudo
geten groupve birçok farklı sayı gördüm. Asıl sorum şu, bir kullanıcının bir sistem kullanıcısı olup olmadığını öğrenmek (birlikte yaratılmış useradd -r)
sudo -l -UTesti genişleterek, kullanabilecek getent passwdkullanıcıları belirlemek için kullanabilirsiniz sudo. Kullanma getent, passwdLDAP kullanıcıları gibi dosyada bulunmayan kullanıcılara erişmemize olanak sağlar:
getent passwd | cut -f1 -d: | sudo xargs -L1 sudo -l -U | grep -v 'not allowed'
sudo -U faydalanabileceğimiz sıfır olmayan bir çıkış değeri döndürmez, bu nedenle çıktıyı greplemede azalırız.
sudo.
Çoğu Unix benzeri sistemde, sudo komutu ve bir sudo yapılandırma dosyası vardır; root olarak visudo çalıştıran:
:~$ sudo bash
veya
:~$ su
:~# visudo
Bir yöneticinin sudo komutunu kullanabilecek grupların imtiyazlarını denetlemesine ve değiştirmesine izin verecektir.
Debian tabanlı Unix benzeri sistemlerde, Ubuntu gibi, 4 ve 27 numaralı gruplar genellikle sudo ayrıcalıklarına erişim haklarına sahipler.
Grup 4 yönetici grubu (adm) ve grup 27 ise sudo gid'dir.
Bu gruplara hangi kullanıcıların atandığını görmek için aşağıda gösterilen / etc / group dosyasına bakın:
:~$ cat /etc/group
Ubuntu'da (ancak Redhat tabanlı, Oracle Solaris / Solaris tabanlı veya BSD tabanlı sistemlerde değil) bir örnek çıktı şöyle olur:
adm:x:4:youruser
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:youruser,mybrother
floppy:x:25:
tape:x:26:
sudo:x:27:youruser,mybrother
Anlatabileceğimiz gibi, operatörünüz sistemin yöneticisi ve grup 4 (adm) üyesidir. Ancak kullanıcı ve benim kardeşim hem grup 27'nin üyeleridir, bu grup sudo gid (grup kimliği) sayısıdır. Böylece kardeşim ayrıca kök ayrıcalıklara da sahip olabilir (süper kullanıcı).
Fedora ve Slackware gibi birçok linux sistemi, gid = 10 tekerlek grubunu içermektedir. Sudo komutu uygulandığında yönetici haklarına izin verilir. BSD tabanlı sistemlerde (örneğin FreeBSD), kök kullanıcı gid 0 olan tekerlek grubunun bir üyesidir.
Ayrıca, id komutunu kullanarak herhangi bir kullanıcı bilinen başka bir kullanıcının grup bilgisini sistemde bulabilir.
Örneğin:
:~$ id mybrother
Örnek çıktı
uid=1001(mybrother) gid=1001(mybrother) groups=1001(mybrother),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
Bu komut, sudo haklarına sahip kullanıcıların bir listesini döndürür:
awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]sudo([[:space:]]|$)\"") }' /etc/passwd
Çıktı (örn.):
<username> : <username> adm cdrom sudo dip plugdev lpadmin sambashare docker
Yalnızca görüntülenecek kullanıcı adı ise, bu komut:
awk -F ":" '{ system("groups " $1 " | grep -P \"[[:space:]]sudo([[:space:]]|$)\"") }' | awk -F ":" '{ print $1 }' /etc/passwd
Komut:
cat /etc/group | grep sudo
Çıktı:
sudo:x:27:Tom,Stacy
Tom, Stacy, sudo ayrıcalıklarına sahip kullanıcılar.
cat .
vagrantKullanıcının, sudoiçinde /etc/sudoersne de /etc/groupne de bulunamadıkça bile kullanabileceği konusunda şaşkına döndüm getent.
Çıkıyor sudoda altındaki tüm dosyalardan girdileri okur/etc/sudoers.d/ . Dolayısıyla, bu dizine bakmadıysanız, kaç kullanıcının gerçekte sudoerişime sahip olduğunu bilmiyor olabilirsiniz .
Bu tür bir sudoerişim JoKeR'in kullandığı cevapla tespit edilebilir, sudo -l -U vagrantancak burada getentveya hepsine dayanan diğer cevapların hiçbirinde tespit edilmez /etc/group.