Không thể đăng nhập vào tài khoản người dùng mới được tạo


25

Cố gắng chuyển tài khoản sang tài khoản mới tạo của tôi, tôi nhận được một màn hình đen và sau đó nó sẽ đưa tôi trở lại màn hình đăng nhập chính sau khi nhập đúng mật khẩu.

Khi đăng nhập vào tài khoản hiện tại của tôi, tôi nhận được:

"System Program Problem Detected"

Details:

Executable path /usr/bin/Xorg

Package: xserver-xorg-core 2:1.11.4-0ubuntu10.1

Details: Crash
... (tons more, but no way to copy paste or save)

Khi tôi cố gắng

su -l penner

Tôi có:

No directory, logging in with HOME=/

Tôi tự tạo thư mục gốc và lỗi này biến mất nhưng vẫn không gặp may với việc đăng nhập. Có vẻ như đã xảy ra sự cố với người dùng? Làm thế nào tôi có thể sửa điều này?


Làm thế nào bạn tạo tài khoản người dùng? Bạn đã làm nó từ gui, hoặc từ dòng lệnh? Nếu bạn làm điều đó từ dòng lệnh, bạn cần lưu ý rằng adduser và useradd làm mọi thứ rất khác nhau. Ngoài ra, có vẻ như các tệp từ / etc / skel không được sao chép qua. Bạn có thể vui lòng ls -al trên thư mục nhà của bạn và trong thư mục người dùng mới để chúng tôi có thể thấy những gì đang xảy ra?
SuperMatt

Câu trả lời:


31

Nếu bạn đã tạo tài khoản người dùng useradd, bạn phải thiết lập mọi thứ cho nó theo cách thủ công. Đây là lý do tại sao, khi tạo tài khoản người dùng từ dòng lệnh, nên sử dụng adduserUbuntu (và Debian và các hệ thống dựa trên Debian khác). Bạn có thể chỉ muốn xóa người dùng bằng userdelhoặc delusertạo lại nó với adduser. Nếu không thì...

Sửa vị trí thư mục chính

Nếu bạn muốn giữ tài khoản người dùng và khắc phục sự cố, thì bạn cần xem xét:

  • Tên của thư mục chính tài khoản người dùng thực sự được cấu hình cho
  • Tên của thư mục bạn thực sự tạo ra

Đây phải là chính xác như nhau. Thông báo lỗi bạn nhận được su -l pennerlà nói với bạn rằng chúng không giống nhau.

Để kiểm tra thư mục chính, tài khoản người dùng thực sự được cấu hình, hãy chạy lệnh này (xem man 5 passwdman grepđể biết thêm thông tin):

grep penner /etc/passwd

Bạn sẽ thấy một dòng như thế này:

penner:x:1000:1000:Eliah Kagan,,,:/home/penner:/bin/bash

Đó là, trường phân :tách thứ sáu (sau thứ năm :) chứa thư mục chính. Nếu không /home/penner, nó nên như vậy. Nếu thư mục bạn đã tạo cho người dùng thì không /home/penner, nó cũng vậy. Nếu hai thư mục giống nhau nhưng không phải là một /home/penner, thì về mặt lý thuyết có thể hoạt động, nhưng bạn nên tạo cả hai /home/penner, bởi vì rất nhiều phần mềm giả định rằng tất cả các rootthư mục nhà của người dùng không phải là ./home/username

Bạn có thể thay đổi pennerthư mục chính /home/pennercủa mình bằng cách chạy lệnh này:

sudo usermod -d /home/penner penner

Đảm bảo rằng nó là một thư mục và người dùng có quyền truy cập

Nếu (hoặc một lần) tên là cả hai /home/penner, bạn cũng nên đảm bảo rằng người dùng có quyền truy cập vào thư mục nhà riêng của họ. Chạy:

ls -ld /home/penner

Bạn sẽ thấy một cái gì đó trông như thế này (mặc dù ngày và giờ sẽ khác nhau):

drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner

Nếu thay vì drwxr-xr-x, bạn có một cái gì đó bắt đầu bằng -thay vì d, thì bạn đã tạo một tệp chứ không phải là một thư mục. Xóa tập tin và tạo một thư mục ở đó để thay thế.

Nếu thay vì lần đầu tiên pennerbạn có thứ gì khác, thì người dùng không sở hữu thư mục chính của họ, vì vậy hãy khiến họ sở hữu nó:

sudo chown penner /home/penner
  • Xem man chownđể biết thêm thông tin.

