Как правильно стирать и использовать CD-RW

Функция PTYв socatможет быть лучшим выбором для сопряжения тяжелых приложений терминала -программно без каких-либо дополнительных функций. См. примеры на странице руководства.

Кроме того, dtachпредоставляетscreen-подобную (многостороннюю -многостороннюю )семантику повторного присоединения для легкого доступа из эмулятора терминала.

0
06.11.2019, 18:04
3 ответа

Попробовав несколько программ, графических интерфейсов и даже переключившись на Windows, я задался вопросом, не связана ли проблема с диском.

Ааааа... так и было. Я просто подошел к другому компьютеру и смог стереть его за 30 секунд.

Не знаю, почему я могу прожечь, но не могу стереть это. Иди разберись.

Тем не менее спасибо @telcoM за усилия.

0
28.01.2020, 02:29

Доступна ли у вас команда lsscsiили вы можете ее установить? Если возможно, запустите lsscsi -gи укажите в списке свой привод CD -RW.

Ваш привод CD -RW, вероятно, имеет имя /dev/sr0, но с ним также будет связано устройство /dev/sg*. Это «универсальное устройство SCSI», которое позволяет отправлять более специализированные команды на привод. Выходные данные lsscsi -gдолжны указывать, какое универсальное устройство SCSI соответствует вашему дисководу CD -RW.

Как только вы узнаете, что ваш дисковод CD -RW доступен, например. /dev/sg1, вы можете попробовать wodim dev=/dev/sg1 --prcap. Если эта команда выводит длинный список функций CD/DVD и поддержку каждой из них вашим приводом, значит, вы нашли правильный параметр dev=для своего привода.

Похоже, некоторые изменения привели к тому, что wodimне удалось автоматически -обнаружить устройства :в моей системе Debian 10, происходит то же самое, но если я укажу /dev/sg*устройство для wodimвручную, работает. Вы можете использовать /etc/wodim.conf, чтобы сделать конкретный параметр устройства параметром по умолчанию для wodim, чтобы вам не пришлось его постоянно вводить.

Монтирование CD -RW в качестве обычной файловой системы с возможностью записи требует пакетной записи, и вы должны использовать /dev/pktcdvd/pktcdvd0вместо обычного /dev/sr0CD-устройства. Однако драйвер pktcdvdбыл помечен разработчиками ядра Linux как устаревший, поскольку, по-видимому, его использует очень мало людей. Драйвер еще не был удален из исходного кода ядра, но после уведомления об устареваниинекоторые дистрибутивы могли удалить его из стандартных конфигураций ядра.

Чтобы стереть (очистить )ваш CDRW с помощью wodim, даже если он выглядит нестираемым:

wodim dev=/dev/sg1 blank=all -force

Чтобы избавиться от необходимости указывать параметр dev=, вы можете отредактировать /etc/wodim.conf, чтобы сделать /dev/sg1устройством по умолчанию, в два этапа:

1. )добавить никнейм "burner" для устройства, добавив эту строку в конец файла:

burner=    /dev/sg1 -1  -1  burnfree

2. )отредактируйте настройку CDR_DEVICEв начале файла, чтобы использовать псевдоним:

#CDR_DEVICE=cdrom  # this line commented out and the next line added
CDR_DEVICE=burner
2
28.01.2020, 02:29

Проблемы с wodim могут иметь разные причины. Основная проблема заключается в том, что Debian создал wodim только для того, чтобы атаковать проект OSS, потому что рассматриваемый пакетировщик ожидал от своих действий более высоких шансов на работу в компании NERO.

В мае 2004 года они добавили в исходный код множество специфичных для Debian ошибок и убрали все тесты на то, запускается ли программа с необходимыми привилегиями. Они сделали это, взяв исходный код cdrecordи изменив его. В результате в базу данных ошибок Debian поступило 50 -100 сообщений об ошибках. Поскольку они не желали исправлять свои ошибки, в результате разрешение на использование имени cdrecordбыло отозвано в августе 2006 года, и они переименовали плохую программу в wodim.

