Вариант «пользователь» работает для монтирования, а не для umount

Я экспериментирую с вариантами установки для программы, которую я пишу. Я запускаю Linux Mageia 2.

Я добавил следующую строку в /etc/fstab

 /dev/sr0 /mem auto user,noauto, 0 0 

и я удалил все остальные записи в отношении /dev/sr0 который является устройством для моего DVD-привода.

Затем, действуя как обычный пользователь, я могу успешно

 $ mount /dev/sr0 

но затем я получаю сообщение об ошибке («Только root can …») для

 $ umount /dev/sr0 

Конечно, устройство не занято: я ничего не делаю между mount и umount.

Добавлено после решения : если вас интересует только решение этой проблемы, вы можете пропустить оставшуюся часть вопроса и перейти непосредственно к принятому ответу. Остальная часть вопроса касается моей работы, чтобы найти решение или лучше документировать проблему. Однако в самом конце вопроса есть посмертный раздел, который дополняет ответ своими собственными замечаниями.

Собственность на файлы:

 $ ls -ld /mem /dev/sr0 brw-rw----+ 1 root cdrom 11, 0 mai 14 01:01 /dev/sr0 drwxr-xr-x 12 root root 4096 janv. 21 22:34 /mem/ 

И я являюсь членом группы "cdrom"

У меня такая же проблема при установке образа файловой системы с помощью устройства loop.

Тем не менее, все отлично работает, когда я заменяю «пользователь» опцией «пользователи», что, по-видимому, указывает на то, что система путается, когда помнят, кто монтировал файловую систему.

Первый ответ Рахула Патила не дает дальнейшего понимания, поскольку он по сути эквивалентен тому, что я использовал, если мое понимание процедуры удаления правильное. Однако это заставило меня задуматься об этом процессе (отсюда и одно преимущество) и получить более подробную информацию. Это было еще больше подтверждено комментарием Хауке Лиджинга. Как я понимаю, в общем случае команда umount принимает свой аргумент (устройство или точку монтирования) и пытается идентифицировать соответствующие записи в /etc/mtab а затем проверяет с помощью /etc/fstab , может ли он выполнить запрос.

Согласно странице man для mount (8) имя монтирующего пользователя [должно быть] записано в mtab, чтобы он мог снова отключить файловую систему. Когда я проверяю /etc/mtab после монтажа, нет такой информации, которую я могу найти. Я не знаю, как он должен храниться и как он должен выглядеть.

Следовательно, проблема действительно связана с mount а не с umount .

Чтобы быть абсолютно уверенным, что проблема заключается не в том, что для монтажа используется другая запись /etc/fstab (что объясняет незнание опции «пользователь»), я удалял все другие записи в /etc/fstab , сохраняя только одну строку в начало моего вопроса. Затем я повторил последовательность mount-umount, к сожалению, с тем же результатом.

 $ grep sr0 /etc/mtab /dev/sr0 /mem udf ro,nosuid,nodev,noexec,relatime,utf8 0 0 $ mount | grep sr0 /dev/sr0 on /mem type udf (ro,nosuid,nodev,noexec,relatime,utf8) 

Hauke ​​Laging попросил ls -l /etc/mtab , который, как я думал, был ошибкой и что он действительно спрашивал cat /etc/mtab . Но я все равно это сделал …

 $ ls -l /etc/mtab lrwxrwxrwx 1 root root 12 juin 25 2012 /etc/mtab -> /proc/mounts $ ls -l /proc/mounts lrwxrwxrwx 1 root root 11 mai 19 13:21 /proc/mounts -> self/mounts $ ls -l /proc/self/mounts -r--r--r-- 1 myself mygroup 0 mai 19 13:22 /proc/self/mounts 

Эта последняя информация меня удивила. Хотя я по сути единственный пользователь на этом компьютере, я не вижу причин, почему этот файл должен принадлежать мне или любому другому пользователю, кроме самого root. Большое спасибо Хауке, но почему вы задали этот вопрос?

На самом деле файл не принадлежит мне. Думаю, это должен быть виртуальный файл. Я повторил запрос как пользователь «друг», а затем как «root»:

 $ ls -l /proc/self/mounts -r--r--r-- 1 friend users 0 mai 19 14:10 /proc/self/mounts # ls -l /proc/self/mounts -r--r--r-- 1 root root 0 mai 19 14:10 /proc/self/mounts 