Nếu thay vì drwxr-xr-xcó dấu gạch ngang trong ba ký tự tiếp theo sau dthì người dùng không có quyền truy cập đầy đủ ở đó. Khắc phục điều đó như sau:

sudo chmod u+rwx /home/penner
  • Xem man chmodđể biết thêm thông tin.

( pennercó khả năng chạy lệnh này nếu họ sở hữu thư mục chính của họ, vì vậy nếu bạn thích, bạn có thể chạy lệnh này dưới dạng sudo -u penner u+rwx /home/penner:)

Đảm bảo người dùng khác Không có quyền truy cập bằng văn bản

Nếu thay vì drwxr-xr-x, có ws thay vì -s trong sáu chữ cái cuối cùng, thì người dùng bên cạnh pennercó thể có quyền truy cập ghi vào pennerthư mục chính của. Điều này rất nguy hiểm (trừ khi bạn thực sự biết những gì bạn đang làm và muốn nó theo cách này và đã thiết lập mọi thứ để nó sẽ không thành vấn đề). Để sửa chữa nó:

sudo chmod -R go-w /home/penner

Mặc định khác

Có một số thay đổi khác bạn có thể muốn thực hiện. Theo mặc định trong Ubuntu (nghĩa là, nếu bạn tạo tài khoản người dùng bằng adduserhoặc bằng công cụ đồ họa mà bạn không có):

  1. Thư mục chính đã đọc và viết quyền cho tất cả mọi người, không chỉ người dùng sở hữu chúng. Người dùng có thể thay đổi điều này, cho toàn bộ thư mục chính hoặc bất kỳ tệp và thư mục con nào bên trong nó. Nhưng nếu bạn muốn mặc định này và bạn không có thứ hai và thứ ba rxtrong drwxr-xr-x, hãy chạy:

    sudo chmod 755 /home/penner
    

    ( pennercó khả năng chạy lệnh này nếu họ sở hữu thư mục chính của họ, vì vậy nếu bạn thích, bạn có thể chạy lệnh này dưới dạng sudo -u penner chmod 755 /home/penner:)

  2. Mỗi người dùng có nhóm riêng của mình, có cùng tên với người dùng và đây là nhóm chính của người dùng. Thư mục nhà của họ thuộc sở hữu của nhóm này. Đó là ý nghĩa của thứ hai pennertrong drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner. Bạn có thể dừng lại với mặc định này, nếu bạn biết bạn đang làm gì . Nhưng nếu bạn không có ý định làm khác đi, bạn nên đảm bảo pennerđược thiết lập theo cách này, vì một số danh tính nhóm chính có thể có cho người dùng hoặc chủ sở hữu nhóm trên thư mục nhà của người dùng, có thể dẫn đến các vấn đề bảo mật.

    Chạy đi groups penner. (Xem man groupsđể biết thêm thông tin.) Bạn sẽ thấy một cái gì đó như thế này:

    penner : penner adm dialout cdrom plugdev lpadmin sambashare
    

    Đừng lo lắng nếu nó không hoàn toàn như vậy. Tôi sẽ đến đó sớm thôi. Thay vào đó, hãy nhìn vào từ đầu tiên sau :. Đó là tên của nhóm chính của người dùng. Giả sử bạn muốn nó penner, hãy chắc chắn rằng nó là. Nếu không, thay đổi nó:

    sudo usermod -g penner penner
    

    Nếu bạn gặp lỗi nói rằng nhóm pennerkhông tồn tại, thì bạn sẽ phải tạo nó bằng lệnh này (và sau đó chạy lại lệnh trên):

    sudo addgroup penner
    
    • Xem man addgroupđể biết thêm thông tin. (Nếu bạn thích, bạn có thể sử dụng groupaddlệnh để tạo nhóm.)
  3. Khi bạn chạy groups penner, bạn có thể đã nhận được một danh sách các nhóm ngắn hơn đáng kể so với của tôi penner : penner adm dialout cdrom plugdev lpadmin sambashare. Đối với người dùng máy tính để bàn, các adm, dialout, cdrom, plugdev, lpadmin, và sambasharecung cấp khả năng mà người dùng máy tính để bàn thông thường nên có. Do đó, trừ khi bạn có lý do để làm khác, pennernên ở trong các nhóm này. Tuy nhiên, đây không phải là các nhóm chính, vì vậy chúng được đặt khác nhau. Giả sử pennerkhông có trong bất kỳ nhóm nào trong số này và bạn muốn pennertham gia vào tất cả các nhóm này, hãy chạy lệnh này:

    sudo usermod -a -G adm,dialout,plugdev,lpadmin,sambashare penner
    

    Trong trường hợp bạn quan tâm, đây là ý nghĩa của tất cả các nhóm:

    (Nguồn: Đặc quyền , trong wiki tài liệu Ubuntu.)

