Tüm kullanıcıları listelemek için bir komut? Ve kullanıcılar nasıl eklenir, silinir ve değiştirilir?


855

Terminaldeki tüm kullanıcıları listelemek için bir komuta ihtiyacım var. Ve kullanıcıların terminalden nasıl ekleneceği, silineceği ve değiştirileceği.

Bu, hesaplarınızı terminal üzerinden kolayca yönetmenize yardımcı olabilir.


3
sed answersed 's/:.*//' /etc/passwd
Avinash Raj

2
kullanıcıları listeler:awk -F: '{ print $1 }' /etc/passwd
saviour123 23:17

Yanıtlar:


1142

Listeye

Kullanabileceğiniz tüm yerel kullanıcıları listelemek için:

cut -d: -f1 /etc/passwd

Yerel olmayanlar da dahil olmak üzere (bir şekilde) kimlik doğrulaması yapabilen tüm kullanıcıları listelemek için bu cevaba bakın .

Bazı daha kullanışlı kullanıcı yönetimi komutları (ayrıca yerel kullanıcılar ile sınırlıdır ):

Eklemek

Yeni bir kullanıcı eklemek için şunları kullanabilirsiniz:

sudo adduser new_username

veya:

sudo useradd new_username

Ayrıca bakınız: adduser ve useradd arasındaki fark nedir?

Kaldırmak / silmek için

Bir kullanıcıyı kaldırmak / silmek için önce şunları kullanabilirsiniz:

sudo userdel username

Ardından, silinen kullanıcı hesabının giriş dizinini silmek isteyebilirsiniz:

sudo rm -r / ana sayfa / kullanıcı adı

Lütfen yukarıdaki komutu dikkatli kullanın!

Düzenlemek

Bir kullanıcının kullanıcı adını değiştirmek için:

usermod -l new_username old_username

Bir kullanıcının şifresini değiştirmek için:

sudo passwd username

Bir kullanıcının kabuğunu değiştirmek için:

sudo chsh username

Bir kullanıcının ayrıntılarını değiştirmek için (örneğin gerçek ad):

sudo chfn username

sudoGruba bir kullanıcı eklemek için :

adduser username sudo

veya

usermod -aG sudo username

: Ve tabii ki, ayrıca bkz man adduser, man useradd, man userdel... vb.


12
Radu sudo chfn <username>hangi kullanıcı detaylarını değiştirdiğini söylemeyi unuttu (örneğin gerçek isim). Bunu bir yorum olarak eklemeye çalıştım, ancak bunu yapmak için +50 itibarım olması gerektiğini söylerken hatayla karşılaştım.
Mikaela

2
Bağlantılı soruya verilen doğru cevabın askubuntu.com/a/381646/16395 olduğuna dikkat çekilmesi gerektiğini düşünüyorum - aksi halde GID / UID Ubuntu politikalarını elle dikkate almanız gerekir. Kabul edilen cevap çok net değil.
Rmano

sudo userdel DOMAIN \\ johndoe bana şu hatayı veriyor: "userdel: 'DOMAIN \ johndoe' girişini / etc / passwd'den kaldıramıyorum - / etc / passwd dizinine baktım ve muhtemelen orada değiller, çünkü" etki alanı "hesabı?
00fruX

1
@ 00fruX Evet ... Merkezi bir kullanıcı veritabanı kullanıyorsanız, doğrudan bununla başa çıkmanız gerekecek.
Oli


87

Terminal'i açmak için klavyenizdeki Ctrl+ Alt+ tuşlarına basın T. Açıldığında, aşağıdaki komutları çalıştırın:

cat /etc/passwd

VEYA

less /etc/passwd
more /etc/passwd

Ayrıca awk kullanabilirsiniz: awk

awk -F':' '{ print $1}' /etc/passwd

kullanıcılar komutla nasıl eklenir?
nux

Useradd komutunu kullanabilirsiniz .
Mitch

partisine geç bir bit @nux ancak komut satırı kullanımından adduseryerine, useraddyazar gerçekten çok ne yaptığını bilen komut ile sınırlı olmalıdır.
flindeberg

64

Bu tür bilgileri edinmenin en kolay yolu getent- komut için manpage'egetentManpage simgesi bakınız . Bu komut aynı çıktıyı verirken cat /etc/passwdhatırlamakta fayda var çünkü işletim sistemindeki çeşitli öğelerin listelerini verecek.

