Direktori rumah tidak dibuat

80

Saya mencoba memahami administrasi sistem di Ubuntu. Jadi, sebagai contoh, saya membuat pengguna dummy menggunakan

sudo useradd -d /home/linda linda

dan passwduntuk membuat kata sandi. Saya memeriksa apakah entri telah dibuat menggunakancat /etc/passwd

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

Namun, ketika saya su - linda, saya mengerti

No directory, logging in with HOME=/

dan memang, tidak ada direktori home yang telah dibuat. Apa yang saya lewatkan?

Terima kasih.

tchakravarty
sumber

Jawaban:

87

man useradd menyatakan:

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

Perhatikan low level utility

Untuk menambah pengguna, gunakan addusersaja. Ini adalah utilitas tingkat tinggi.


Apalagi melihat -dopsi:

   -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.

Secara umum jauhkan dari useradd, gunakan addusersaja.

gniourf_gniourf
sumber
2
Dalam pertahanan OP, ketika saya membaca "On Debian,", saya pikir itu berarti pada Debian yang bertentangan dengan distro Ubuntu. Saya sadar bahwa Ubuntu dibangun di atas Debian tetapi berpikir bahwa perbedaan sedang dibuat.
Keith Bennett
1
Saya menggunakan addusertetapi masih direktori home yang dibuat hanya berisi file examples.desktopdan tidak ada yang lain. Bagaimana saya bisa mendapatkan Ubuntu untuk membuat folder default Desktop, Unduhan dan sebagainya? (Saya masuk melalui ssh)
mcExchange
Hai, maaf respon terlambat dan hanya menebak tetapi saya pikir folder tersebut dibuat secara otomatis pada login GUI pertama. Hanya berpikir orang mungkin masih mendarat di sini;)
derHugo
addusertidak akan membuat direktori jika seseorang telah mengubah CREATE_HOME di /etc/login.defs menjadi "tidak". Anda dapat mengganti ini dengan -mbendera.
Noumenon
31

Anda dapat memperbaikinya hanya dengan membuat dir home.

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

coba masuk lagi dan ini akan berhasil.

OmPS
sumber
13

Menurut dengan man useradd, -d /home/lindaopsi tidak akan membuat direktori /home/linda, jika ini hilang. Jadi, Anda harus membuatnya secara manual. Untuk melakukan ini, jalankan perintah berikut di terminal:

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

Lihat juga: Cara membuat folder beranda pengguna setelah pembuatan akun?

Radu Rădeanu
sumber
7

Lihatlah /etc/defaults/useraddapakah Anda ingin mengubah default. Menggunakan:

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

kepala kacang
sumber
"Menurut man useradd, opsi -d / home / linda tidak akan membuat direktori / home / linda" jadi tidak, ini bukan solusi.
astrojuanlu
Menurut halaman manual useradd, untuk itulah flag -m adalah: -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.@astrojuanlu
Myles
5

Anda juga dapat memodifikasi /etc/pam.d/common-sessionuntuk membuatnya sehingga direktori home pengguna akan dibuat pada login pertama. Tambahkan baris berikut ke file itu.

...
session required pam_mkhomedir.so

Ini sangat berguna jika sistem Anda berada di jaringan di mana pengguna dikelola secara eksternal ke mesin Anda, oleh LDAP misalnya.

KevinC
sumber
5

Gunakan -malih-alih -d, jadi direktori akan dibuat untuk Anda:

sudo useradd -m linda

Selain itu, jika lindamerupakan pengguna normal, Anda mungkin ingin dia menggunakannya /bin/bashsebagai default shell:

sudo useradd -m linda -s /bin/bash

p1100i
sumber
3

Tambahkan entri di bawah ini /etc/login.defsdan simpan:

CREATE_HOME yes

Sekarang, coba buat akun pengguna. Ini akan membuat direktori home.

kavin
sumber
Itu berhasil untuk saya. Saya perlu memiliki skrip dasar yang akan menambahkan / mengelola pengguna dari jauh pada berbagai rasa Linux. Setelah perubahan ini, kode saya menghasilkan hasil yang sama di semua server. Terima kasih.
SDK
1

Gunakan 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:

useraddAnda harus menambahkan semua opsi sendiri. Termasuk izin dan beberapa hal lainnya. adduserapakah ini berdasarkan pada default waras (dan juga menambahkan dir home dengan sendirinya).

Jika Anda perlu menggunakan adduser, Anda mungkin memerlukan opsi -b bersamaan dengan opsi -d!

Rinzwind
sumber
1

Jika /home/lindatidak ada sebelum Anda menambahkan linda sebagai pengguna, Anda juga harus menambahkan --create-home.

sudo useradd --create-home linda
Abel Tom
sumber
1

Alasan yang paling mungkin mengapa Anda tidak memiliki direktori home dibuat adalah karena Anda tidak memiliki CREATE_HOME yesin /etc/login.defs.

Anda dapat memperbaikinya dengan mengikuti apa yang telah disarankan oleh @OmPS atau @Radu Rădeanu.

Tapi itu banyak cara untuk mengatasi masalah ini di masa depan dengan menggunakan salah satu perintah di bawah ini:

  • Hasil dari 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****
    

    Default untuk adduser dipilih dari /etc/adduser.confjika --homeopsi tidak ditentukan. Perhatikan bahwa itu juga menyalin /etc/skelkonten.

  • Gunakan adduser dengan --home

    sudo adduser --home /home/linda

Sama seperti opsi sebelumnya kecuali Anda mungkin menginginkan ini jika direktori home pengguna berbeda dari nama pengguna yang Anda tetapkan.

  • Tentukan direktori dasar untuk useradddiperintahkan:

    sudo useradd -b /home
  • Gunakan login.defs: Ubah /etc/login.defsdan tambahkan baris di bawah sebelum melakukan sudo useradd:

    CREATE_HOME   yes

Catatan: jika Anda melakukannya man login.defs, saat ini dikatakan

Banyak fungsi yang dulu disediakan oleh shadow password suite sekarang ditangani oleh PAM. Dengan demikian, /etc/login.defs tidak lagi digunakan oleh passwd (1), atau kurang digunakan oleh login (1), dan su (1). Silakan merujuk ke file konfigurasi PAM yang sesuai sebagai gantinya.

  • Gunakan modul PAM pam_mkhomedir: dari man pam_mkhomedirhalaman, tambahkan baris di bawah ini ke /etc/pam.d/login:

    session  required  pam_mkhomedir.so skel=/etc/skel
randominstanceOfLivingThing
sumber