Buat direktori home default untuk pengguna yang ada di terminal

151

Bagaimana saya melakukan ini? Saya membuat pengguna tanpa direktori home dan sekarang saya ingin membuatnya. Bukan hanya folder bernama new_user, saya ingin direktori home default dengan semua folder dan file tersembunyi, dll.

Jo Rijo
sumber
Ketika pengguna masuk, subdirektori tersebut (Dokumen, Unduhan, dll ...) akan dibuat secara otomatis. Meskipun saya sedang mencari cara untuk "mensimulasikan" login-nya melalui terminal.
Alaa Ali
@Alaa su new_user: D
Radu Rădeanu
1
@ RaduRădeanu ya saya sudah mencobanya, juga mencoba sudo -i -u new_usertetapi tidak berhasil. Saya pikir kita perlu "mensimulasikan login X" ... tidak tahu bagaimana melakukannya.
Alaa Ali
2
masuk tidak membuat subdirektori di rumah.
Jo Rijo

Jawaban:

231

Gunakan yang berikut (sebagai root, atau dengan sudo jika tidak root):

mkhomedir_helper username

Agar ini berfungsi, folder /home/usernametidak boleh ada.

Untuk folder terkait X (Desktop, Unduhan, dll), Anda harus masuk dalam lingkungan grafis; mereka akan dibuat secara otomatis saat pertama kali Anda login.

kavadias
sumber
1
Sederhana dan bermanfaat. Dengan cara ini Anda juga dapat yakin bahwa dir home yang baru dibuat sesuai dengan kebijakan sistem Anda, tanpa pernah mengetahuinya atau mengutak-atik manual.
gerlos
Ini adalah jawaban yang benar, setidaknya itu berfungsi untuk saya di Ubuntu 14.04.2 LTS.
Christian Wilkie
1
Saya harus memiliki nama pengguna saya di / etc / passwd terlebih dahulu sebelum ini berhasil bagi saya.
user79878
3
Sederhana .. hanya berfungsi (tm). Seharusnya jawaban yang diterima
Newtopian
Jangan lupa untuk memeriksa izin direktori ls -l /home. Saya menemukan bahwa direktori baru dapat dibaca oleh semua pengguna lain, jadi saya menghapus izin itu dengan chmod go-r-x /home/username.
Don Kirkby
33

Sub direktori (Dokumen, Unduhan, dll ...) secara otomatis dibuat ketika pengguna pertama kali masuk melalui GNOME, asalkan direktori home dibuat dengan izin yang benar. Ini sebuah demonstrasi:

alaa @ aa-lu: ~ $ sudo useradd testinguser
 alaa @ aa-lu: ~ $ sudo passwd testinguser
Masukkan kata sandi UNIX baru:
Ketik ulang kata sandi UNIX baru:
passwd: kata sandi berhasil diperbarui
alaa @ aa-lu: ~ $ sudo ls -l / home
total 20
drwxr-xr-x 55 alaa alaa 4096 22 Agustus 22:00 alaa
drwx ------ 2 root root 16384 5 Juni 09:46 hilang + ditemukan
alaa @ aa-lu: ~ $ sudo mkdir / home / testinguser
 alaa @ aa-lu: ~ $ sudo chown testinguser: testinguser / home / testinguser
 alaa @ aa-lu: ~ $ ls -l / home
total 24
drwxr-xr-x 55 alaa alaa 4096 22 Agustus 22:00 alaa
drwx ------ 2 root root 16384 5 Juni 09:46 hilang + ditemukan
drwxr-xr-x 2 testinguser testinguser 4096 23 Aug 10:03 testinguser
alaa @ aa-lu: ~ $ ls -l / home / testinguser /
total 0
alaa @ aa-lu: ~ $

Anda dapat memeriksa apakah direktori home pengguna diatur dengan benar dengan memeriksa entri /etc/passwd. Secara default, Anda harus melihat direktori home yang disetel ke /home/testinguser:

alaa @ aa-lu: ~ $ grep testinguser / etc / passwd
testinguser: x: 1001: 1001 :: / home / testinguser : / bin / sh

Jika Anda tidak melihat direktori home di /home/testingusersana, Anda harus menjalankan perintah sudo usermod -d /home/testinguser testinguseruntuk memperbaruinya, walaupun Anda tidak perlu menggunakan perintah ini karena harus diset secara default (sesuai dengan useraddhalaman manual).

Saya kemudian keluar dari akun saya, dan masuk kembali dengan testinguser, dan di sini adalah subdirektori yang dibuat secara otomatis:

alaa @ aa-lu: ~ $ ls -l / home / testinguser /
total 36
drwxr-xr-x 2 testinguser testinguser 4096 23 Agustus 10:05 Desktop
drwxr-xr-x 2 testinguser testinguser 4096 23 Agustus 10:05 Dokumen
drwxr-xr-x 2 testinguser testinguser 4096 23 Agustus 10:05 Unduhan
drwxr-xr-x 2 testinguser testinguser 4096 23 Agustus 10:05 Musik
drwxr-xr-x 2 testinguser testinguser 4096 23 Agustus 10:07 Gambar
drwxr-xr-x 2 testinguser testinguser 4096 23 Agu 10:05 Publik
drwxr-xr-x 2 testinguser testinguser 4096 23 Agustus 10:05 Template
drwxr-xr-x 2 testinguser testinguser 4096 23 Agustus 10:05 Video

Saya tidak perlu menyalin konten /etc/skel.

Jika memungkinkan, dapatkah Anda mencoba mengikuti langkah-langkah ini, membuat pengguna baru lainnya? Setelah selesai, Anda dapat menghapus pengguna baru ini dengan sudo deluser testinguser && sudo rm -r /home/testinguser.