Yazdığınız tüm kullanıcıların bir listesini almak için (kullanıcılar listelendiğinde /etc/passwd)

getent passwd

Sisteme yeni bir kullanıcı eklemek için yazdığınız

sudo adduser newuser

tüm varsayılan ayarları uygulanmış bir kullanıcı oluşturmak için.

Ek: (örneğin herhangi bir kullanıcı eklemek için anyuser (örneğin bir gruba) CD'nin ) tip

sudo adduser anyuser cdrom

İle bir kullanıcıyı sil (örneğin eski )

sudo deluser obsolete

Ev dizinini / postalarını da silmek istiyorsan yaz

sudo deluser --remove-home obsolete

Ve

sudo deluser --remove-all-files obsolete

kullanıcıyı ve bu kullanıcının sahibi olduğu tüm dosyaları tüm sistemde silecektir .


8
Getent'in sadece / etc / passwd içindeki kullanıcıların çıktılarını değil aynı zamanda tüm etcd passdd içindeki tüm kullanıcıların userdb backend'lerini (etc / passwd veya LDAP vb. Gibi) yazdırdığını hatırlamakta fayda var.
Marcin Kaminski

@MarcinKaminski haklı, aynı zamanda sunucuya erişimi olan SSO sistemlerinde kullanıcıların kurulumunu da basıyor. Bu cevap en iyi cevap, getent passwddoğru emir
ulkas

Tüm numaralandırılabilir userdb arka
uçlarından


27

Bu, çoğu normal durumda , tüm normal (sistem dışı, garip olmayan) kullanıcıları almalıdır :

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

Bu çalışır:

  • içinden okumak /etc/passwd
  • :sınırlayıcı olarak kullanma
  • üncü alan (Kullanıcı Kimliği numarası) 1000'den büyükse ve 65534 değilse, ilk alan (kullanıcının kullanıcı adı) yazdırılır.

Bunun nedeni çoğu linux sistemde 1000'in üzerindeki kullanıcı adlarının imtiyazsız (normal diyebilirsiniz) kullanıcılar için ayrılmasıdır. Bu konuda bazı bilgiler burada :

Bir kullanıcı kimliği (UID), Unix benzeri bir işletim sistemi tarafından her kullanıcıya atanan benzersiz bir pozitif tam sayıdır. Her kullanıcı UID ile sisteme tanımlanır ve kullanıcı adları genellikle yalnızca insanlar için bir arabirim olarak kullanılır.

UID'ler, karşılık gelen kullanıcı adları ve diğer kullanıcıya özel bilgilerle birlikte / etc / passwd dosyasında saklanır ...

Üçüncü alan UID'yi, dördüncü alan ise tüm sıradan kullanıcılar için varsayılan olarak UID'ye eşit olan grup kimliğini (GID) içerir.

Linux çekirdeği 2.4 ve üzeri, UID'ler sıfır ila 4,294,967,296 arasındaki değerleri temsil eden işaretsiz 32 bit tam sayılardır. Bununla birlikte, yalnızca 16-bit UID'leri barındırabilen daha eski çekirdekler veya dosya sistemleri kullanan sistemler ile uyumluluğu sağlamak için sadece 65.534'e kadar olan değerlerin kullanılması tavsiye edilir.

0 UID'in özel bir rolü vardır: her zaman kök hesaptır (yani, her yerde çalışan yönetici kullanıcı). Her ne kadar kullanıcı adı bu hesapta değiştirilebilse ve aynı UID ile ek hesaplar oluşturulabilse de, her iki işlem de güvenlik açısından akıllıca değildir.

UID 65534, sıradan (yani imtiyazsız) bir kullanıcının aksine, genel olarak hiç kimseye, sistem imtiyazına sahip olmayan bir kullanıcı için ayrılmıştır. Bu UID, genellikle FTP (dosya aktarma protokolü) veya HTTP (köprü metni aktarma protokolü) aracılığıyla sisteme uzaktan erişen kişiler için kullanılır.

1'den 99'a kadar olan UID'ler geleneksel olarak tekerlek, arka plan programı, lp, operatör, haberler, posta vb. Gibi özel sistem kullanıcıları (bazen sözde kullanıcılar olarak adlandırılır) için ayrılmıştır. Bu kullanıcılar toplam kök yetkilerine ihtiyaç duymayan, Bazı idari görevler ve bu nedenle sıradan kullanıcılara verilenlerden daha fazla imtiyaz gerekir.

Bazı Linux dağıtımları (yani sürümleri) 100’deki ayrıcalıklı olmayan kullanıcılar için UID’leri başlatır. Red Hat gibi diğerleri bunları 500’de, hala Debian gibi diğerleri de 1000’de başlatır. bir kuruluştaki bir ağda birden fazla dağıtım kullanılıyorsa müdahale gerekli olabilir.

Ayrıca, 1000 ila 9999 gibi yerel kullanıcılar için bir UID bloğu ve 10000 ila 65534 gibi uzak kullanıcılar için (yani ağdaki herhangi bir yerdeki kullanıcılar için) başka bir blok ayırmak daha uygun olabilir. bir şema üzerinde ve ona bağlı.

Belirli kullanıcı tipleri için sayı blokları ayırmanın bu uygulamasının avantajları arasında, şüpheli kullanıcı etkinliği için sistem kayıtlarını aramayı daha uygun hale getirmesidir.

Popüler inanışın aksine, UID alanındaki her girişin benzersiz olması gerekli değildir. Ancak, benzersiz olmayan UID'ler güvenlik sorunlarına neden olabilir ve bu nedenle UID'ler tüm kuruluş genelinde benzersiz tutulmalıdır. Aynı şekilde, UID'lerin eski kullanıcılardan geri dönüşümünden de mümkün olduğunca kaçınılmalıdır.


1
Neredeyse mükemmel bir cevap, ama IMO kullanımı daha temiz getentdüz okumak yerine /etc/passwdve arama UID_MIN/ UID_MAXyerine sabit kodlama değerleri:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
Max Truxa

17

Giriş yapabilen tüm kullanıcıların listesi (gibi bir sistem kullanıcısı yok: bin, deamon, mail, sys, vs.)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

yeni kullanıcı ekle

sudo adduser new_username

veya

sudo useradd new_username

kullanıcı adını sil / kaldır

sudo userdel username

Ana dizini silmek istiyorsanız (varsayılan dizin / ana sayfa / kullanıcı adı)

sudo deluser --remove-home username

veya

sudo rm -r /path/to/user_home_dir

Sistemdeki tüm dosyaları bu kullanıcıdan silmek istiyorsanız (yalnızca ev girişi değildir)

sudo deluser --remove-all-files

1
Belki adduserve arasındaki farkı açıklamalısın useradd. Bir de sudo-prefix'i ilk komuta ekleyin . Parola gölge dosyası yalnızca kök olarak okunabilir.
s3lph

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowBana vb bin, cini dahil olmak üzere tüm kullanıcı gösterdi ve bu uyarıyı attı: dizisi kaçış \$' treated as plain Bu yazı buldum '$ stackoverflow.com/a/25867768/847954 ve bir daha ters eğik çizgi eklendi ve iyi çalıştı:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff Misk

8

Tamam burada, bu sıralamada yardımcı olacak bir hiledir. Eğer kullanıcı yazarsanız ve Tab tuşuna iki kez basarsanız terminal otomatik olarak tamamlanır ve kullanıcıyla birlikte var olan tüm komutları ilk 4 karakter halinde listeler.

user (tab tab)

bana bir seçenek
hakkında daha fazla bilgi edinmek istiyorsanız, kullanici kullanici kullanici kullanici kullanici kullanici kullanimi kullanirim useradd kullanici kullanici-yönetici

Kullanıcıları listelemek için Mitch'in söylediklerine uymalısın.

Bash'ta sekme tamamlamayı sevmemde yardımcı olan şeyler beni hatırlamaktan kurtarıyor.


6

Makinedeki / home klasöründe giriş dizinleri bulunan kullanıcıları bulmak için aşağıdaki komutları çalıştırın

cd /home
ls 

Daha sonra sunucuya giriş yapma yetkisine sahip kullanıcıları görebilirsiniz. Herhangi bir kullanıcının dosyalarına bakmak istiyorsak, kök kullanıcı olmalısınız.


8
Bu sadece içeriğini gösterir /home. Ubuntu, kullanıcı dizinlerini varsayılan olarak oraya koyarken, zorunlu değildir.
David Foerster

ls /homeSilinen kullanıcıların kullanıcı dizinlerini de içerebilir.
Suraj
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.