Невозможно удалить файлы для мусора в подключенной файловой системе

Я пытаюсь настроить общий домашний каталог для двух установок Linux, и поэтому я использую bindmounts. Мой пользователь назван dbz а его домашний каталог – /home/dbz . У меня также есть общий каталог /home/shared где хранятся мои общие файлы (эта папка также принадлежит пользователю dbz ).

Я монтирую другие каталоги из этого общего каталога в свой домашний каталог, используя привязку:

  • Две папки, разделяющие один том. Что это значит?
  • Linux sloppy mount
  • монтировать рамы как пользователь
  • Точка монтирования для конкретного USB-порта
  • Как обеспечить, чтобы файл образа диска NTFS не записывался при установке?
  • Установите устройство в качестве другого пользователя
  •  mount -B /home/shared/work /home/dbz/work 

    Это решение решает мои потребности, и единственная проблема, которая у меня есть, и я не знаю, как ее решить – когда я пытаюсь удалить файл или каталог из смонтированного каталога, я не могу удалить его для мусора, возможно только постоянное удаление. Например:

    • удаление файла /home/shared/work/test.txt : ОК, поскольку удаление происходит прямо из каталога, в котором находится файл test.txt ;
    • удаление файла /home/dbz/work/test.txt : НЕ МОЖЕТ, потому что … кстати, потому что что? У bind-mounts есть некоторые ограничения на удаление файлов?

    Наконец , проблема была отправлена ​​на bugzilla.kernel.org

  • Установка Ext3 в Linux разных пользователей
  • подключить диск usb через udisksctl, необходимо получить привилегии root
  • Для чего нужны эти команды?
  • возможные точки для конфигурирования форвардеров BIND-DNS
  • Изменение размера / повторная установка / dev / shm не работает
  • Установка SMB 2.0 по умолчанию для операций монтирования
  • 3 Solutions collect form web for “Невозможно удалить файлы для мусора в подключенной файловой системе”

    Это проблема ядра Linux. Он не смотрит на настоящий супер-блок исходной и целевой файловой систем:

     17926 rename("d1/foo", "d2/foo") = -1 EXDEV (Invalid cross-device link) 

    Похоже, проблема в do_rename() ( fs/namei.c ):

      error = -EXDEV; if (oldnd.mnt != newnd.mnt) goto exit2; 

    *вздох*

    Чтобы создать каталог мусора, вы должны иметь возможность сделать .Trash_<uid> на точке монтирования (по крайней мере, на Ubuntu при удалении из nautilus, ваш дистрибутив может использовать другой каталог). Если этот каталог не может быть создан, потому что родительский dbz не может быть dbz , вы не сможете выполнить резервное копирование.

    Не обязательно иметь родительский каталог, который можно .Trash_<uid> , достаточно создать .Trash_<uid> как root, а затем dbz его на dbz .

    Мне несколько легче проверить, что происходит с созданием файла мусора, используя gvfs-trash , которая фактически дает ошибку, если файл не может быть поврежден. Используйте что-то вроде:

     touch /home/dbz/work/test.txt strace gvfs-trash /home/dbz/work/test.txt 2>&1 | grep .Trash | grep mkdir 

    чтобы увидеть, какую директорию он пытается сделать.

    У вас есть символическая ссылка для любого из родительских каталогов каталога Trash в другую файловую систему. У меня была ~/.local/share/Trash soft, связанная с каталогом в другой файловой системе, что привело к этой ошибке. Конечно, он все равно должен работать, но работать – это держать корзину в одной и той же файловой системе.

    Кроме того, я обнаружил, что trash Ubuntu из пакета trash-cli работает с этой символической gvfs-trash , тогда как gvfs-trash который используется приложениями gnome, не работает.

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