Eu me pergunto por que isso é um "problema". O diretório /root
é o diretório inicial do usuário root e geralmente não é necessário fazer nada nele. Consequentemente, ele não possui permissão de execução para usuários normais, o que significa que você não pode inseri-lo ou listar seu conteúdo. Estas não são coisas que você deve mudar, por motivos de segurança.
De qualquer forma, você pode encontrar algumas orientações sobre o uso de um comando executando
man command
Em man ls
você encontrará
-d, --directory
list directories themselves, not their contents
Compare os efeitos:
$ ls /root
ls: cannot open directory '/root': Permission denied
$ sudo !!
sudo ls /root
[sudo] password for zanna:
snap
$ ls -d /root
/root
Eu preciso de permissão de root (obtida apenas para um comando executando sudo command
) para listar o conteúdo deste diretório, mas não para listar o próprio diretório . Isso porque eu tenho permissão de execução no diretório pai de /root
, /
(muitas vezes confusamente chamado de diretório raiz, pois é a "raiz" do sistema de arquivos do qual o resto se ramifica).
A grande maioria dos diretórios do seu sistema tem permissão de leitura e execução por padrão. O diretório /root
é excepcional em suas permissões restritivas.
Também em man ls
é a ferramenta para mostrar as permissões, mas não é de todo óbvio qual delas está lá, então você pode querer tentar executar info ls
, que mostra, na seção explicando quais informações cada opção faz com que seja mostrado, a documentação para a opção -l
:
‘-l’
‘--format=long’
‘--format=verbose’
In addition to the name of each file, print the file type, file
mode bits, number of hard links, owner name, group name, size, and
timestamp (*note Formatting file timestamps::), normally the
modification time. Print question marks for information that
cannot be determined.
Isso ainda não está muito claro! Você sabia que "bits de modo de arquivo" significa as permissões? O comando chmod
é uma abreviação de modo de alteração . Agora você sabe. Então vamos tentar as opções juntos. Anotei a saída:
$ ls -dl /root #note that the order of options does not matter here
drwx------ 8 root root 4096 Dec 17 14:06 /root
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^--file name
| | | | | | | | | | |--last modified time
| | | | | | | | | |--day of month
| | | | | | | | |--name of month *
| | | | | | | |--size
| | | | | | |--group
| | | | | |--owner
| | | | |--number of hard links to this file
| | | |--permission bits for "others" (any user/program)
| | |--permission bits for group
| |--permission bits for owner
|--file type (d=directory)
* Depende das configurações de localidade. Se você usar uma localidade diferente do inglês, poderá obter a saída em inglês de qualquer comando executando LC_ALL=C ls -dl /root
Veja o tag wiki para permissões para informações sobre como interpretar os "bits de modo". ls -l
exibe notação simbólica para as permissões, em que r
= acesso de leitura, w
= acesso de gravação, x
= executável e -
não indicam permissão. Estes têm efeitos diferentes para diretórios e arquivos regulares. Para diretórios, o acesso de leitura permite que o conteúdo do diretório seja listado se o bit de permissão x
também for definido, o x
bit permite que o diretório seja inserido e w
permita arquivos dentro do diretório a ser excluído, criado e renomeado se o x
bit também estiver definido. É útil lembrar que um diretório é um arquivo que armazena uma lista de arquivos - é por isso que você precisa de permissão de gravação no diretório para criar, renomear ou excluir seu conteúdo - essas ações alteram a lista. Essa permissão também permite que você force a gravação de outras alterações nos arquivos dentro do diretório.
Se estivermos interessados apenas em proprietários e permissões, ls -l
nos fornecerá muitas informações. Existe um comando mais flexível para mostrar metadados de arquivos; é stat
. Você pode usá-lo para listar o proprietário ( %U
) (u para usuário - a maioria dos utilitários de linha de comando chama o proprietário de um arquivo. Em chmod
, por exemplo, u = proprietário e o = outros - certifique-se de não dê permissões para o
quando você deseja apenas dar a u
!), group ( %G
) e listar permissões em notação simbólica ou octal:
$ stat -c "%U %G %a" /root
root root 700
$ stat -c "%U %G %A" /root
root root drwx------
Veja man stat
para muitas outras coisas stat
pode informá-lo sobre arquivos.