Por curiosidade, gostaria de saber por que, ao fazer login como root, não estou mais em / home / user . Qual o motivo e o que o diretório / root faz exatamente?
Eu não sou um usuário avançado. Responda com palavras simples ou forneça um link que fornece explicações simples e claras. Eu uso o Ubuntu 16.04 e faço login como root por sudo -i
. Como é explicado aqui , sudo -i
possui / root como lar. Eu quero saber qual é o motivo; existe alguma vantagem em estar lá? E não em ~ como o usuário sudo -s
.
home
diretório, mas este é nomeadoroot
sudo -s
para estar no mesmo diretório de usuário.man sudo
responderá à pergunta. Ser simplesuser -i
é usar as configurações do usuário raiz, massudo -s
as configurações atuais do usuário.Respostas:
Você não está registrando como root executando um
sudo
comando. Você está iniciando um shell com privilégios de root.Se você deseja permanecer no diretório inicial do usuário atual, pode usar em
sudo -s
vez dosudo -i
comando.cd ~
o levará ao mesmo diretório como se você não estivesse em um shell com privilégios de root. Literalmente/home/$USER
.Quando você usa
sudo -i
, o sistema age como se você estivesse logado comoroot
usuário. Por causa dissoleva você ao diretório inicial do usuário raiz
/root
./root
O diretório é um diretório inicial para oroot
usuário.A principal diferença é que arquivos de configurações do shell como
.bashrc
são usados/root
no caso desudo -i
e de um usuário normal no caso desudo -s
.fonte
.bashrc
são usados a partir daí em um shell específico. Na maioria dos casos, não há muita diferença./home
não estiver disponível, o problema não existe. Então você efetua login como root.A razão pela qual a casa do
root
usuário é/root
e não/home/root
é porque geralmente/home
é um ponto de montagem para uma partição / volume / disco separados ... (por vários motivos, como espaço em disco ou controle remoto, ...)Se, por algum motivo, a montagem
/home
falhar, você ainda poderá se conectarroot
e estar no/root
diretório inicial para investigar e corrigir as coisasAlém disso, para manutenção, configuração inicial, redimensionamento, ... você estaria conectado
root
e poderá desmontar / remontar/home
fonte
root tem / root como sua casa e quando você muda para root, você acaba em sua casa. Essa é a natureza de
sudo -i
.sudo -s
faz o mesmo, mas não alterna diretórios. Manual para sudo :O usuário root precisa fazer parte do sistema. Quando você coloca o / home em uma partição diferente e o root faz parte do / home, você enfrenta sérios problemas se a partição não for montada. Pela mesma razão, também temos
e
Quando você coloca / usr em uma partição e / usr não monta, você ainda tem um sistema em funcionamento.
fonte
sudo -i
vssudo -s
?O sistema de arquivos Linux está estruturado de uma maneira específica. Os binários essenciais estão
/bin/
, os arquivos do carregador de inicialização estão/boot/
, a maioria dos arquivos do dispositivo/dev/
, os pontos de montagem para mídia removível/media/
, etc ...Consulte https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard .
Alguns detalhes menores podem diferir de distribuição para distribuição (por exemplo,
/usr/bin/
vs./usr/local/bin/
), mas em geral quase todas as distribuições Linux seguem a mesma estrutura de diretórios.Para responder sua pergunta:
Os diretórios pessoais dos usuários estão
/home/
. Em princípio, o Linux é um sistema operacional multiusuário. Você pode ter apenas uma conta de usuário no laptop com o diretório inicial/home/<username>/
, mas se você procurar/home/
um servidor Linux compartilhado, verá muitos diretórios pessoais: um para cada conta de usuário. A idéia é que todo usuário do sistema tenha permissões de gravação apenas em seu próprio diretório inicial. Se seu nome de usuário ébob
que você pode ler e arquivos de gravação e excluir em/home/bob/
mas você não pode tocar em nada/home/alice/
ou em/var/log/
.root
é diferente.root
é o usuário administrativo e possui privilégios de gravação em qualquer lugar do sistema (e pode atuar como qualquer usuário do sistema). Portanto, faz sentido queroot
tenha o diretório inicial especial/root/
porqueroot
não é um usuário comum. Fora isso,/root/
é apenas um diretório comum, sem mágica especial, embora seja silencioso possível (até provável) que os utilitários do sistema confiem em/root/
ser o lar do usuárioroot
.Quando você executa
sudo -i
em um terminal, passa de um usuário comumbob
para outroroot
. Observe que essa opção afeta apenas a janela do terminal em que você digitousudo -i
. Para o seu gerenciador de arquivos, você ainda estábob
e se abrir outra janela do terminal, ainda estarábob
lá. Nesse contexto, o símbolo~
é uma abreviação para o diretório inicial do usuário atual. Porbob
~
meios,/home/bob/
mas porroot
~
meios/root/
.Espero que isso esclareça as coisas para você.
fonte
/
. A localização padrão tem mudado por razões de segurança (todos tem que ser capaz de arquivos de lista em/
, para que qualquer pessoa poderia ver o que dotfiles o usuário root tinha.Vejo que todo mundo está respondendo o que acontece quando você faz logon como root (você recebe um ~ diretório que não está em / home), mas ninguém está dizendo o porquê. Aqui está o porquê:
Se toda a estrutura / home se tornar inutilizável e você precisar corrigi-la, ou se precisar realocar / home porque está ficando sem espaço, é necessário fazê-lo de alguma forma. Você não pode fazer logon como qualquer usuário que tenha ~ in / home, porque você trava assim que tenta fazer alguma coisa. Portanto, o usuário root contratou outro lugar.
fonte
hir
era um erro de digitação. Obrigado por todas as informações! Eu recomendo manter a formatação do código difícil, mas isso é com você.Você diz que não é um usuário avançado, então tentarei escrever uma resposta passo a passo.
Ao usar o Linux, você precisa se lembrar de algumas coisas importantes:
Linux é um sistema multiusuário. Foi concebido assim desde o início, seguindo a filosofia do Unix (observe a abordagem diferente adotada pelo Windows, que foi concebida como um sistema de usuário único)
Como um sistema multiusuário, o Linux tem a capacidade de separar os arquivos pertencentes a cada usuário no sistema. A maneira como o Linux realiza isso é atribuindo a cada usuário uma subpasta dentro do
/home/
diretório. Os arquivos de cada usuário pertencem a ele e somente ele pode abri-los, modificá-los ou permitir que outros usuários os usem. Por outro lado, cada arquivo no sistema de arquivos pertence a um usuário e esse usuário tem poder sobre quem pode ver ou usar esse arquivo. Como mencionado em outra resposta, originalmente os usuários podiam colocar seus arquivos em qualquer lugar do sistema, mas em algum momento ficou evidente que as coisas deveriam ser melhor organizadas e/home/
("slash-home") se tornou o local onde os arquivos dos usuários deveriam estar.No entanto, existem arquivos que o próprio sistema e / ou cada usuário do sistema precisa: binários, arquivos de dispositivos, arquivos de sistema, etc. (lembre-se: no Linux e em qualquer outro sistema semelhante ao unix, tudo é um arquivo) . Este globalmente necessários os arquivos são armazenados em vários lugares ao longo do sistema de arquivos, organizados em várias pastas dentro da raiz do sistema de arquivos :
/
. Além disso, esses arquivos necessários globalmente não pertencem a um usuário específico do sistema, mas ao próprio sistema ... mas isso pode ser confuso: quem é o proprietário dos binários? Quem concede permissões sobre esses arquivos globalmente necessários?Como todo arquivo no sistema "precisa de um proprietário", deve haver um "usuário especial" que possa administrar os arquivos necessários globalmente. Além disso, esse "usuário especial" pode fazer coisas que nenhum outro usuário do sistema pode fazer: ele pode criar outros usuários para o sistema. Esse usuário é chamado de "superusuário" (para nós, os mortais) ou "raiz" (para o sistema).
Agora, esse superusuário é outro usuário do sistema, mas possui poderes (e responsabilidades) muito acima dos de outros usuários: manutenção, por exemplo. Portanto, é natural pensar que "root" precisa de um lugar para colocar as coisas dele, mas não deve ser confundido com as coisas pertencentes aos outros usuários. Portanto, em vez de ter uma subpasta abaixo
/home/
, "root" possui seu próprio espaço reservado no sistema de arquivos:/root/
(chamado "slash-root"). Lembre-se: "root" é um usuário muito especial, portanto, ele precisa de um lugar especial e privilegiado para colocar suas coisas.Agora, o Ubuntu não possui uma conta root ativada por padrão, portanto, um usuário "normal" precisa ter autoridade sobre o sistema como um todo. É aí que o
sudo
comando ("alternar usuário e fazer") entra em ação: permite que um usuário normal (anteriormente incluído na lista "sudoers") execute comandos como se fosse outro usuário, por exemplo "root".Finalmente, essas
-i
opções significam "simular o login inicial". Isso significa quesudo
lerá os dados do "perfil do usuário de destino" antes de executar o comando fornecido. Se você não fornecer um comando,sudo
iniciará uma instância do shell com o perfil (raiz) do usuário de destino ... e isso começará com a mudança para a pasta "home" do "usuário de destino". Entãosudo -i
, você será movido para a pasta inicial do root (/root/
).Espero que isso ajude você a entender o que acontece
sudo -i
.EDITAR
Acho que deixei algumas coisas não esclarecidas, então vou adicioná-las aqui:
Eu disse acima: "no Linux, tudo é um arquivo". E eu falo sério, literalmente! Seus documentos e imagens são arquivos, mas também terminais (aqueles que você pode acessar pressionando [CTRL] + [ALT] + [Fn]), unidades físicas e seu teclado, por exemplo. Um sistema semelhante ao unix funciona lendo ou gravando dados de / para arquivos e direcionando o fluxo de dados para / dos arquivos apropriados no sistema, que representam o arquivo com o qual você está trabalhando e a entrada das teclas que você está digitando, e a saída que você está vendo na tela. Alguns desses arquivos podem ser usados diretamente pelos usuários, mas outros não; por exemplo, você não pode ler ou gravar diretamente em um disco rígido, mas deve permitir que o Linux vincule uma pasta normal e navegável ao arquivo do dispositivo (abaixo
/dev/
) que representa seu disco rígido.Um sistema de arquivos Linux pode abranger várias unidades físicas . Um exemplo simples é quando você conecta uma unidade de caneta USB: o Linux pode montar essa unidade (montagem é o processo pelo qual o sistema conecta uma pasta padrão, na qual é possível ver arquivos em um shell ou navegador de arquivos, em um arquivo de dispositivo
/dev/
) e você pode trabalhar com ele e, quando terminar, solicita ao Linux que desmonte a unidade e remova-a da porta USB. O importante aqui é que esse ciclo "montar - desmontar" afeta * o mesmo sistema de arquivos "que você usa todos os dias: você não cria um novo sistema de arquivos toda vez que adiciona ou remove uma unidade física, mas adiciona essa unidade física ao sistema de arquivos ( novamente, compare essa filosofia com a abordagem do Wndows).Como o sistema de arquivos pode abranger várias unidades físicas, torna-se evidente que arquivos diferentes do sistema podem ser gravados em diferentes unidades físicas. Uma unidade pode armazenar os binários do sistema (
/bin/
) e outra pode armazenar os arquivos do usuário (/home/
e seus descendentes). Em uma configuração de várias unidades, é comum ter/home/
gravado em uma unidade física diferente de/root/
, portanto, se o sistema quebrar e os usuários não puderem efetuar login porque a unidade onde/home/
para de funcionar, o root pode. (Isso é simplista ... muitas coisas precisam ser copiadas em cada unidade física para permitir que o root efetue login, se nenhum outro usuário puder, mas isso pode lhe dar uma idéia geral).E esse
~
caractere til ( ) ... indica o diretório inicial do usuário atual . Se você estiver logado como "bob",cd ~
o levará para/home/bob/
, mas se você estiver logado como "root",cd ~
o levará para/root/
tl; dr Então agora eu acho que tudo foi dito:
"root" é um usuário especial, com poderes e responsabilidades muito acima de outros usuários
"/ root /" é o local onde o "root" pode armazenar suas coisas, sem o risco de ser confundido com outras coisas pertencentes a usuários normais. Esta pasta pode ser gravada em uma unidade física diferente da
/home/
.sudo -i
inicia um shell simulando o logon do root e isso implica mover para a pasta inicial do root. Como qualquer outro usuário,cd ~
o levará ao seu diretório pessoal, mas, se você for root, será/root/
Se o sistema estiver instalado em diferentes unidades físicas, o root poderá efetuar login e tentar corrigir as coisas, mesmo que outra unidade no sistema falhe.
fonte
O principal motivo para o diretório inicial do root ser tratado de maneira diferente:
Quando algo der errado, você poderá executar tarefas de recuperação do sistema assim que conseguir montar o sistema de arquivos /.
Dependendo da sua configuração, os diretórios pessoais do usuário podem estar em um sistema de arquivos diferente ou podem até ser montados na rede.
Para efetuar login como root (ou seja, digite o nome root e a senha root em um prompt de login) no console, você precisa apenas do sistema de arquivos montado.
(É também por isso que os principais utilitários estão em / bin e / sbin em vez de / usr / bin ou / usr / sbin - tudo em / usr é descartável.)
fonte