Почему я не могу создать каталог в / sys

8

Я изучаю Ubuntu и экспериментирую с вещами.

Я заметил, что не могу создать каталог в / sys

Это специальный каталог или что-то? Существуют ли другие типы каталогов?

(Я сделал sudo -iи chmod a+w /sys)

spiderplant0
источник

Ответы:

17

Во-первых, вы должны поменять /sysразрешения обратно (это sudo chmod a-r /sysбудет сделано, так как разрешения по умолчанию dr-xr-xr-x). /sysне должно быть доступно для записи!

В общем, для создания файлов и каталогов в частях системы, находящихся за пределами вашей домашней папки, внешнего носителя и /tmpпапки, вы должны делать это какroot обычно sudo, а не изменять права доступа или владельца, чтобы предоставить себе доступ. Создание каталогов, доступных для записи всем, особенно не рекомендуется.

Для получения информации о рекомендуемом способе см .:

Вы даже можете использовать gksudo nautilus(или, sudo -H nautilusесли у вас его нет gksudo), чтобы открыть окно браузера файлов, принадлежащее пользователю root. Однако будьте осторожны с этим - он может делать практически все, и большинство из этих вещей - вещи, которые вы, вероятно, не хотите делать. Также обратите внимание, что если вы запускаете программу из окна браузера файлов, принадлежащего пользователю root, эта программа также будет работать от имени пользователя root.

Как правило, это то, что вы должны сделать, чтобы редактировать или создавать новое содержимое каталогов, принадлежащих root. Однако...

/sysэто отличается; даже rootне могу напрямую создавать вещи там

Как /procи /devв Ubuntu и других операционных систем , использующих ядро Linux, /sysэто виртуальная файловая система , что она представляет не реальные файлы на жестком диске (или в любом месте).

Короче говоря, /sysэто способ, которым ядро предоставляет информацию о (физических и виртуальных) устройствах.

Некоторые записи в /sysфайловой системе также доступны для записи, и запись в них является способом динамической настройки конфигурации для устройств. (Это не следует путать с /devфайловой системой; запись в записи /dev- это способ отправки данных на устройства. )

Но это все еще должно быть сделано как root. Вместо того, чтобы изменять разрешение /sysили какую-либо его часть, вы должны просто выполнить эти действия от имени пользователя root, sudoкак описано выше.

В этом ответе на Unix.SE объясняется, как это сделать, и даже как разрешить некоторым не-администраторам (которые не могут выполнять большинство действий от имени пользователя root) изменять некоторые /sysнастройки.

Для получения дополнительной информации о том /sys, как работает, см .:

Записи в /sysсоздаются ядром и драйверами; вы не можете просто создать их из командной строки. (Как указано выше, вы можете редактировать некоторые из них как root, но вы, как правило, не можете создавать новые из пространства пользователя, кроме как путем загрузки модулей ядра или установки драйверов или модификации ядра.)

Если вам интересно писать драйверы, смотрите:

Элия ​​Каган
источник
4

Да, /sysэто «специальный» каталог. Из Википедии :

Современные дистрибутивы Linux включают каталог / sys в качестве виртуальной файловой системы (sysfs, сравнимый с / proc, который является procfs), который хранит и позволяет модифицировать устройства, подключенные к системе, тогда как многие традиционные UNIX и Unix-подобные операционные системы используют / sys как символическая ссылка на исходное дерево ядра.

«Сохраняет и позволяет модифицировать устройства, подключенные к системе», очень важно. Тот факт, что /sysвы используете виртуальную файловую систему, смонтированную специально, является причиной того, что вы (и пользователь root) не можете писать в нее. Я хотел бы избежать баловаться с /sys. В Linux, который очень открыт и прозрачен, вещи обычно не меняются по уважительной причине; либо в целях безопасности, либо, в данном случае, потому что есть другой способ достижения вашей цели, который намного менее рискован.

Ричард
источник