Bas betiği ile kullanıcı hesabı eklemenin uygun yolu


15

İşte şimdi kullandığım kod kodu:

getent group $MYGROUP
if [ $? -ne 0 ] ; then
    sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"

Bu yaklaşım openSuse üzerinde iyi çalışır. Ancak Ubuntu'da oluşturduğu kullanıcı hesabıyla ilgili birkaç sorun var, bu yüzden burada yardım arıyorum.

  • terminal istemi ayarlanmadı ( echo $PS1hiçbir şey döndürmüyor)
  • ok tuşları ve sekme tuşu terminalde düzgün çalışmıyor
  • şifre işe yaramıyor gibi görünüyor (yine de tam olarak bu sorunun tam olarak ne olduğunu bilmiyorum)
  • bu yeni kullanıcı için ayarlanan / etc / sudoers hakları kabul edilmiyor

Bunun yerine ben adduser(useradd yerine) ile kullanıcı oluşturmak eğer Ubuntu bu sorunları yok. Ama adduseropenSuse (afaik) üzerinde kullanamıyorum. Bu nedenle, Debian'a özgü olmayan bir komut dosyasına veya Ubuntu üzerinde çalışan (ve diğer dağıtımlarda çalışmayı bırakmayan) bash komut dosyam aracılığıyla kullanıcı hesapları ekleme yöntemine ihtiyacım var.

Son olarak ve arasındaki farkları anlamak istiyorum . Örneğin, tarafından kullanılan iskelet hangi dizinin bilmek istiyorum o nedeni olabilir olarak (ben sadece varsayılan kabul çünkü) olarak beklenen çalışmıyor.adduseruseraddadduseruseradd

Teşekkürler


1
Fark gelince: useradd man sayfasından ( man useradd): useradd kullanıcı eklemek için düşük seviyeli bir yardımcı programdır. Debian'da yöneticiler genellikle bunun yerine adduser (8) kullanmalıdır.
guntbert

Ayrıca, sudo su -c "cmd arg1 arg2"eşdeğerdir sudo cmd arg1 arg2.
enzotib

@enzotib teşekkürler. Bunların Ubuntu'da eşdeğer olduğunu bilmek güzel, çünkü openSuse'da değiller. Bu nedenle, sudo su -c "cmd arg1 arg2"çalışmaya ihtiyaç duyduğum her yerde çalışması için kullanmaya devam edeceğim.
MountainX

adduser1000 satırdan uzun bir perl betiğidir, bu nedenle farklılıklar için betiğe bir göz atabilirsiniz.
enzotib

@enzotib Evet, okuyordum adduserama perl bilmiyorum. Yani bu benim için iyi bir yaklaşım değil.
MountainX

Yanıtlar:


14

: Benim çözümüm burada sağlandı /unix/82923/proper-way-to-add-a-user-account-via-bash-script tarafından Ulrich Schwarz ve Joseph R. . Yapmam gereken en önemli şey, -s /bin/bashmevcut useraddkomutuma eklemek ve -p passwordşifrelenmiş bir parola bekleyen kaldırmaktı .

sudo su -c "useradd mynewuser -s /bin/bash -m -g $PRIMARYGRP -G $MYGROUP"

Sonra bunu yapın:

sudo chpasswd << 'END'
mynewuser:password
END

6
echo mynewuser:password | sudo chpasswdçalışır.
Felix Rabe

10

Bu çalışacak.

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd

Bu, kabul edilen cevaptan daha kolay bir çözümdür.
Steven

2

ssh anahtar girişi ve şifre olmadan otomatik olarak bir servis hesabı oluşturan betiğim

#add service group/user
addgroup service-runner
useradd devops-service --create-home --shell /bin/bash --groups service-runner
#gpasswd -a devops-service sudo #allowing sudo requires password, and not a good idea for a service account.
mkdir /home/devops-service/.ssh
chmod 700 /home/devops-service/.ssh
cat devops-service@v2-20150312.pub >> /home/devops-service/.ssh/authorized_keys
chown devops-service:devops-service /home/devops-service -R

fyi, benim script kullandıktan sonra, "sudo" hizmet hesabı ile neredeyse işe yaramaz olduğunu görüyorum, hiçbir şifre sudo kullanılamaz anlamına gelir. Visudo üzerinden no-password sudo'ya izin verecek şekilde yapılandırabilirsiniz, ancak bunu bir komut dosyasında otomatikleştirmeyi bilmiyorum. Ayrıca, muhtemelen şifresiz sudo içeren bir hizmet hesabı iyi (güvenlik) bir fikir değildir.
JasonS

0

Sanırım senaryonuzda sadece bir koşulu kullanabilirsiniz.

if grep -q 'Ubuntu\|Debian' /etc/issue; then
    adduser .....
else
    useradd .....
fi

(Dosyanın /etc/issueOpenSUSE üzerinde olup olmadığını doğrulayamaz , aksi takdirde bu tür bir dosyanın varlığını koyabilirsiniz).


Neden sadece varlığını sınamak adduserile if command -v adduser >/dev/null; thenveya seviyor? Temel dağılımlar değil, önemli olan tek şey budur. Ayrıca Debian / Ubuntu ve OpenSUSE dışında başka dağıtımlar da var.
David Foerster
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.