Неможливо увійти в новостворений обліковий запис користувача


25

Намагаючись переключити акаунти на свій щойно створений обліковий запис, я отримую чорний екран, після чого він повертає мене на головний екран входу після введення правильного пароля.

Після входу в свій раніше існуючий обліковий запис я отримую:

"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)

Коли я намагаюся су

su -l penner

Я отримав:

No directory, logging in with HOME=/

Я вручну створив домашній каталог, і ця помилка усувається, але все ж не пощастило з логіном. Здається, щось зійшло зі створенням користувача? Як я можу це виправити?


Як ви створили обліковий запис користувача? Ви робили це з gui чи з командного рядка? Якщо ви робите це з командного рядка, вам потрібно знати, що аддусер і useradd роблять речі дуже по-різному. Крім того, схоже, що файли з / etc / skel не були скопійовані. Не могли б ви попросити ls -al у своєму домашньому режисері та в новій редакції користувача, щоб ми могли побачити, що відбувається?
SuperMatt

Відповіді:


31

Якщо ви створили обліковий запис користувача за допомогою useradd, вам доведеться налаштувати все для нього вручну. Ось чому при створенні облікових записів користувачів з командного рядка рекомендується використовувати adduserнатомість Ubuntu (та Debian та інші системи на базі Debian). Ви можете просто захотіти видалити користувача з userdelабо deluserвідновити його за допомогою adduser. Інакше ...

Виправлення місцеположення домашнього каталогу

Якщо ви хочете зберегти обліковий запис користувача та виправити проблему, вам потрібно переглянути:

  • ім'я домашнього каталогу, для якого фактично налаштовано обліковий запис користувача
  • назва каталогу, який ви насправді створили

Вони повинні бути абсолютно однаковими. Повідомлення про помилку, яке ви отримуєте su -l penner, говорить вам, що вони не однакові.

Щоб перевірити домашній каталог, для якого фактично налаштовано обліковий запис користувача, запустіть цю команду (див. man 5 passwdТа man grepдля отримання додаткової інформації):

grep penner /etc/passwd

Ви повинні побачити такий рядок:

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

Тобто, шосте :розділене поле (після п’ятого :) містить домашній каталог. Якщо це не так /home/penner, так і повинно бути. Якщо каталог, який ви створили для користувача, немає /home/penner, він також повинен бути. Якщо два каталоги однакові, але жоден не є /home/penner, то теоретично це може працювати, але ви повинні зробити їх обидва /home/penner, оскільки багато програмного забезпечення передбачає, що всі rootдомашні каталоги, що не користувачі, є ./home/username

Ви можете змінити pennerдомашній каталог на, /home/pennerвиконавши цю команду:

sudo usermod -d /home/penner penner
  • Див. Для man usermodотримання додаткової інформації.

Переконайтеся в тому, що це Каталог та що у користувача є доступ

Якщо (або один раз) імена є обома /home/penner, ви також повинні переконатися, що користувач має доступ до власної домашньої директорії. Виконати:

ls -ld /home/penner

Ви повинні побачити щось таке (хоча дата і час будуть різними):

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

Якщо замість цього у drwxr-xr-xвас щось починається, -а не d, ви створили файл, а не каталог. Видаліть файл і замість цього створіть каталог.

Якщо замість першого у pennerвас є щось інше, користувач не має власного домашнього каталогу, тож змусьте його володіти ним:

sudo chown penner /home/penner
  • Див. Для man chownотримання додаткової інформації.

Якщо замість них drwxr-xr-xє тире в наступних трьох символах після символу d, то користувач не має повного доступу до нього. Виправте наступне:

sudo chmod u+rwx /home/penner
  • Див. Для man chmodотримання додаткової інформації.

( pennerздатний запустити цю команду, якщо вони мають свій домашній каталог, тому, якщо вам зручніше, ви можете запустити це як sudo -u penner u+rwx /home/penner:)

Забезпечення інших користувачів не мають доступу до запису на ковдру

Якщо замість s в останніх шести літерах замість s drwxr-xr-xє ws -, то користувачі, крім того, pennerможуть мати доступ до запису pennerдо домашнього каталогу. Це небезпечно (якщо ви дійсно не знаєте, що ви робите, і хочете цього так і не налаштували речі, щоб це не було проблемою). Щоб виправити це:

sudo chmod -R go-w /home/penner

Інші параметри за замовчуванням