Jika semua ini tidak bekerja dengan Anda, maka saya kira itu bug.

Alaa Ali
sumber
Dalam beberapa situasi ketika Anda menggunakan useradd, direktori home default untuk pengguna baru tidak diatur secara otomatis ke /home/username. Jadi, ypu pertama harus yakin tentang itu.
Radu Rădeanu
Bisakah Anda memberi saya contoh situasi ini =)? Dari halaman manual useradd: "useradd akan menggunakan direktori dasar yang ditentukan oleh variabel HOME di /etc/default/useradd, atau /homesecara default". Variabel HOME dalam /etc/default/useraddtidak didefinisikan secara default, sehingga useradd akan selalu digunakan /home. Bagaimanapun, saya akan mengedit jawaban saya dan memindahkan bagian untuk memeriksa /etc/passwd.
Alaa Ali
Contohnya di sini . Contoh lain: Anda menghapus pengguna, tetapi Anda tidak menghapus direktori dan file-nya; dan kemudian Anda menambahkan lagi pengguna dengan nama yang sama. Dan ada banyak, dan tidak ada bug :)
Radu Rădeanu
Jika Anda tidak memiliki /bin/shdi baris pengguna /etc/passwdAnda harus menambahkan shell untuk pengguna itu, misalnya shell default denganusermod -s /bin/sh testuser
rubo77
Tidak semua sistem memiliki GNOME dan menyarankan seseorang untuk menghapus dan menambahkan kembali pengguna hanya untuk membuat direktori home adalah saran yang buruk.
ntwrkguru
12

UPDATE: Solusinya rusak dan tidak bekerja untuk saya juga.

Jika Anda ingin membuat direktori home pengguna jika tidak ada, maka jalankan useraddperintah dengan -mflag. Ini akan menyalin semua file dari /etc/skeldirektori.

useradd -m username

Anda mungkin perlu mengkonfigurasi pengaturan untuk sistem Anda. Menurut halaman manual:

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

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

dan selanjutnya menunjukkan:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.
perajin
sumber
8
ini tampaknya mencoba membuat pengguna baru, karena ini memberitahu saya "pengguna 'pengguna baru' sudah ada".
Jo Rijo
Saya juga telah menguji -mbenderanya saat membuat pengguna baru, dan itu tidak berhasil; itu hanya menyalin file kerangka.
Alaa Ali
@ Jo: Dan bagaimana ini salah, karena menurut posting awal, pengguna sudah ada.
perajin
3
Jawaban ini tidak menyelesaikan masalah. Menyalin /etc/skeltidak membuat subdirektori di direktori home. Juga, useradd -mdigunakan saat membuat pengguna baru, bukan saat pengguna sudah ditambahkan.
Alaa Ali
Saya memperbarui pos, jadi setel CREATE_HOME menjadi ya di file konfigurasi login.defs.
crafter
5

Jika Anda membuat pengguna baru dengan adduserperintah, Anda tidak perlu membuat direktori home untuk pengguna baru. Direktori rumah dinamai dengan nama pengguna dalam /homedirektori, dengan subdirektori berikut: Desktop, Unduhan, Dokumen, Musik, Gambar, Video (dan lainnya), untuk pengguna baru akan dibuat secara otomatis.

Jika Anda membuat pengguna baru dengan useraddperintah, maka jalankan perintah berikut di terminal:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

untuk mengedit /etc/passwdfile sebagai root (ini adalah langkah paling penting). Temukan baris dengan nama pengguna baru dan atur direktori home default untuknya seperti ini:

new_username:x:1001:1001::/home/new_username:/bin/sh

Pada baris ini Anda juga dapat menambahkan nama asli untuk pengguna baru, atau mengatur shell default. Sesuatu seperti ini:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

Hati-hati, jangan lakukan perubahan lain.

Setelah Anda menyimpan file, sebelum keluar dari akun root, jalankan perintah berikut:

mkdir /home/new_username                                #to create the directory /home/new_username
cp -r /etc/skel/. /home/new_username                    #to copy skeleton files to /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

Setelah semua ini folder rumah untuk pengguna baru akan secara otomatis diisi setelah login pertama.

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

Radu Rădeanu
sumber
Sejauh yang saya ingat, folder home tidak dibuat secara otomatis, Anda harus membuatnya secara manual dan memperbarui entri pengguna /etc/passwd(jika belum ada). Setelah pengguna masuk, folder rumah akan secara otomatis diisi dengan subdirektori tersebut. Namun, semua ini diurus adalah seseorang menambahkan pengguna menggunakan adduser, bukan useradd.
Alaa Ali
@Alaa Aku hanya diuji beberapa hari yang lalu dan saya menggunakan adduser: home folder yang otomatis dibuat. Dan memang, folder rumah akan secara otomatis diisi setelah login pertama.
Radu Rădeanu
ini sepertinya tidak melakukan apa-apa. Mungkin saya akan mencoba skrip bash dari pertanyaan lain, tetapi tidak bisakah saya membuat folder di / home / disebut new_user, dan kemudian menyalin isi / etc / skel ke dalamnya? Apakah itu yang dilakukan oleh bash-script?
Jo Rijo
@ JoRijo saya mengedit jawaban saya.
Radu Rădeanu
@ RaduRădeanu bukan maksudmu cp /etc/skel/* /home/new_username? Juga, adakah alasan mengapa Anda menggunakan dua chownperintah berurutan ?
Alaa Ali
3

Yang Anda butuhkan adalah folder home untuk membuatnya bekerja. Sebagai root,

cd /home
cd mkdir username
chown username username
chgrp username username

Masuk dengan pertama kali harus membuat semua file yang diperlukan, yang sepertinya adalah:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors
fotanus
sumber