Невозможно войти в новую учетную запись пользователя

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=/

Я вручную создал домашний каталог, и эта ошибка исчезла, но все равно не повезло с логином. Кажется, что-то пошло не так с созданием пользователя? Как я могу это исправить?

Пеннер
источник
Как вы создали учетную запись пользователя? Вы сделали это из графического интерфейса или из командной строки? Если вы делаете это из командной строки, вы должны знать, что adduser и useradd делают вещи по-разному. Кроме того, похоже, что файлы из / etc / skel не были скопированы. Не могли бы вы добавить ls -al в вашу домашнюю директорию и в директорию нового пользователя, чтобы мы могли видеть, что происходит?
Супермат

Ответы:

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 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администратора.
Элия ​​Каган
источник
Благодарность! Что-то вроде adduser - это хорошо, но мне нравится знать, как это делать и вручную. Очень тщательный ответ! Я очень ценю это.
Пеннер
sudo chmod u+a /home/pennerвыдает ошибку на Ubuntu 16.04 (Xenial). Является ли sudo chmod u+rw /home/pennerправильная замена?
Николай Лещов
@NickolaiLeschov К сожалению об этом - и спасибо за указание на ошибку! Я исправил команду.
Элия ​​Каган
это просто глупо, почему бы useraddтогда не убрать ? хранение случайного неработающего кода
dashesy 25.10.16
1
@dashesy Спасибо - я не знал, что использование useraddвызывает проблемы в Ubuntu, чего не происходит в других системах. В моей системе 16.04 /etc/default/useraddhas (как единственная незакомментированная строка) 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

Теперь вы можете войти с этим именем пользователя и паролем

macleash
источник
-1

Ctrl + Alt + F1 и войти там и запустить

sudo chown -R $ USER: $ USER $ HOME

затем нажмите Ctrl + Alt + F7 и попробуйте войти

Это сработает

Shameer Theen H
источник