Откуда `/dev/pts/ptmx`? [дубликат]

  1. Как «безопасно» удалять файлы
  2. Как решить вашу проблему «Отказано в доступе»

1. Как «безопасно» удалять файлы

Современные версии GNU rm защитит вас от случайного удаления всех / , но вы все равно можете случайно удалить все /home... Самый безопасный способ, который я могу придумать, это сначала cd в каталог, используйте ls для проверки правильности, затем удалите его содержимое, затем cd .. и rmdir proc. rmdir очень безопасен, поскольку удаляет только пустые каталоги.

Чтобы удалить все в текущем каталоге, используйте rm -r -- *

Вероятно, "безопасно" забыть -- в rm команда. Однако это может работать не так, как ожидалось, например, если есть файл с именем -i.

Вместо этого вы можете использовать графический файловый менеджер, который обычно безопаснее, чем rm. Вы можете переместить файл(ы) в «Корзину». Это оставит вам возможность отменить действие, пока вы не очистите всю корзину или не удалите файлы из корзины.Я предпочитаю использовать это, когда это возможно. Это не всегда работает хорошо. Мне удалось разбить Gnome Files во время тестирования :-).

2. Как решить вашу проблему "Отказано в доступе"

Ваша проблема в том, что некоторые подкаталоги помечены как "только для чтения". (И вы не работаете как root, который игнорирует эти маркировки).

Вы можете разрешить запись в текущий каталог и все, что внутри него, используя chmod u+w -R . Затем вы сможете удалить его.

В некоторых случаях использование графического файлового менеджера для удаления папки автоматически изменит права доступа. Или вы можете использовать файловый менеджер для изменения разрешений вручную. Если вы используете файлы Gnome: щелкните правой кнопкой мыши -> Свойства -> Разрешения. Рядом с Владелец установите «Создавать и удалять файлы». Затем повторите то же самое в разделе «Изменить разрешение для вложенных файлов».

0
06.01.2019, 16:09
1 ответ

Старый механизм AT&T System 5 для псевдо-терминальных ведомых устройств заключался в том, что они были обычными постоянными узлами символьных устройств под /dev. Было мультиплексорное ведущее устройство по адресу /dev/ptmx. Старый механизм 4.3BSD для псевдотерминальных устройств -имел параллельные пары обычных постоянных узлов главного и подчиненного устройств под /dev. Это были специальные узлы устройств в обычной дисковой файловой системе.

В OpenBSD кое-что из этого верно и по сей день. /devпо-прежнему является дисковым томом, а ведомые устройства по-прежнему реальны на -дисковых узлах. Однако они создаются по запросу. Ядро внутренне выдает соответствующие вызовы для создания новых узлов устройств, когда выдается PTMGETуправление вводом-выводом на устройстве /dev/ptm.

Во FreeBSD все это по-прежнему верно. Даже мультиплексора больше нет. /devвовсе не том диска. Это файловая система devfs. Подчиненные устройства появляются в файловой системе devfsв своем каталоге pts/в ответ на системный вызов posix_openpt(), который является прямым системным вызовом, а не обернутым ioctl()дескриптором открытого файла для некоторого «мультиплексорного» устройства.

Некоторое время в Linux псевдо-терминальные ведомые устройства были постоянными узлами устройств. То, что вы видите, это «новая» devptsфайловая система (, где «новая» означает введенную несколько лет назад, теперь )в сочетании с devtmpfs. Этот почти позволяет делать то же самое, что и FreeBSD с devfs.

Но есть некоторые отличия. В частности, есть еще устройство «мультиплексор».

  • В старой "новой" devptsсистемеэто было устройство ptmxв другой файловой системе devtmpfs, причем файловая система devptsсодержала только автоматически созданные/уничтоженные файлы подчиненных устройств. Обычно это была установка /dev/ptmxи сопутствующее крепление devptsна /dev/pts.
  • Но разработчики Linux хотели иметь несколько полностью независимых экземпляров файловой системы devptsдля контейнеров и т.п., и оказалось довольно сложно синхронизировать (правильные )два файловых систем, когда было многоdevtmpfsи devptsфайловых систем. Таким образом, в более новой "новой" devptsсистеме все устройства, мультиплексор и подчиненное устройство, находятся в одной файловой системе.

    В целях обратной совместимости по умолчанию новый узел ptmxбыл недоступен, пока не был установлен новый параметр монтирования ptmxmode. В режиме обратной совместимости все еще можно было запускать что-то старым способом с одним экземпляром -, и это делалось по умолчанию, если только не использовался явный параметр newinstanceпри монтировании devpts.

  • В еще более новом «новом» devpts(, который существует с 2016 года )устройство мультиплексора экземпляра -в файловой системе devptsтеперь является первичным мультиплексором, и ptmxв devtmpfs— это прокладка, предоставляемая ядром, которое пытается имитировать символическую ссылку, монтирование привязки или старую простую реальную символическую ссылку на pts/ptmx. Способ с несколькими экземплярами -теперь является способом только .

Дополнительная литература

16
28.01.2020, 02:13

Теги

Похожие вопросы