Я хотел бы приветствовать любое предложение относительно того, что может быть проблемой, или для экспериментов, чтобы попытаться.

благодаря

Посмертное : вот некоторые заключительные замечания после того, как проблема была решена Хауке Лиджинг.

Я следовал в Интернете, руководствуясь объяснением Хаука.

По-видимому, это старый вопрос. Это объясняется в старом документе с октября 2000 года , в котором упоминаются некоторые проблемы с другими вариантами, но не user . Надеемся, что некоторые из проблем надежности ядра теперь исправлены.

Проблема кратко упоминается в разделе «Ошибка» на странице руководства пользователя, но не достаточно подробно, особенно в отношении альтернативных настроек и влияния на параметры.

Тем не менее, потерянная на этой странице очень длинная страница представляет собой следующую информацию:

 When the proc filesystem is mounted (say at /proc), the files /etc/mtab and /proc/mounts have very similar contents. **The former has somewhat more information, such as the mount options used**, but is not necessarily up-to-date (cf. the -n option below). It is possible to replace /etc/mtab by a symbolic link to /proc/mounts, and especially when you have very large numbers of mounts things will be much faster with that symlink, but **some information is lost that way, and in particular using the "user" option will fail**. 

Разумеется, было бы полезно узнать об этом, где описывается вариант user , который является первым, на котором я смотрел.

2 Solutions collect form web for “Вариант «пользователь» работает для монтирования, а не для umount”

Проблема в том, что ваш /etc/mtab – это не файл, а символическая ссылка на /proc/mounts . У этого есть преимущества, но также и недостаток, который user не работает. Вы уже правильно поняли причину этого: «система запуталась, когда вспомнила, кто монтировал файловую систему». Эта информация написана в mtab , но не может быть написана там в вашем случае. Ядро не заботится (даже не знает) о пользовательских mounts (это функция пользовательского пространства). Таким образом, эта информация не содержится в /proc/mounts .

Сделай это:

 cd /etc cp mtab mtab.file rm mtab mv mtab.file mtab 

umount поскольку пользователь должен работать после того, как вы снова установили громкость.

вместо имени устройства ( /dev/sr0 ) попробуйте использовать точку монтирования (в вашем случае точка монтирования есть /mem )

Так что просто используйте для mount:

mount /mem

Для использования для размонтирования:

umount /mem

Я тестировал и работаю на своей стороне, ОС – CentOS 5.8

  • не может монтировать W95 FAT32 (LBA) тип раздела в ArchLinux
  • Как смонтировать / отключить SD-карту, которая была автоматически установлена ​​при загрузке?
  • Внешний жесткий диск NTFS, установленный как root, может изменять, но не добавлять файл
  • Что такое «петлевое устройство» при монтаже?
  • Установка и размонтирование в том же сценарии оболочки приводит к ошибке
  • Невозможно использовать USB через DD-WRT на Buffalo WZR-HP-G300NH2
  • Возможно ли монтировать файловые системы Windows без использования учетной записи root?
  • Исправлена ​​точка монтирования внешнего usb hdd
  • Список точек монтирования внешних устройств хранения, таких как USB-брелки и внешние диски SATA, из кли
  • Изменение размера / повторная установка / dev / shm не работает
  • Atime каталога NFS не обновляется
  • Interesting Posts

    X после обновления до Fedora 23

    разделенный на «бесплатный» вариант, приводит к недействительному токену в некоторых случаях

    Исходный код скорости последовательного порта

    Как показать сетевые адаптеры со своей статистикой?

    Выполнение несколько раз одной и той же команды с несколькими аргументами после трубы

    как загрузиться / перезагрузиться в подробном режиме?

    Установите липкий бит по умолчанию для новых каталогов через ACL?

    Доступна новая версия файла конфигурации / etc / default / grub, но версия, установленная в настоящее время, была локально изменена

    Mediastream не действует

    Конкатенация выбранных расширений для вывода

    как я могу заставить hdd дать плохие данные сектора URE / плохого сектора?

    сохранение результата другой команды

    less не показывает ожидаемый результат после поиска сценария в .cshrc

    как удалить oracle 11g xe из centos 7?

    определить жесткий диск перед установкой

    Linux и Unix - лучшая ОС в мире.