Perché non posso creare una directory in / sys


8

Sto imparando Ubuntu e sperimentando cose.

Ho notato che non sono riuscito a creare una directory all'interno di / sys

È una directory speciale o qualcosa del genere? Esistono altri tipi di directory?

(Ho fatto un sudo -ie un chmod a+w /sys)

Risposte:


17

Innanzitutto, è necessario modificare /sysnuovamente le autorizzazioni ( sudo chmod a-r /syslo faranno, poiché le autorizzazioni predefinite sono dr-xr-xr-x). /sysnon dovrebbe essere scrivibile in tutto il mondo!

In generale, per creare file e directory in parti del sistema al di fuori della cartella principale, dei supporti esterni e della /tmpcartella, è necessario farlo comeroot con sudo, anziché modificando le autorizzazioni o la proprietà per concederti l'accesso. Rendere le directory scrivibili in tutto il mondo non è particolarmente raccomandato.

Per informazioni sul modo consigliato, vedere:

Puoi persino usare gksudo nautilus(o sudo -H nautilusse non hai gksudo) per aprire una finestra del browser dei file di proprietà di root. Fai attenzione, però: può fare praticamente qualsiasi cosa e la maggior parte di queste cose sono cose che probabilmente non vorresti fare. Inoltre, tieni presente che se avvii un programma da una finestra del browser dei file di proprietà di root, anche quel programma verrà eseguito come root.

Questo è generalmente ciò che dovresti fare, per modificare o creare nuovi contenuti di directory di proprietà di root. Però...

/sysè diverso; non è nemmeno rootpossibile creare direttamente cose lì

Come /proce /dev, in Ubuntu e altri sistemi operativi che usano il kernel Linux, /sysè un filesystem virtuale , ciò che rappresenta non sono file reali sul tuo disco (o ovunque).

In breve, /sysè un modo in cui il kernel fornisce informazioni sui dispositivi (fisici e virtuali).

Alcune voci nel /sysfilesystem sono anche significativamente scrivibili e scrivere su di esse è un modo per impostare dinamicamente la configurazione per i dispositivi. (Questo non deve essere confuso con il /devfilesystem; scrivere su voci in /devè un modo di inviare dati ai dispositivi. )

Ma questo deve ancora essere fatto come root. Invece di modificare l'autorizzazione su /syso parte di essa, è necessario eseguire tali azioni come root con sudocome spiegato sopra.

Questa risposta su Unix.SE spiega come farlo e persino come consentire ad alcuni non amministratori (che non possono eseguire la maggior parte delle azioni come root) di modificare alcune /sysimpostazioni.

Per ulteriori informazioni su come /sysfunziona, vedere:

Le voci in /sysvengono create dal kernel e dai driver; non puoi semplicemente crearli dalla riga di comando. (Come affermato sopra, è possibile modificarne alcuni come root, ma in genere non è possibile crearne di nuovi dallo spazio utenti se non caricando i moduli del kernel o installando in altro modo i driver o modificando il kernel.)

Se sei interessato a scrivere i driver, vedi:


4

Sì, /sysè una directory "speciale". Da Wikipedia :

Le moderne distribuzioni Linux includono una directory / sys come un filesystem virtuale (sysfs, paragonabile a / proc, che è un procfs), che memorizza e consente la modifica dei dispositivi collegati al sistema, mentre molti sistemi operativi tradizionali UNIX e simili a Unix utilizzano / sys come collegamento simbolico all'albero dei sorgenti del kernel.

Il "Memorizza e consente la modifica dei dispositivi collegati al sistema" è piuttosto importante. Il fatto che /syssia usato come filesystem virtuale, montato appositamente, è il motivo per cui tu (e il root) non potete scrivere su di esso. Eviterei di fare casini /sys. Con Linux, che è molto aperto e trasparente, le cose di solito non sono modificabili per una buona ragione; o per motivi di sicurezza o, in questo caso, perché esiste un altro modo per raggiungere il tuo obiettivo che è molto meno rischioso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.