Ubuntu sistemindeki tüm kullanıcıları listelemek için kullanıcı dostu komut?


22

Bir Ubuntu sistemindeki bir konsoldaki kullanıcıları listelemek için kullanabileceğim kullanıcı dostu bir komut var mı?

Ne zaman cat /etc/passwdben bir kullanıcı sabit okuması listesini almak. Girdileri sütunlar halinde düzenlenmiş ve grup adlarının yanında parantez içinde grup adları olan alfabetik bir liste görmek güzel olurdu.


2
kuyu, / etc / passwd olduğunu belki kullanmak, sadece birkaç colums görmek istiyorsanız ... sütunlar halinde düzenlenmiş cut. Alfabetik için var sort. Grup adlarına ihtiyacınız varsa, join ile oynayın (bu aslında sadece bir sütun alt kümesini gösterebilir), btw.
njsg

Yanıtlar:


27

/ Etc / passwd dosyasının güzel çıktısı için iyi bir yol:

$ column -nts: /etc/passwd

Şimdi sıralayabilirsiniz:

$ column -nts: /etc/passwd | sort

Son sütundaki grup adlarıyla (parantez yok):

$ paste -d: /etc/passwd <(groups $(cut -d: -f1 /etc/passwd) | sed 's/.*: //') | column -nts: | sort

Teşekkürler, bu komutlar istediğimi yapar. Bir acemi için bu çok zor olsa da ... Sanırım onlar için bir takma ad oluşturmayı öğrenmek zorunda kalacağım.
M. Dudley

Centos sütununda nseçeneği beğenmedi . column -ts: /etc/passwdiyi çalıştı.
user1014251 10:15

9

Makinede kök erişiminiz varsa, aşağıdakileri yapabilirsiniz:

sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -

Nasıl çalışır

Gölge dosyasını okumak için kök ol. Eğer kullanıcı bir şifre seti (insan kullanıcı) olup olmadığını kontrol etmek istiyorsanız sadece aksi yapabilirsiniz sadece yönetici yetkilerine gerek cat /etc/passwdyerine sudo grep ...:

sudo 

Sadece şifre ayarlanmış kullanıcıları göster:

grep -vE '^[^*!]+:[*!]:' /etc/shadow

Kullanıcı adına göre sırala:

sort 

Kullanıcı adı dışındaki tüm bilgileri atın:

cut -d: -f1

Kullanıcı adlarını yineleyin ve grup bilgisiyle zenginleştirin:

while read user; do id $user; done

Girişi sütunlara biçimlendirin:

column -ts' ,'

Sonucu görüntülemek için vi kullanın:

vi '+set nowrap' - 

Kök erişiminiz yoksa,

Böyle bir şey deneyin:

cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t

Çıktıları biraz farklı, ama okuyucunun bu cevaptaki iki parçayı işe tamamen uyan bir şeyle birleştirmesi için okuyucuya bırakıyorum. (Sadece sevmiyor sedmusun?)


"Okuyucunun egzersizi olarak bırakıyorum ..." :)
Emanuel Berg

1

Ubuntu'da şöyle olabilir:

/ etc / passwd dosyasındaki yedi alan $ f1, f2 ..., $ f7

while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
 echo "User $f1 use $f7 shell and stores files in $f6 directory."
done < /etc/passwd

1

Yaptığım ve amaçlarım için çalıştığım bir şey

ls /home

Kabul edildi, bu size gerçekten bir kullanıcının listesini vermez, kullanıcının giriş dizinlerini ve geçmişin dizinlerini gösterir, ancak terminalde bulunmayan bir kullanıcı üzerinde yapmak istediğiniz herhangi bir komut size bildirir ve kaldırmak için bir ipucu olabilir. Bir kullanıcı olmayan veya taşımayan ev dosyası!


Bunu severim. İşi temel düzeyde yapar.
aalaap

0

Bunun kolay olacağını düşünmüştüm join, ancak joindosyaların birleştirme alanında sıralanmasını gerektirir . Bu yüzden (?) Geçici dosyaları olan bir geçici çözüm gerekli. Çıktı, kullanıcıya göre sıralanır ve kullanıcı, grup ve grup kimliğini görüntüler.

uag () {
  TEMP_GROUPS=/var/tmp/sorted_groups
  TEMP_USERS=/var/tmp/sorted_users
  cat /etc/group  | tr ":" " " | sort -k 3 -o $TEMP_GROUPS
  cat /etc/passwd | tr ":" " " | sort -k 4 -o $TEMP_USERS
  join -1 4 -2 3 -o 1.1,2.1,2.3 $TEMP_USERS $TEMP_GROUPS | sort
  rm $TEMP_GROUPS $TEMP_USERS
}

Bir karakteri diğerine tr; sortbir anahtar alana göre -k, çıktı dosyası -o; first ( -1) ve second ( -2) dosyasındaki alanlarla ilgili olarak birleştirilir, birinci dosyadaki ( -o 1.1) ve second ( ) içindeki bazı alanları çıkar ,2.1,2.3.


Bunun /tmpdaha iyi olacağını not edin , çünkü FHS /var/tmpgerçekten yeniden ihtiyacımız olmayan yeniden başlatmalarda silinmeyeceğini belirtiyor .
strugee
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.