Sisteme * kullanıcı eklenmemişse *


47

useradd {user}Kullanıcıları sistemime ekleme komutunu çalıştırıyorum , bununla birlikte bunu otomatik bir ortamda çalıştırmayı planlıyorum ve kullanıcı zaten var olsa bile tekrar çalıştırılabilir.

Bunu ancak kullanıcı zaten mevcut değilse çalıştırmamın bir yolu var mı? Kullanıcının bir giriş klasörü yok.


addusergenellikle Debian / Ubuntu sistemlerinde tercih edilir.
Faheem Mitha

@FaheemMitha Otomatik komut dosyalarında, daha tutarlı kullanmak muhtemelen daha iyidir useradd.
Şapkalı Adam

Yanıtlar:


69

id -u somename kullanıcı olmadığında sıfır olmayan bir çıkış kodu döndürür.

Çok basit bir şekilde test edebilirsiniz ... ( &>/dev/nullsadece normal çıktı / uyarıyı bastırır)

id -u somename &>/dev/null || useradd somename 

1
Taşınabilir bir şekilde: "id -u kadın adı> / dev / null 2> & 1 || useradd kadın adı"
Tristan

13

bunu dene:

useradd {user} || echo "User already exists."

hatta bu bile:

useradd {user} || true

Bu, eğer kullanıcı zaten mevcutsa, güvenli bir şekilde başarısız olduğu için kontrolü kaydeder.
CoverosGene

8

Küçük bir avuç sisteminiz yoksa, yanlış soruyu soruyorsunuz. Bu sorunun cevabı tamamen işe yaramaz olmak değil, bunun yerine kukla veya şef gibi bir konfigürasyon yönetimi çözümüne bırakmaktır. Bu, kullanıcı tanımlarınızın merkezileşmesini sağlar ve döngüler için çalıştırmanızı ve sistemlerinizi yapılandırmak için ssh ile kök kullanıcıları kullanmasını önler. Her zaman bilinen bir yapılandırma durumunda sistemlere sahip olacaksınız.

Kukla için belgeler http://docs.puppetlabs.com adresinde bulunabilir.

Kuklada bir örnek olarak:

user { "bob" : 
  password   => "$1$yv3n066X$Vpb05Ac/fHTicNdT9T5vz1", # generated with `openssl passwd -1`
  ensure     => present,                              # ensure => absent to remove
  managehome => true,
}

4
Kukla harika bir proje, ancak OP'nin gerçekten sorduğu şey hakkında varsayımlarda
bulunamazsınız

1
OP, hedefi çok net bir şekilde açıkladı - kullanıcı var olsa bile otomatik ve tekrar çalıştırılabilir (boş zaman). Bunlar bir yapılandırma yönetimi aracı için kesin kullanım durumlarıdır. Birisi bu problemleri çözmek için araçların zaten var olduğunun farkında olmadığında, kavraması gereken daha büyük bir kavram olduğunda çok spesifik, dar odaklı bir problem çözmeyi içeren sorular sorma eğilimindedir.
Aaron Brown

Ben zaten şef kullanıyorum.
tarnfeld

1
Chef, yalnızca kullanıcı yoksa kullanıcıları ekleyecektir. Boşuna işte bu, bu yüzden soruyu anlamıyorum (şu an 1.5 yıl sonra).
Aaron Brown,

4

useradd, zaten varsa, kullanıcıyı tekrar eklemeyecek, kullanıcı adının ve kullanıcı adının girişinin benzersiz olduğundan emin olmak istiyor. Bir toplu işlemi gerçekleştirmeyi planlıyorsanız, kullanılan sıvıların benzersiz olduğundan emin olun; useradd sorunlu girişlerden şikayet eder ve hangi kullanıcı hesaplarının hesap sistemlerine girmekte sorun yaşadığını görmek için / stderr hatalarını yakalamanız gerekir (/ etc / passwd, group, shadow).

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.