Giriş dizini oluşturulmuyor


80

Ubuntu'da sistem yönetimini anlamaya çalışıyorum. Bu yüzden, örnek olarak, kullanarak sahte bir kullanıcı yaratıyorum

sudo useradd -d /home/linda linda

ve passwdşifreyi oluşturmak için. Kullanılarak bir giriş yapılmışsa kontrol ederim.cat /etc/passwd

linda:x:1004:1004::/home/linda:/bin/sh

Ancak, ben ne zaman su - linda, ben olsun

No directory, logging in with HOME=/

ve aslında, hiçbir ev dizini oluşturulmadı. Neyi kaçırıyorum?

Teşekkürler.

Yanıtlar:


87

man useradd devletler:

useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.

Not low level utility

Bir kullanıcı eklemek için, adduseryerine kullanın. Daha yüksek seviye bir yardımcı programdır.


Ayrıca, -dseçeneğe bakarak :

   -d, --home HOME_DIR
       The new user will be created using HOME_DIR as the value for the
       user's login directory. The default is to append the LOGIN name to
       BASE_DIR and use that as the login directory name. The directory
       HOME_DIR does not have to exist but will not be created if it is
       missing.

The directory will not be created if it is missing.

Genellikle uzak durun useradd, adduseryerine kullanın.


2
OP'nin savunmasında "On Debian" okuduğumda, Debian'ın Ubuntu dağıtımlarının aksine olduğunu kastettim. Ubuntu'nun Debian üzerine kurulu olduğunu biliyorum ama bir ayrım yapıldığını düşündüm.
Keith Bennett,

1
Ben kullandım adduserama yine de oluşturulan giriş dizini sadece bir dosya examples.desktopve başka bir şey içermiyor. Ubuntu'nun Masaüstü, İndirilenler ve benzeri varsayılan klasörleri oluşturmasını nasıl sağlayabilirim? (Ssh ile giriş yaptım)
mcExchange

Merhaba, üzgünüm geç cevap ve yalnızca tahmin ama bu klasörlerin ilk GUI girişinde otomatik olarak oluşturulduğunu düşünüyorum. Sadece insanların hala buraya inebileceğini düşündüm;)
derHugo

adduserBirisi /etc/login.defs içindeki CREATE_HOME birisini "no" olarak değiştirdiyse, dizini oluşturmayacak. -mBayrağı bu geçersiz kılabilirsiniz .
Noumenon

31

Bunu sadece ev dizini oluşturarak düzeltebilirsiniz.

mkdir /home/linda
chown linda:linda /home/linda

tekrar giriş yapmayı deneyin ve bu çalışmalıdır.


13

Göre man useradd, -d /home/lindaseçenek /home/lindabu eksikse , dizini oluşturmaz . Yani, el ile oluşturmanız gerekir. Bunu yapmak için terminaldeki aşağıdaki komutları çalıştırın:

sudo -i                            #to get root privileges
mkdir /home/linda                  #to create the directory /home/linda
cp -rT /etc/skel /home/linda         #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda   #to change the owner of /home/linda to user linda

Ayrıca bakınız: Hesap oluşturulduktan sonra kullanıcı ana klasörü nasıl oluşturulur?


7

/etc/defaults/useraddVarsayılanları değiştirmek isteyip istemediğinize bakın . kullanın:

useradd -m -d /home/joe -s /bin/bash.


"Man useradd'a göre -d / home / linda seçeneği / home / linda dizini yaratmaz" yani hayır, bu bir çözüm değil.
Astrojuanlu

Genel kullanıcı sayfasına göre, -m -m, --create-home Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the -k option) will be copied to the home directory. useradd will create the home directory unless CREATE_HOME in /etc/login.defs is set to no.flagının anlamı şudur: @astrojuanlu
Myles

5

Ayrıca /etc/pam.d/common-session, kullanıcının ilk girişinde kullanıcının giriş dizininin oluşturulmasını sağlayacak şekilde de değiştirebilirsiniz . Bu dosyaya aşağıdaki satırı ekleyin.

...
session required pam_mkhomedir.so