Теперь вам нужно знать, что примерно в 2003 году новичок в программировании (Дуглас Гилберт )добавил ioctl ()в драйвер Linux /dev/sg и не проверял наличие разрешения на запись в /dev/sg в чтобы разрешить использование этого ioctl (). Предыдущий метод был основан на требовании доступа на запись к /dev/sg, который мог быть предоставлен только в том случае, если программа имела привилегии root при открытии /dev/sg *. Это создало большую дыру в безопасности. Благодаря этому изменению любой мог отправить любую команду SCSI на любое устройство и, например. отредактируйте файл passwd таким образом, поскольку по неизвестным причинам любой имеет разрешение на открытие /dev/sg *только для чтения -.

В начале 2004 г.Линус Торвальдс решил не исправлять ошибку Дугласа Гилберта в драйвере /dev/sg, а ввести сложную конструкцию безопасности, которая запрещает многие команды SCSI, когда вы не являетесь пользователем root при вызове ioctl(scgp->fd, SG_IO, &sg_io);, но разрешает некоторые команды для не -пользователей root.

Теперь вам нужно знать, что ранее правило было простым для написания безопасной программы :быть пользователем root при открытии /dev/sg *для получения разрешения на запись, затем отказаться от привилегий root и делать свою работу.

Вам также необходимо знать, что cdrecord отправляет множество команд SCSI в целях тестирования, чтобы классифицировать функции текущего диска для получения наилучших функций. Но после странного изменения от Линуса Торвальдса большинство этих команд запрещены, если у вас нет привилегий суперпользователя. cdrecordне может выбрать между командой SCSI, которая завершилась неудачно, потому что диск не поддерживает ее, и командой SCSI, которая завершилась ошибкой, потому что ядро ​​не пропустило ее.

wodimне запускается от имени пользователя root и поэтому неправильно обрабатывает диски

Но хотя cdrecordдобавил поддержку странного решения Линуса Торвальдса и переключился на root для каждой отправляемой команды SCSI, wodimтак и не получил поддержку этого изменения Linux. Если вы запускаете его как root, это угроза безопасности.

Я даже считаю, что они оставили старый код, который отказывался от привилегий суперпользователя после открытия /dev/sg *устройств и, таким образом, по-прежнему не мог запускать команды SCSI в нужном привилегированном режиме.

Если у вас есть проблемы, которые вы описываете, это может быть вызвано двумя причинами:

  • программа не использует правильные команды SCSI, необходимые для привода. Это относится кwodim

  • Приводу не нравится носитель. Если это так, то ваша попытка стереть носитель завершится с той же ошибкой с cdrecord.

Таким образом, есть только один способ выяснить это :получить недавнюю установку cdrtools, например.скачав последний архив schilytoolsиз http://sourceforge.net/projects/schilytools/files, скомпилируйте и установите его. Убедитесь, что вы установили необходимые привилегии для cdrecord, cdda2wav, readcd.

Это можно сделать с помощью:

chmod 4755 cdrecord cdda2wav readcd
chown root cdrecord cdda2wav readcd

Или с

setcap cap_sys_resource,cap_dac_override,cap_sys_admin,cap_sys_nice,cap_net_bind_service,cap_ipc_lock,cap_sys_rawio+ep cdrecord 
setcap cap_dac_override,cap_sys_admin,cap_sys_nice,cap_net_bind_service,cap_sys_rawio+ep cdda2wav
setcap cap_dac_override,cap_sys_admin,cap_net_bind_service,cap_sys_rawio+ep readcd

Последний использует детализированные привилегии, представленные в 2013 году в Linux, и полностью лишен root -.

Наконец, всегда используйте cdrecordвместо wodim(. То же самое относится и к другим программам из набора ), так как возможности оригинального программного обеспечения увеличились более чем вдвое с тех пор, как Debian заморозил их код в конце 2004 года. Все совместимы с OSS. Тем временем дистрибутивы Linux вернулись к исходному программному обеспечению.

0
28.01.2020, 02:29

Теги

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