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

8

Estou aprendendo o Ubuntu e experimentando coisas.

Notei que não podia criar um diretório dentro de / sys

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

(Eu fiz a sudo -ie a chmod a+w /sys)

spiderplant0
fonte

Respostas:

17

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

Em geral, para criar arquivos e diretórios em partes do sistema fora de sua pasta pessoal, mídia externa, ea /tmppasta, você deve fazê-lo comoroot com sudo, ao invés de alterar as permissões ou a propriedade para obter acesso. Tornar os diretórios graváveis ​​em todo o mundo não é particularmente recomendado.

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

Você pode até usar gksudo nautilus(ou sudo -H nautilusse não tiver gksudo) para abrir uma janela do navegador de arquivos pertencente à raiz. Porém, tenha cuidado com isso - ele pode fazer praticamente qualquer coisa, e a maioria dessas coisas são coisas que você provavelmente não quer que seja feito. Além disso, observe que, se você iniciar um programa a partir de uma janela do navegador de arquivos pertencente à 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 sua propriedade root. Contudo...

/sysé diferente; ainda rootnão pode criar coisas diretamente lá

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

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

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

Mas isso ainda deve ser feito como raiz. Em vez de alterar a permissão /sysou parte dela, você deve executar essas ações como root, sudoconforme explicado acima.

Esta resposta no Unix.SE explica como fazer isso e até mesmo como permitir que alguns não administradores (que não podem executar a maioria das ações como root) alterem algumas /sysconfigurações.

Para mais informações sobre como /sysfunciona, consulte:

Entradas /syssão criadas pelo kernel e pelos drivers; você não pode simplesmente criá-los a partir da linha de comando. (Como mencionado acima, você pode editar alguns como root, mas geralmente não é possível criar novos no espaço do usuário, exceto carregando módulos do kernel ou instalando drivers ou modificando o kernel.)

Se você estiver interessado em escrever drivers, consulte:

Eliah Kagan
fonte
4

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

As distribuições modernas do Linux incluem um diretório / sys como um sistema de arquivos virtual (sysfs, comparável a / proc, que é um procfs), que armazena e permite a modificação dos dispositivos conectados ao sistema, enquanto muitos sistemas operacionais tradicionais do tipo UNIX e Unix 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" é bastante importante. O fato de /sysser usado como um sistema de arquivos virtual, montado especialmente, é o motivo pelo qual você (e o root) não pode 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; por motivos de segurança ou, nesse caso, porque existe outra maneira de atingir seu objetivo que é muito menos arriscado.

Richard
fonte