Tạo thư mục nhà mặc định cho người dùng hiện tại trong thiết bị đầu cuối


151

Làm thế nào để tôi làm điều này? Tôi đã tạo một người dùng không có thư mục chính và bây giờ tôi muốn tạo một người dùng. Không chỉ là một thư mục có tên new_user, tôi muốn thư mục chính mặc định có tất cả các thư mục và tệp ẩn, v.v.


Khi người dùng đăng nhập, các thư mục con đó (Tài liệu, Tải xuống, v.v.) sẽ được tạo tự động. Mặc dù tôi đang tìm cách để "mô phỏng" thông tin đăng nhập của mình thông qua thiết bị đầu cuối.
Alaa Ali

@Alaa su new_user: D
Radu Rădeanu

1
@ RaduRădeanu yeah Tôi đã thử nó, cũng đã thử sudo -i -u new_usernhưng nó không hoạt động. Tôi nghĩ rằng chúng ta cần "mô phỏng thông tin đăng nhập X" ... không biết làm thế nào để làm điều đó.
Alaa Ali

2
đăng nhập không tạo ra các thư mục con trong nhà.
Jo Rijo

Câu trả lời:


231

Sử dụng như sau (với quyền root hoặc với sudo nếu không phải root):

mkhomedir_helper username

Để làm việc này, thư mục /home/usernamekhông được tồn tại.

Đối với các thư mục liên quan đến X (Máy tính để bàn, Tải xuống, v.v.), bạn sẽ cần phải đăng nhập trong môi trường đồ họa; chúng sẽ được tạo tự động khi bạn đăng nhập lần đầu tiên.


1
Đơn giản và hữu ích. Bằng cách này, bạn cũng có thể chắc chắn rằng thư mục nhà mới được tạo phù hợp với chính sách hệ thống của bạn, mà không bao giờ biết chúng hoặc bất kỳ sửa đổi thủ công nào.
gerlos

Đây là câu trả lời đúng, ít nhất là nó hoạt động với tôi trên Ubuntu 14.04.2 LTS.
Christian Wilkie

1
Tôi phải có tên người dùng của mình trong / etc / passwd trước khi nó hoạt động với tôi.
dùng79878

3
Đơn giản .. chỉ hoạt động (tm). Nên là câu trả lời được chấp nhận
Newtopian

Đừng quên kiểm tra quyền của thư mục với ls -l /home. Tôi thấy rằng thư mục mới có thể đọc được bởi tất cả người dùng khác, vì vậy tôi đã xóa các quyền đó bằng chmod go-r-x /home/username.
Don Kirkby

33

Các thư mục con (Tài liệu, Tải xuống, v.v.) được tạo tự động khi người dùng đăng nhập lần đầu thông qua Gnome, với điều kiện thư mục chính được tạo với quyền chính xác. Đây là một minh chứng:

alaa @ aa-lu: ~ $ sudo useradd testsuser
 alaa @ aa-lu: ~ $ sudo passwd testuser
Nhập mật khẩu UNIX mới:
Nhập lại mật khẩu UNIX mới:
passwd: mật khẩu được cập nhật thành công
alaa @ aa-lu: ~ $ sudo ls -l / nhà
tổng số 20
drwxr-xr-x 55 alaa alaa 4096 ngày 22 tháng 8 22:00 alaa
drwx ------ 2 root root 16384 5 tháng 6 09:46 mất + tìm thấy
alaa @ aa-lu: ~ $ sudo mkdir / home / testsuser
 alaa @ aa-lu: ~ $ sudo chown testsuser: testsuser / home / testsuser
 alaa @ aa-lu: ~ $ ls -l / home
tổng số 24
drwxr-xr-x 55 alaa alaa 4096 ngày 22 tháng 8 22:00 alaa
drwx ------ 2 root root 16384 5 tháng 6 09:46 mất + tìm thấy
người thử nghiệm drwxr-xr-x 2 người thử nghiệm 4096 ngày 23 tháng 8 10:03 người thử nghiệm
alaa @ aa-lu: ~ $ ls -l / nhà / người thử nghiệm /
tổng 0
alaa @ aa-lu: ~ $