Bu, özellikle sisteminizin, kullanıcıların makinenizde harici olarak LDAP tarafından yönetildiği bir ağdaysa faydalıdır.


5

-mBunun yerine kullanın -d, böylece dizin sizin için oluşturulacak:

sudo useradd -m linda

Ayrıca, lindanormal bir kullanıcı ise, /bin/bashvarsayılan olarak kullanmasını isteyebilirsiniz shell:

sudo useradd -m linda -s /bin/bash


3

Aşağıdaki girişi ekleyin /etc/login.defsve kaydedin:

CREATE_HOME yes

Şimdi, kullanıcı hesapları oluşturmaya çalışın. Ana dizini yaratacaktır.


Benim için çalıştı. Kullanıcıları Linux'un farklı lezzetlerine uzaktan ekleyecek / yönetecek temel bir senaryoya ihtiyacım vardı. Bu değişiklikten sonra kodum tüm sunucularda aynı sonuçları veriyor. Teşekkürler.
sdkks

1

Kullanın adduser.

DESCRIPTION

 adduser  and  addgroup  add users and groups to the system according to
   command    line    options    and    configuration    information    in
   /etc/adduser.conf.   They  are  friendlier  front ends to the low level
   tools like useradd, groupadd and usermod programs, by default  choosing
   Debian  policy conformant UID and GID values, creating a home directory
   with skeletal configuration, running a custom script,  and  other  fea
   tures.  adduser and addgroup can be run in one of five modes:

useraddTüm seçenekleri kendiniz eklemeniz gerekir. İzinler ve diğer bazı şeyler dahil. adduserbunu akıllıca varsayılanlara göre yapar (ve ayrıca kendi başına ev dizini ekler).

Eğer adduser kullanmanız gerekiyorsa, muhtemelen -d seçeneğiyle birlikte -b seçeneğine ihtiyacınız olacak!


1

Eğer /home/lindabir kullanıcı olarak Linda eklemeden önce mevcut değilse, ayrıca eklemek gerekir --create-home.

sudo useradd --create-home linda

1

Eğer yoktu çünkü oluşturduğunuz ev dizini yoktu neden en olası nedeni şudur CREATE_HOME yesin /etc/login.defs.

Bunu @OmPS veya @Radu Rădeanu'nun önerdiklerini takip ederek düzeltebilirsiniz.

Ancak, gelecekte bu komutun üstündeki komutlardan birini kullanarak aşmanın birçok yolu var:

  • Sonucu sudo adduser linda

    Adding user 'linda'
    Adding new group 'linda' (1001) ...
    Adding new user 'linda' (1001) with group 'linda' ...
    Creating home directory '/home/linda' ...
    Copying files from '/etc/skel' ...
    ****Password confirmation****
    ****Name prompt****

    Adduser için varsayılan değerler seçilir /etc/adduser.confeğer --homeseçenek belirtilmedi. İçeriği de kopyaladığını unutmayın /etc/skel.

  • İle adduser kullanın --home

    sudo adduser --home /home/linda

Kullanıcılar ana dizini, atadığınız kullanıcı adından farklıysa, bunun dışında bir önceki seçenekle aynı olabilir.

  • useraddKomut verilecek taban dizini belirtin :

    sudo useradd -b /home
  • Login.defs kullanın: Yapmadan /etc/login.defsönce aşağıdaki satırı değiştirin ve ekleyin sudo useradd:

    CREATE_HOME   yes

Not: Yaparsanız man login.defs, şu anda diyor

Gölge şifre paketi tarafından sağlanan işlevselliklerin çoğu şimdi PAM tarafından yönetilmektedir. Bu nedenle, /etc/login.defs artık passwd (1) tarafından kullanılmaz veya login (1) ve su (1) tarafından daha az kullanılır. Lütfen bunun yerine ilgili PAM yapılandırma dosyalarına bakın.

  • Pam_mkhomedir PAM modülünü kullanın: man pam_mkhomedirsayfadan aşağıdaki satırı ekleyin /etc/pam.d/login:

    session  required  pam_mkhomedir.so skel=/etc/skel
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.