Можливо, ви хочете внести деякі інші зміни. За замовчуванням в Ubuntu (тобто якщо ви створили обліковий запис користувача за допомогою adduserабо за допомогою графічного інструменту, якого ви не зробили):

  1. Домашні каталоги читають та пишуть дозволи для всіх, а не лише того, хто їм належить. Користувачі можуть змінити це як для всього домашнього каталогу, так і для будь-яких файлів і підкаталогів всередині нього. Але якщо ви хочете , це значення по замовчуванню, і ви не маєте другий і третій , rі xв drwxr-xr-x, виконайте команду:

    sudo chmod 755 /home/penner
    

    ( pennerздатний запустити цю команду, якщо вони мають свій домашній каталог, тому, якщо вам зручніше, ви можете запустити це як sudo -u penner chmod 755 /home/penner:)

  2. Кожен користувач має свою власну групу з тим самим іменем, що і користувач, і це основна група користувача. Їх домашній каталог належить цій групі. У цьому сенс другого pennerв drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner. Добре перервати з цим замовчуванням, якщо ви знаєте, що ви робите . Але якщо ви не маєте наміру робити щось інакше, ви повинні переконатися, що pennerце налаштовано таким чином, оскільки деякі можливі ідентичності первинної групи для користувача або власників груп у домашньому каталозі користувача можуть призвести до проблем із безпекою.

    Біжи groups penner. (Див. Для man groupsотримання додаткової інформації.) Ви повинні побачити щось подібне:

    penner : penner adm dialout cdrom plugdev lpadmin sambashare
    

    Не хвилюйтесь, якщо це не зовсім так. Я швидко доберуся до цього. Замість цього подивіться на перше слово після :. Це назва первинної групи користувача. Припускаючи, що ви хочете, щоб це було penner, переконайтесь, що це так. Якщо це не так, змініть його:

    sudo usermod -g penner penner
    

    Якщо ви отримаєте помилку про те, що група pennerне існує, вам доведеться створити її за допомогою цієї команди (а потім знову запустити вищевказану команду):

    sudo addgroup penner
    
    • Див. Для man addgroupотримання додаткової інформації. (Якщо ви хочете, ви можете альтернативно використовувати groupaddкоманду для створення груп.)
  3. Коли ви бігали groups penner, можливо, ви потрапили до списку груп значно коротшого, ніж у мене penner : penner adm dialout cdrom plugdev lpadmin sambashare. Для настільних користувачів, adm, dialout, cdrom, plugdev, lpadmin, і sambashareнадати можливості , які користувачі настільних зазвичай повинні мати. Тому, якщо у вас немає причин робити інше, pennerслід входити до цих груп. Однак це не первинні групи, тому вони встановлюються по-різному. Припустимо penner, що немає в жодній із цих груп, і ви хочете pennerбути у всіх них, виконайте цю команду:

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

    Якщо вам це цікаво, ось що означають усі ці групи:

    (Джерело: Привілеї , у вікі документації на Ubuntu.)

Зробити користувача адміністратором

Якщо ви не хочете pennerбути адміністратором, вам, ймовірно, нічого більше не потрібно робити. Ви можете перевірити, чи pennerє адміністратором groups penner. Якщо adminні sudoв списку, ні в списку, він pennerне є адміністратором.

Якщо ви хочете pennerбути адміністратором, додайте pennerдо того, що існує з цих груп. (Ви можете також додати pennerобидві, якщо вони обидві існують.) Ви можете досягти цього, виконавши ці дві команди окремо - якщо будь-яка успішна, ви створили pennerадміністратора:

sudo usermod -a -G admin penner
sudo usermod -a -G sudo penner
  • Причина існування двох груп полягає в тому, що до Ubuntu 12.04 LTS в adminгрупі були адміністратори . Починаючи з Ubuntu 12.04 LTS, адміністратори входять до sudoгрупи. Але якщо ваша система 12.04 LTS оновлена ​​з попереднього випуску (і це має застосовуватися до більш пізніх версій Ubuntu, наприклад, 12.10, коли вона виходить, які оновлюються з Ubuntu 11.10 або новіших версій), то для зворотної сумісності адміністратори є членами обох sudoі admin. Як правило, якщо одна з цих груп не надає адміністративні здібності, вона просто не існує, тому виконання обох вищевказаних команд (окремо, не як sudo usermod -a -G admin,sudo penner) є, як правило, безпечним та ефективним способом зробити pennerадміністратора.

Спасибі! Щось на кшталт аддусера приємно, але мені подобається знати, як все робити вручну. Дуже ретельна відповідь! Я дійсно ціную це.
penner

sudo chmod u+a /home/pennerвидає помилку на Ubuntu 16.04 (Xenial). Чи sudo chmod u+rw /home/pennerналежна заміна?
Микола Лещів

@NickolaiLeschov Вибачте за це - і дякую за вказівку на помилку! Я виправив команду.
Елія Каган

це просто німе, чому б useraddтоді не зняти ? зберігання випадкового зламаного коду
тире

1
@dashesy Спасибі - я не знав, що використання useraddвикликає проблеми на Ubuntu, що не викликає в інших системах. У моїй системі 16.04, /etc/default/useraddмає (як єдиний некомментований рядок) SHELL=/bin/sh, і useradd (8), здається, говорить, що SHELLзначення там використовується, якщо -s/ --shellпрапор не вказано, але в моїй системі 16.04 цього не відбувається. Я неправильно сказав так поспішно, що Ubuntu useraddне зламаний. Зараз я не такий впевнений. Можливо, є якась причина для цієї різниці між Fedora та Debian (і Ubuntu) ... але я видалив свій коментар, щоб не вводити людей в оману.
Елія Каган

0

В основному це відбувається, коли ви створюєте користувача без створення домашнього каталогу для користувача. Це можна вирішити за допомогою цієї команди при створенні користувача

useradd -m the_username

Прапор -m - це те, що створює домашній каталог для користувача. Після створення користувача перевірте, чи існує домашній каталог для цього користувача

ls /home

Якщо ви можете побачити вказане ім'я користувача, то останнє, що потрібно зробити - це призначити пароль цьому користувачеві

passwd the_username

Тепер ви можете увійти за допомогою цього імені користувача та пароля


-1

ctrl + alt + f1 і увійдіть туди і запустіть

sudo chown -R $ USER: $ USER $ HOME

потім натисніть ctrl + alt + f7 і спробуйте увійти

Це спрацює

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.