Şununla bazı kullanıcılar oluşturdum:
$ useradd john
ve ana dizini oluşturmak için -m
parametresini belirtmeyi ve iskelet dosyalarını her kullanıcıya kopyalamayı unuttum. şimdi bunu yapmak istiyorum ve tüm kullanıcıları yeniden oluşturmak istemiyorum (daha kolay bir yol olmalı). yani, kullanıcı dizinleri oluşturmak ve iskelet dosyaları kopyalamak için herhangi bir yolu var mı?
Dizinleri oluşturmayı, ilgili kullanıcıya seçmeyi, tüm iskelet dosyalarını kopyalamayı ve ilgili kullanıcıya seçmeyi düşündüm. ancak useradd -m
gibi kullanıcıyı yeniden oluşturmayan, ancak dizinleri oluşturan bir komut varsa daha iyi olur.
Bu aptalca bir fikir gibi gelebilir, ancak kullanıcılar aslında hiçbir şey yapmıyorsa, şunları yapabilirsiniz:
cat /etc/passwd | cut -f 1 -d : >/tmp/users.list
Ardından /tmp/users.list dosyasını yalnızca istediğiniz kullanıcıları içerecek şekilde düzenleyin. Sonra şunları yapın:
for i in `cat /tmp/users.list`
do
userdel $i
useradd -m $i
done
Ancak, birçok Redhat tabanlı dağıtım, ilk oturum açtığınızda size/etc/passwd dizininde belirtilmesi koşuluyla size yeni bir giriş dizini oluşturur.
Bunu test etmek için bir "su -" yapın ve "doğru olanı" yapıp yapmadığını görün. Değilse, yukarıdaki komut dosyası oldukça güzel çalışacağını düşünüyorum.
Ayrıca mkhomedir_helper
Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
Kullanıcı dizinini manuel olarak oluşturmanız gerekir. Bu üç adım gerektirir:
/etc/passwd
İle uyumlu dizin oluşturun, genellikle zaten bir/home/login girişi olacaktır.Ve son olarak doğru izinleri ayarlayın:
mkdir /home/YOU
cd /home/YOU
cp -r /etc/skel/. .
chown -R YOU.YOURGROUP .
chmod -R go=u,go-w .
chmod go= .
BTW: Ben de useradd için -m
Seçeneğini özledim. En azından Debian tabanlı sistemlerde useradd üzerinden önerdiğim bir adduser
komutu olmalıdır. -m
Seçeneğini kaçırdıysanız, deluser
öğesini düşünüp, kullanıcıyı uygun seçeneklerle yeniden oluşturmayı düşünmek de faydalı olabilir.
Düzenleme: Ayrıca dizinleri kopyalamak için -r
Eklendi.
mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john
Bu inandığım hile yapmalı
Bunun gelecekte herhangi bir kullanıcıyla sorun olmasını önlemek için pam_mkhomedir gibi bir şey kullanabilirsiniz. pam_mkhomedir, kullanıcının oturum açmada yoksa otomatik olarak/etc/skel (veya belirttiğiniz skel dizini) dosyalarıyla dolduran bir PAM modülüdür.
Bu da hoş bir şekilde ölçeklenebilir bir yaklaşımdır, çünkü kullanıcı havuzunuzu gelecekte LDAP gibi bir dizin hizmetine geçirirseniz bu sorunu çözmeye devam edecektir.
Benim durumumda, ev hacmi bozuk ve ben çok fazla veri dahil beri sıfırdan yeniden inşa karar verdi ama kullanıcıların giriş bilgilerini tutmak istiyorum, bu yüzden bu komut dosyası ile ev dizinleri el ile yeniden yarattı:
#!/bin/bash
cat /etc/passwd | while IFS=: read n x i g c d r
do
# my system has uid started at 1000, but has nfsnobody at 65534:
if [[ "$i" -ge 1000 && "$i" -le 65000 && ! -x "$d" ]]
then
cp -av /etc/skel "$d"
chown -R "$i:$g" "$d"
# may needed in SELinux system:
restorecon -R "$d"
# add your chmod as your need:
chmod -R o-rw "$d"
fi
done
/etc/login.defs
içerecek
CREATE_HOME yes
sisteme not belirtmedikçe, gelecekteki kullanıcılar için ev dizinleri otomatik olarak oluşturulacaktır.
Başka bir seçenek de girişler için PAM kullanmak ve ilk girişte homedir'i otomatik olarak oluşturmak için pam_mkhomedir modülünü kullanmaktır.
Bir useradd
yaptıktan sonra ilk adımım su - <user>
.
Ev dizinlerini oluşturur, iskeletleri kopyalar, vb. - en azından CentOS 4 kutusunda en sık bunu yaparım.
John kullanıcısıyla giriş yap ve bir Shell'den yaz:
xdg-user-dirs-update
Bu kadar! Sudo veya su kullanmayın, bazı dizinler oluşturmak için root erişimine ihtiyacınız yoktur. Bir kök hesaptan şunları kullanabilirsiniz:
Sudo -u john xdg-user-dirs-update
Bu şekilde, komutu birden fazla kullanıcıyla yaptıysanız yararlı olabilecek komutu john olarak uygulayacaksınız.