Por que não consigo criar um diretório em / sys

8

Estou aprendendo o Ubuntu e experimentando coisas.

Percebi que não consegui criar um diretório em / sys

Este é um diretório especial ou algo assim? Existem outros tipos de diretórios?

(Eu fiz um sudo -i e um chmod a+w /sys )

    
por spiderplant0 05.09.2013 / 23:52

2 respostas

14

Primeiro, você deve alterar as permissões /sys de volta ( sudo chmod a-r /sys fará isso, pois as permissões padrão são dr-xr-xr-x ). /sys não deve ser gravável em todo o mundo!

Em geral, para criar arquivos e diretórios em partes do sistema fora de sua pasta pessoal, mídia externa e a pasta /tmp , você deve fazer isso como root com sudo , em vez de alterar as permissões ou propriedade para obter acesso. Tornar diretórios mundialmente graváveis não é recomendado.

Para informações sobre a maneira recomendada, consulte:

Você pode até mesmo usar gksudo nautilus (ou sudo -H nautilus se não tiver gksudo ) para abrir uma janela do navegador de arquivos de propriedade da raiz. Tenha cuidado com isso, porém - ele pode fazer praticamente qualquer coisa, e a maioria dessas coisas são coisas que você provavelmente não quer fazer. Além disso, observe que, se você lançar um programa a partir de uma janela do navegador de arquivos de propriedade da raiz, esse programa também será executado como raiz.

Isso é geralmente o que você deve fazer para editar ou criar novos conteúdos de diretórios de propriedade de root . No entanto ...

/sys é diferente; mesmo root não pode criar coisas diretamente

Como /proc e /dev , no Ubuntu e em outros sistemas operacionais usando o kernel do Linux, /sys é um sistema de arquivos virtual , o que representa não são arquivos reais em seu disco (ou em qualquer lugar).

Em suma, /sys é uma maneira de o kernel fornecer informações sobre dispositivos (físicos e virtuais).

Algumas entradas no sistema de arquivos /sys também são graváveis e escrever para elas é uma maneira de definir dinamicamente a configuração dos dispositivos. (Isso não deve ser confundido com o sistema de arquivos /dev ; gravar entradas em /dev é uma forma de enviar dados para dispositivos. )

Mas isso ainda deve ser feito como root. Em vez de alterar a permissão em /sys ou em qualquer parte dela, você deve executar essas ações como root com sudo , conforme explicado acima.

Esta resposta no Unix.SE explica como fazer isso e até mesmo como permitir que alguns não administradores (quem não pode executar a maioria das ações como root) para alterar algumas configurações /sys .

Para mais informações sobre como o /sys funciona, consulte:

As entradas em /sys são criadas pelo kernel e pelos drivers; você não pode simplesmente criá-los a partir da linha de comando. (Como dito acima, você pode editar alguns como root, mas você não pode geralmente criar novos a partir do userspace exceto carregando módulos do kernel ou instalando drivers ou modificando o kernel.)

Se você estiver interessado em escrever drivers, consulte:

por Eliah Kagan 06.09.2013 / 00:21
4

Sim, /sys é um diretório "especial". De Wikipedia :

  

As distribuições modernas do Linux incluem um diretório / sys como um virtual   sistema de arquivos (sysfs, comparável a / proc, que é um procfs), que   armazena e permite a modificação dos dispositivos conectados ao sistema,   enquanto muitos sistemas operacionais UNIX e Unix tradicionais usam / sys   como um link simbólico para a árvore de fontes do kernel.

O "armazena e permite a modificação dos dispositivos conectados ao sistema" é muito importante. O fato de que /sys é usado como um sistema de arquivos virtual, montado especialmente, é por que você (e o root) não podem gravar nele. Eu evitaria mexer com /sys . Com o Linux, que é muito aberto e transparente, as coisas geralmente não são alteráveis por um bom motivo; seja para fins de segurança, ou, neste caso, porque há outra maneira de atingir sua meta que é muito menos arriscada.

    
por Richard 06.09.2013 / 00:20

Tags