Bạn có thể kiểm tra xem thư mục chính của người dùng có được đặt chính xác hay không bằng cách kiểm tra mục nhập /etc/passwd. Theo mặc định, bạn nên xem thư mục chính được đặt thành /home/testinguser:

alaa @ aa-lu: ~ $ grep testsuser / etc / passwd
người kiểm tra: x: 1001: 1001 :: / home / người kiểm tra : / bin / sh

Nếu bạn không thấy thư mục chính /home/testinguserở đó, bạn sẽ cần phải thực thi lệnh sudo usermod -d /home/testinguser testinguserđể cập nhật nó, mặc dù bạn không cần sử dụng lệnh này vì nó phải được đặt theo mặc định (theo useraddcác trang của trang).

Sau đó tôi đã đăng xuất khỏi tài khoản của mình và đăng nhập lại testinguservà đây là các thư mục con được tạo tự động:

alaa @ aa-lu: ~ $ ls -l / nhà / người thử nghiệm /
tổng số 36
người thử nghiệm drwxr-xr-x 2 người thử nghiệm 4096 Ngày 23 tháng 8 10:05 Máy tính để bàn
drwxr-xr-x 2 người thử nghiệm người thử nghiệm 4096 Ngày 23 tháng 8 10:05 Tài liệu
drwxr-xr-x 2 người thử nghiệm người thử nghiệm 4096 Ngày 23 tháng 8 10:05 Tải xuống
người thử nghiệm drwxr-xr-x 2 người thử nghiệm 4096 Ngày 23 tháng 8 10:05 Âm nhạc
người thử nghiệm drwxr-xr-x 2 người thử nghiệm 4096 ngày 23 tháng 8 10:07 Hình ảnh
người thử nghiệm drwxr-xr-x 2 người thử nghiệm 4096 ngày 23 tháng 8 10:05 Công khai
drwxr-xr-x 2 người thử nghiệm người thử nghiệm 4096 Ngày 23 tháng 8 10:05 Mẫu
người thử nghiệm drwxr-xr-x 2 người thử nghiệm 4096 Ngày 23 tháng 8 10:05 Video

Tôi không cần phải sao chép nội dung của /etc/skel.

Nếu có thể, bạn có thể vui lòng thử làm theo các bước này, tạo một người dùng mới khác không? Khi bạn đã hoàn tất, bạn có thể xóa người dùng mới này bằng cách sudo deluser testinguser && sudo rm -r /home/testinguser.

Nếu tất cả những điều này không làm việc với bạn, thì tôi đoán đó là một lỗi.


Trong một số trường hợp khi bạn sử dụng useradd, thư mục chính mặc định cho người dùng mới không được đặt tự động /home/username. Vì vậy, đầu tiên ypu phải chắc chắn về điều đó.
Radu Rădeanu

Bạn có thể cho tôi một ví dụ về những tình huống này =)? Từ các trang man của useradd: "useradd sẽ sử dụng thư mục cơ sở được chỉ định bởi biến HOME trong /etc/default/useraddhoặc /hometheo mặc định". Biến HOME in /etc/default/useraddkhông được xác định theo mặc định, vì vậy useradd sẽ luôn sử dụng /home. Dù sao, tôi sẽ chỉnh sửa câu trả lời của mình và chuyển phần để kiểm tra /etc/passwd.
Alaa Ali

Một ví dụ ở đây . Một ví dụ khác: Bạn xóa một người dùng, nhưng bạn đã không xóa các thư mục và tệp của anh ta; và sau đó bạn thêm lại một người dùng có cùng tên. Và có rất nhiều, và không có lỗi :)
Radu Rădeanu

Nếu bạn không có /bin/shtrong dòng người dùng, /etc/passwdbạn phải thêm một trình bao cho người dùng đó, ví dụ như trình bao mặc định vớiusermod -s /bin/sh testuser
rubo77

Không phải tất cả các hệ thống đều có Gnome và đề nghị ai đó xóa và thêm lại người dùng chỉ đơn giản là tạo thư mục chính là lời khuyên tồi.
ntwrkguru

12

CẬP NHẬT: Giải pháp bị hỏng và không làm việc cho tôi quá.

