Thư mục chính không được tạo


80

Tôi đang cố gắng để hiểu quản trị hệ thống trên Ubuntu. Vì vậy, như một ví dụ, tôi tạo một người dùng giả bằng cách sử dụng

sudo useradd -d /home/linda linda

passwdđể tạo mật khẩu. Tôi kiểm tra xem một mục đã được thực hiện bằng cách sử dụngcat /etc/passwd

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

Tuy nhiên, khi tôi su - linda, tôi nhận được

No directory, logging in with HOME=/

và thực sự, không có thư mục nhà đã được tạo ra. Tôi đang thiếu gì?

Cảm ơn.

Câu trả lời:


87

man useradd Những trạng thái:

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

Lưu ý low level utility

Để thêm người dùng, sử dụng adduserthay thế. Đó là một tiện ích cấp cao hơn.


Hơn nữa, nhìn vào -dtùy chọn:

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

Nói chung là tránh xa useradd, sử dụng adduserthay thế.


2
Để bảo vệ OP, khi tôi đọc "Trên Debian", tôi nghĩ rằng nó có nghĩa trên Debian trái ngược với các bản phân phối Ubuntu. Tôi biết rằng Ubuntu được xây dựng trên Debian nhưng nghĩ rằng một sự khác biệt đã được tạo ra.
Keith Bennett

1
Tôi đã sử dụng addusernhưng thư mục nhà đã tạo chỉ chứa một tệp examples.desktopvà không có gì khác. Làm cách nào tôi có thể nhận Ubuntu để tạo các thư mục mặc định Desktop, Tải xuống, v.v. (Tôi đã đăng nhập qua ssh)
mcExchange

Xin chào, xin lỗi phản hồi muộn và chỉ đoán nhưng tôi nghĩ những thư mục đó được tạo tự động trong lần đăng nhập GUI đầu tiên. Chỉ cần nghĩ rằng mọi người vẫn có thể hạ cánh ở đây;)
derHugo

addusersẽ không tạo thư mục nếu ai đó đã thay đổi CREATE_HOME trong /etc/login.defs thành "không". Bạn có thể ghi đè lên điều này với -mcờ.
Noumenon

31

bạn có thể khắc phục điều này đơn giản bằng cách tạo thư mục nhà.

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

hãy thử đăng nhập lại và điều này sẽ hoạt động.


13

Theo man useradd, -d /home/lindatùy chọn sẽ không tạo thư mục /home/linda, nếu điều này bị thiếu. Vì vậy, bạn phải tạo nó bằng tay. Để thực hiện việc này, hãy chạy các lệnh sau trong 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

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?


7

Nhìn vào /etc/defaults/useraddnếu bạn muốn thay đổi mặc định. Sử dụng:

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


"Theo man useradd, tùy chọn -d / home / linda sẽ không tạo thư mục / home / linda" nên không, đây không phải là một giải pháp.
astrojuanlu

Theo trang -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.manadd , đó là những gì cờ -m dành cho: @astrojuanlu
Myles

5

Bạn cũng có thể sửa đổi /etc/pam.d/common-sessionđể làm cho nó để thư mục chính của người dùng sẽ được tạo trong lần đăng nhập đầu tiên. Thêm dòng sau vào tệp đó.

...
session required pam_mkhomedir.so

Điều này đặc biệt hữu ích nếu hệ thống của bạn nằm trên một mạng mà người dùng được quản lý bên ngoài vào máy của bạn, ví dụ như LDAP.


5

Sử dụng -mthay vì -d, vì vậy thư mục sẽ được tạo cho bạn:

sudo useradd -m linda

Ngoài ra, nếu lindalà người dùng bình thường, bạn có thể muốn cô ấy sử dụng /bin/bashlàm mặc định shell:

sudo useradd -m linda -s /bin/bash


3

Thêm mục dưới đây vào /etc/login.defsvà lưu:

CREATE_HOME yes

Bây giờ, hãy thử tạo tài khoản người dùng. Nó sẽ tạo thư mục nhà.


Nó làm việc cho tôi. Tôi cần phải có một tập lệnh cơ bản sẽ thêm / quản lý người dùng từ xa theo các hương vị khác nhau của Linux. Sau khi thay đổi, mã của tôi tạo ra kết quả tương tự trên tất cả các máy chủ. Cảm ơn.
sdkks

1

Sử dụng 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:

useraddbạn phải tự thêm tất cả các tùy chọn. Bao gồm quyền và một số thứ khác. adduserthực hiện điều này dựa trên mặc định lành mạnh (và cũng thêm chính thư mục nhà).

Nếu bạn cần sử dụng adduser, có lẽ bạn cần tùy chọn -b cùng với tùy chọn -d!


1

Nếu /home/lindakhông có mặt trước khi bạn thêm linda làm người dùng, bạn cũng sẽ phải thêm --create-home.

sudo useradd --create-home linda

1

Lý do rất có thể lý do tại sao bạn không có thư mục home tạo ra là bởi vì bạn không có CREATE_HOME yestrong /etc/login.defs.

Bạn có thể khắc phục điều này bằng cách làm theo những gì @OmPS hoặc @Radu Rădeanu đã đề xuất.

Nhưng có nhiều cách để khắc phục vấn đề này trong tương lai bằng cách sử dụng một trong các lệnh dưới đây:

  • Kết quả của 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****
    

    Mặc định cho adduser được chọn từ /etc/adduser.confnếu --hometùy chọn không được chỉ định. Lưu ý rằng nó cũng sao chép /etc/skelnội dung.

  • Sử dụng trình bổ sung với --home

    sudo adduser --home /home/linda

Tương tự như tùy chọn trước đó ngoại trừ việc bạn có thể muốn điều này nếu thư mục nhà của người dùng khác với tên người dùng mà bạn đã gán.

  • Chỉ định thư mục cơ sở cho useraddlệnh:

    sudo useradd -b /home
  • Sử dụng login.defs: Sửa đổi /etc/login.defsvà thêm dòng bên dưới trước khi thực hiện sudo useradd:

    CREATE_HOME   yes

Lưu ý: nếu bạn làm man login.defs, nó hiện nói

Phần lớn các chức năng từng được cung cấp bởi bộ mật khẩu bóng hiện được PAM xử lý. Do đó, /etc/login.defs không còn được sử dụng bởi passwd (1) hoặc ít được sử dụng bởi đăng nhập (1) và su (1). Vui lòng tham khảo các tệp cấu hình PAM tương ứng thay thế.

  • Sử dụng mô-đun PAM pam_mkhomedir: từ man pam_mkhomedirtrang, thêm dòng bên dưới vào /etc/pam.d/login:

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