Làm cho người dùng trở thành quản trị viên

Nếu bạn không muốn pennertrở thành quản trị viên, có lẽ bạn không cần phải làm gì khác. Bạn có thể kiểm tra nếu pennerlà một quản trị viên với groups penner. Nếu không admincũng không sudođược liệt kê, sau đó pennerkhông phải là một quản trị viên.

Nếu bạn muốn pennertrở thành quản trị viên, hãy thêm pennervào bất kỳ nhóm nào trong số các nhóm này tồn tại. (Bạn cũng có thể thêm pennervào cả hai, nếu cả hai đều tồn tại.) Bạn có thể thực hiện điều đó bằng cách chạy riêng hai lệnh này - nếu một trong hai thành công, bạn đã tạo pennermột quản trị viên:

sudo usermod -a -G admin penner
sudo usermod -a -G sudo penner
  • Lý do có hai nhóm là vì trước Ubuntu 12.04 LTS, các quản trị viên đã ở trong adminnhóm. Bắt đầu với Ubuntu 12.04 LTS, các quản trị viên nằm trong sudonhóm. Nhưng nếu hệ thống 12.04 LTS của bạn được nâng cấp từ bản phát hành trước (và điều này sẽ áp dụng cho các bản phát hành Ubuntu sau, chẳng hạn như 12.10 khi được phát hành, được nâng cấp từ Ubuntu 11.10 trở về trước), thì để tương thích ngược, quản trị viên là thành viên của cả hai sudoadmin. Nói chung, nếu một trong các nhóm này không cung cấp khả năng quản trị, thì đơn giản là nó không tồn tại, do đó, chạy cả hai lệnh trên (riêng biệt, không phải sudo usermod -a -G admin,sudo penner) nói chung là một cách an toàn và hiệu quả để làm pennerquản trị viên.

Cảm ơn! Một cái gì đó như adduser là tốt nhưng tôi cũng muốn biết cách làm mọi thứ bằng tay. Một câu trả lời rất kỹ lưỡng! Tôi rất trân trọng điều này.
Penner

sudo chmod u+a /home/pennerđưa ra lỗi trên Ubuntu 16.04 (Xenial). Là sudo chmod u+rw /home/pennermột sự thay thế thích hợp?
Nickolai Leschov

@NickolaiLeschov Xin lỗi về điều đó - và cảm ơn vì đã chỉ ra lỗi! Tôi đã sửa lệnh.
Eliah Kagan

Đây chỉ là ngu ngốc, tại sao không loại bỏ useraddsau đó? giữ mã bị hỏng ngẫu nhiên
bảnh bao

1
@dashesy Cảm ơn - Tôi không biết rằng việc sử dụng useraddgây ra sự cố trên Ubuntu mà nó không gây ra trên các hệ thống khác. Trên hệ thống 16.04 của tôi, /etc/default/useraddcó (như là dòng duy nhất không bị lỗi) SHELL=/bin/shvà useradd (8) dường như nói rằng SHELLgiá trị được sử dụng nếu -s/ --shellcờ không được đưa ra, nhưng trên hệ thống 16.04 của tôi không xảy ra. Tôi đã sai khi nói quá vội vàng rằng Ubuntu useraddkhông bị hỏng. Bây giờ tôi không chắc lắm. Có thể có một lý do chính đáng cho sự khác biệt này giữa Fedora và Debian (và Ubuntu) ... nhưng tôi đã xóa nhận xét của mình để không gây hiểu lầm cho mọi người.
Eliah Kagan

0

Điều này chủ yếu xảy ra khi bạn tạo người dùng mà không tạo thư mục chính cho người dùng. Điều này có thể được giải quyết bằng cách sử dụng lệnh này khi tạo người dùng

useradd -m the_username

Cờ -m là thứ tạo ra thư mục chính cho người dùng. Sau khi tạo người dùng kiểm tra xem thư mục chính có tồn tại cho người dùng đó không bằng cách thực hiện

ls /home

Nếu bạn có thể thấy tên người dùng được liệt kê ở đó thì điều cuối cùng cần làm là gán mật khẩu cho người dùng đó

passwd the_username

Bây giờ bạn có thể đăng nhập với tên người dùng và mật khẩu đó


-1

ctrl + alt + f1 và đăng nhập vào đó và chạy

sudo chown -R $ USER: $ USER $ HOME

sau đó nhấn ctrl + alt + f7 và thử đăng nhập

Nó sẽ làm việc

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.