Nếu bạn muốn tạo thư mục chính của người dùng nếu nó không tồn tại, thì hãy chạy useraddlệnh với -mcờ. Điều này sẽ sao chép tất cả các tập tin từ /etc/skelthư mục.

useradd -m username

Bạn có thể cần phải định cấu hình cài đặt cho hệ thống của mình. Theo trang nam:

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

và chỉ ra thêm:

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.

8
điều này dường như cố gắng tạo một người dùng mới, bởi vì nó cho tôi biết "người dùng" người dùng mới "đã tồn tại".
Jo Rijo

Tôi cũng đã kiểm tra -mcờ khi tạo một người dùng mới và nó không hoạt động; nó chỉ sao chép các tập tin bộ xương.
Alaa Ali

@Jo: Và làm thế nào là không chính xác, bởi vì theo bài viết ban đầu, người dùng đã tồn tại.
crafter

3
Câu trả lời này không giải quyết được vấn đề. Sao chép /etc/skelkhông tạo các thư mục con trong thư mục chính. Ngoài ra, useradd -mđược sử dụng khi tạo người dùng mới, không phải khi người dùng đã được thêm.
Alaa Ali

Tôi đã cập nhật bài đăng, vì vậy hãy đặt CREATE_HOME thành có trong tệp cấu hình login.defs.
crafter

5

Nếu bạn đã tạo người dùng mới bằng adduserlệnh, bạn không cần tạo thư mục chính cho người dùng mới. Một thư mục chính có tên của người dùng trong /homethư mục, với các thư mục con sau: Máy tính để bàn, Tải xuống, Tài liệu, Âm nhạc, Hình ảnh, Video (và những người khác), cho người dùng mới sẽ được tạo tự động.

Nếu bạn đã tạo người dùng mới bằng useraddlệnh, thì hãy chạy các lệnh sau trong terminal:

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

để chỉnh sửa /etc/passwdtập tin dưới dạng root (đây là bước quan trọng nhất). Tìm dòng có tên của người dùng mới và đặt thư mục chính mặc định cho anh ta một cái gì đó như thế này:

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

Tại dòng này, bạn cũng có thể thêm tên thật cho người dùng mới hoặc đặt shell mặc định. Một cái gì đó như thế này:

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

Hãy cẩn thận, đừng thực hiện bất kỳ thay đổi nào khác.

Sau khi bạn lưu tệp, trước khi đi ra khỏi tài khoản root, hãy chạy các lệnh sau:

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

Sau khi tất cả các thư mục nhà cho người dùng mới sẽ tự động được điền sau lần đăng nhập đầu tiên.

Xem thêm: Làm thế nào để tạo thư mục nhà người dùng sau khi tạo tài khoản?


Theo tôi nhớ, thư mục nhà không được tạo tự động, bạn phải tự tạo và cập nhật mục nhập của người dùng /etc/passwd(nếu nó chưa có ở đó). Khi người dùng đăng nhập, thư mục chính sẽ tự động được điền với các thư mục con đó. Tuy nhiên, tất cả những điều này được quan tâm là ai đó thêm người dùng sử dụng adduser, thay vì useradd.
Alaa Ali

@Alaa Tôi mới thử nghiệm vài ngày trước và tôi đã sử dụng adduser: thư mục nhà được tạo tự động. Và thực tế, thư mục nhà sẽ tự động được điền sau lần đăng nhập đầu tiên.
Radu Rădeanu

điều này dường như không làm gì cả. Có lẽ tôi sẽ thử tập lệnh bash từ câu hỏi khác, nhưng tôi không thể tạo một thư mục trong / home / được gọi là new_user, sau đó sao chép nội dung của / etc / skel vào nó? đó là những gì mà bash-script làm?
Jo Rijo

@JoRijo Tôi đã chỉnh sửa câu trả lời của mình.
Radu Rădeanu

@ RaduRădeanu không có ý cp /etc/skel/* /home/new_usernamegì? Ngoài ra, có một lý do tại sao bạn sử dụng hai chownlệnh liên tiếp ?
Alaa Ali

3

Tất cả những gì bạn cần thực sự là thư mục nhà để làm cho nó hoạt động. Là gốc,

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

Đăng nhập lần đầu tiên sẽ tạo ra tất cả các tệp cần thiết, dường như đó là những tệp:

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.