Não é possível fazer login na conta de usuário recém-criada


25

Ao tentar mudar de conta para a minha conta recém-criada, recebo uma tela preta e, em seguida, levo-me de volta à tela de login principal depois de inserir a senha correta.

Ao fazer login na minha conta existente anteriormente, recebo:

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

Quando tento su

su -l penner

Eu recebo:

No directory, logging in with HOME=/

Criei manualmente o diretório inicial e esse erro desaparece, mas ainda não teve sorte com o login. Parece que algo deu errado com a criação do usuário? Como posso corrigir isso?


Como você criou a conta de usuário? Você fez isso a partir da GUI ou da linha de comando? Se você faz isso na linha de comando, precisa estar ciente de que adduser e useradd fazem as coisas de maneira muito diferente. Além disso, parece que os arquivos do / etc / skel não foram copiados. Você poderia, por favor, ls -al no diretório inicial e no novo diretório do usuário para que possamos ver o que está acontecendo?
SuperMatt 5/07

Respostas:


31

Se você criou a conta de usuário useradd, precisará configurar tudo manualmente. É por isso que, ao criar contas de usuário a partir da linha de comando, é recomendável usar adduserno Ubuntu (e Debian e outros sistemas baseados em Debian). Você pode apenas remover o usuário com userdelou deluserrecriar com ele adduser. De outra forma...

Corrigindo o local do diretório inicial

Se você deseja manter a conta de usuário e corrigir o problema, é necessário analisar:

  • o nome do diretório inicial para o qual a conta do usuário está realmente configurada
  • o nome do diretório que você realmente criou

Estes devem ser exatamente iguais. A mensagem de erro que você recebe su -l pennerinforma que eles não são os mesmos.

Para verificar o diretório inicial para o qual a conta do usuário está realmente configurada, execute este comando (consulte man 5 passwde man greppara obter mais informações):

grep penner /etc/passwd

Você deve ver uma linha como esta:

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

Ou seja, o sexto :campo separado (após o quinto :) contém o diretório inicial. Se não for /home/penner, deveria ser. Se o diretório que você criou para o usuário não for /home/penner, também deve ser. Se os dois diretórios forem iguais, mas nenhum deles for /home/penner, então isso pode funcionar teoricamente, mas você deve criar os dois /home/penner, porque muitos softwares pressupõem que todos rootos diretórios pessoais de não usuários sejam ./home/username

Você pode alterar pennero diretório inicial de /home/penner, executando este comando:

sudo usermod -d /home/penner penner

Garantindo que seja um diretório e que o usuário tenha acesso

Se (ou uma vez) os nomes forem os dois /home/penner, você também deve garantir que o usuário tenha acesso ao seu próprio diretório pessoal. Corre:

ls -ld /home/penner

Você deve ver algo parecido com este (embora a data e a hora sejam diferentes):

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

Se, em vez de drwxr-xr-x, você tiver algo que começa com -e não d, então você criou um arquivo em vez de um diretório. Exclua o arquivo e crie um diretório lá.

Se, em vez da primeira, pennervocê tiver outra coisa, o usuário não será o proprietário do diretório inicial, portanto, faça com que ele seja o proprietário:

sudo chown penner /home/penner

Se em vez de drwxr-xr-xtraços nos próximos três caracteres após o d, o usuário não terá acesso total a ele. Corrija da seguinte maneira:

sudo chmod u+rwx /home/penner

( penneré capaz de executar este comando se eles possuem o diretório inicial, portanto, se preferir, você pode executá-lo como sudo -u penner u+rwx /home/penner:)

Garantindo que outros usuários não tenham acesso de gravação geral

Se, em vez de drwxr-xr-x, houver ws em vez de -s nas últimas seis letras, os usuários pennerpoderão ter acesso de gravação ao pennerdiretório inicial do. Isso é perigoso (a menos que você realmente saiba o que está fazendo e o queira dessa maneira e tenha configurado as coisas para que não seja um problema). Para fixar isso:

sudo chmod -R go-w /home/penner

Outros padrões

