Perintah untuk mengubah direktori home default pengguna

203

Saya ingin tahu apakah ada perintah shell sederhana untuk mengubah direktori home user di Linux / Unix (yang mirip dengan chsh yang mengubah shell login default dari pengguna yang ada yang valid) tanpa menyentuh /etc/passwdfile. Terima kasih

Ibrahim Quraish
sumber
Mengapa Anda tidak ingin menyentuh /etc/passwdfile? Anda harus melakukannya!
Basile Starynkevitch
11
stackoverflow.com/questions/20071714/… , mengatakan bahwa usermod -d /home/userxx /home/useryyuntuk mengubah direktori login default linux ke / home / useryy
Ibrahim Quraish
2
Mengapa Anda bertanya tentang direktori home default ? Apakah Anda ingin mengubah direktori home dari satu pengguna tertentu yang ada, atau semua pengguna yang ditambahkan di masa mendatang? Perhatikan bahwa chshtidak mengubah shell login default , tetapi hanya shell login dari pengguna yang diberikan ... Untuk mengubah pengguna login HOMEtertentu, cukup edit/etc/passwd
Basile Starynkevitch

Jawaban:

351

Komentar Ibrahim pada jawaban lain adalah cara yang benar untuk mengubah direktori home pengguna yang ada.

Ubah direktori home pengguna:

usermod -d /newhome/username username

usermodadalah perintah untuk mengedit pengguna yang ada.
-d(singkatan --home) akan mengubah direktori home pengguna.

Ubah direktori home pengguna + Pindahkan isi direktori saat ini pengguna:

usermod -m -d /newhome/username username

-m(singkatan --move-home) akan memindahkan konten dari direktori pengguna saat ini ke direktori baru.

STW
sumber
1
Tidak hanya memindahkan konten, saya melihatnya lebih seperti memindahkan seluruh folder = folder asli ( /home/usernamebiasanya) dihapus.
Betlista
2
@ STW Apakah ini tugas yang dapat dibalik? Berarti jika saya hanya menjalankannya sekali dan kemudian membalik parameter, akankah direktori home saya persis seperti sebelumnya?
DanGordon
1
@DanGordon apa pun yang Anda masukkan dalam /newhome/usernameargumen akan menjadi direktori home pengguna. Anda dapat mengaturnya kembali ke direktori home sebelumnya jika Anda tahu apa itu, tetapi tidak ada opsi "undo".
STW
3
Urutan opsi untuk perintah kedua salah. usermod -m -d /newhome/username usernamebekerja.
Snozzlebert
@Dominik terima kasih - ada kemungkinan berbeda berdasarkan OS (Mac vs Linux vs BSD, dll), tentu saja itu bisa saja salah
STW
28

Dari Linux Ubah Direktori Home Pengguna Default Saat Menambahkan Pengguna Baru :

Cukup buka file ini menggunakan editor teks, ketik:

vi /etc/default/useradd

Direktori awal default ditentukan oleh variabel HOME, temukan baris yang berbunyi sebagai berikut:

HOME=/home

Ubah dengan:

HOME=/iscsi/user

Simpan dan tutup file. Sekarang Anda dapat menambahkan pengguna menggunakan perintah useradd biasa:

# useradd vivek
# passwd vivek

Verifikasi informasi pengguna:

# finger vivek
Maximin
sumber
82
usermod -m -d /path/to/new/login/home/dir user mengubah direktori home pengguna yang ada ke direktori login baru yang dibuat jika belum ada, opsi -m memindahkan isi direktori home saat ini ke direktori home baru
Ibrahim Quraish
23

Jawaban yang diterima salah, karena konten dari folder pengguna awal tidak dipindahkan menggunakannya. Saya akan menambahkan jawaban lain untuk memperbaikinya:

sudo usermod -d /newhome/username -m username

Anda tidak perlu membuat folder dengan nama pengguna dan ini juga akan memindahkan file Anda dari folder pengguna awal ke folder / newhome / nama pengguna.

Sukrit Gupta
sumber
4

Jika pembaca lain mencari informasi tentang adduser perintah.

Edit /etc/adduser.conf

Setel DHOMEvariabel

rafaelvalle
sumber
0

Mengetahui bahwa ini merusak beberapa aplikasi, cara terbaik untuk melakukannya adalah

Selain symlink, pada distro dan sistem file yang lebih baru, sebagai root Anda juga dapat menggunakan bind-mount:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

Ini berguna untuk memungkinkan akses "melalui" direktori / home ke subdir melalui daemon yang jika tidak dikonfigurasi untuk menghindari pathing melalui symlinks (apache, ftpd, dll.).

Anda harus ingat (atau skrip init) untuk mengikat pada restart, tentu saja.

Contoh skrip init /etc/fstabadalah

/extra-home/username /home/username none defaults,bind 0 0
Wilken
sumber
-1

usermod -m -d / newhome username

Ahmed Kay
sumber
5
Tolong jelaskan jawaban Anda lebih terinci.
T. Short