Existem outras alterações que você pode querer fazer. Por padrão no Ubuntu (ou seja, se você criar uma conta de usuário com adduserou com uma ferramenta gráfica, o que você não criou ):

  1. Os diretórios pessoais têm permissões de leitura e gravação para todos, não apenas para o usuário que os possui. Os usuários podem alterar isso, para todo o diretório pessoal ou para quaisquer arquivos e subdiretórios dentro dele. Mas se você quer este padrão, e você não tem o segundo eo terceiro re xno drwxr-xr-x, execute:

    sudo chmod 755 /home/penner
    

    ( penneré capaz de executar este comando se eles possuem o diretório inicial, portanto, se preferir, você pode executá-lo como sudo -u penner chmod 755 /home/penner:)

  2. Cada usuário tem seu próprio grupo, com o mesmo nome que o usuário, e este é o grupo principal do usuário. O diretório inicial é de propriedade deste grupo. Esse é o significado do segundo pennerem drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner. Não há problema em romper com esse padrão, se você souber o que está fazendo . Mas se não for sua intenção fazer as coisas de maneira diferente, verifique se pennerestá configurado dessa maneira, pois algumas identidades de grupo principais possíveis para um usuário ou proprietários de grupos no diretório inicial do usuário podem levar a problemas de segurança.

    Corra groups penner. (Veja man groupspara obter mais informações.) Você deve ver algo assim:

    penner : penner adm dialout cdrom plugdev lpadmin sambashare
    

    Não se preocupe se não for bem assim. Eu vou chegar a isso em breve. Em vez disso, observe a primeira palavra após a :. Esse é o nome do grupo principal do usuário. Supondo que você queira que seja penner, verifique se é. Caso contrário, altere-o:

    sudo usermod -g penner penner
    

    Se você receber um erro dizendo que o grupo pennernão existe, será necessário criá-lo com este comando (e execute o comando acima novamente):

    sudo addgroup penner
    
    • Veja man addgrouppara mais informações. (Se preferir, você pode usar o groupaddcomando como alternativa para criar grupos.)
  3. Quando você correu groups penner, pode ter recebido uma lista de grupos consideravelmente mais curta que a minha penner : penner adm dialout cdrom plugdev lpadmin sambashare. Para usuários de desktop, o adm, dialout, cdrom, plugdev, lpadmin, e sambasharefornecer habilidades que os usuários de desktop geralmente deve ter. Portanto, a menos que você tenha um motivo para fazer o contrário, pennerdeve estar nesses grupos. Porém, esses não são grupos primários, portanto, eles são definidos de maneira diferente. Supondo que pennernão esteja em nenhum desses grupos e você queira pennerestar em todos eles, execute este comando:

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

    Caso você esteja interessado, eis o que todos esses grupos significam:

    (Fonte: Privileges , no wiki de documentação do Ubuntu.)

Tornando o usuário um administrador

Se você não deseja pennerser administrador, provavelmente não precisará fazer mais nada. Você pode verificar se penneré um administrador groups penner. Se nem adminnem sudoestiver listado, pennernão será um administrador.

Se você deseja pennerser um administrador, adicione pennera qualquer um desses grupos. (Você também pode adicionar pennera ambos, se ambos existirem.) Você pode fazer isso executando esses dois comandos separadamente - se um deles for bem-sucedido, você criou pennerum administrador:

sudo usermod -a -G admin penner
sudo usermod -a -G sudo penner
  • A razão pela qual existem dois grupos é que, antes do Ubuntu 12.04 LTS, os administradores estavam no admingrupo. A partir do Ubuntu 12.04 LTS, os administradores estão no sudogrupo. Mas se o seu sistema 12.04 LTS for atualizado a partir de uma versão anterior (e isso se aplica a versões posteriores do Ubuntu, como a 12.10 quando for lançada, que são atualizadas a partir do Ubuntu 11.10 ou anterior), para compatibilidade com versões anteriores, os administradores são membros de ambas. sudoe admin. Geralmente, se um desses grupos não confere habilidades administrativas, ele simplesmente não existe, portanto, executar os dois comandos acima (separadamente, não como sudo usermod -a -G admin,sudo penner) é geralmente uma maneira segura e eficaz de criar pennerum administrador.

Obrigado! Algo como o adduser é bom, mas eu gosto de saber como fazer as coisas manualmente também. Uma resposta muito completa! Eu realmente gostei disso.
Penner

sudo chmod u+a /home/pennerdá um erro no Ubuntu 16.04 (Xenial). É sudo chmod u+rw /home/penneruma substituição adequada?
Nickolai Leschov

@NickolaiLeschov Desculpe por isso - e obrigado por apontar o erro! Eu consertei o comando.
Eliah Kagan

isso é idiota, por que não remover useraddentão? mantendo o código quebrado aleatório
traçado

1
@dashesy Obrigado - Eu não sabia que o uso useraddcausa problemas no Ubuntu que não causam em outros sistemas. No meu sistema 16.04, /etc/default/useraddhas (como sua única linha não comentada) SHELL=/bin/she useradd (8) parecem dizer que o SHELLvalor é usado se o sinalizador -s/ --shellnão for fornecido, mas no meu sistema 16.04 isso não acontece. Errei ao dizer tão apressadamente que o Ubuntu useraddnão está quebrado. Agora não tenho tanta certeza. Talvez haja uma boa razão para essa diferença entre o Fedora e o Debian (e Ubuntu) ... mas excluí meu comentário para não enganar as pessoas.
Eliah Kagan

0

Isso acontece principalmente quando você cria o usuário sem criar um diretório inicial para o usuário. Isso pode ser resolvido usando este comando ao criar o usuário

useradd -m the_username

O sinalizador -m é o que cria o diretório inicial para o usuário. Após criar o usuário, verifique se o diretório inicial existe para esse usuário, executando

ls /home

Se você puder ver esse nome de usuário listado lá, a última coisa a fazer é atribuir uma senha a esse usuário

passwd the_username

Agora você pode fazer login com esse nome de usuário e senha


-1

ctrl + alt + f1 e faça o login lá e execute

sudo chown -R $ USER: $ USER $ HOME

pressione ctrl + alt + f7 e tente fazer o login

Vai funcionar

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.