Victor Wagner <[email protected]> writes: > Вылезла у меня тут проблемка - при попытке перезаписать файл, например > при обновлении пакета, выдается "Device or resource busy". Файл, с > которым возникает проблема, может быть, например /usr/bin/perl
firejail или что-то аналогичное? С ядром из jessie, mount --bind в *отдельном* mount namespace может приводить к невозможности переименовать файлы и в оригинальном namespace: $ sudo sysctl -w kernel.unprivileged_userns_clone=1 $ ls -l /bin/lesspipe -rwxr-xr-x 1 root root 7765 Oct 8 13:41 /bin/lesspipe $ unshare -rm sh -c 'mount --bind /dev/null /bin/lesspipe; ls -l /bin/lesspipe; sleep 10m &' crw-rw-rw- 1 nobody nogroup 1, 3 Mar 25 2016 /bin/lesspipe $ ls -l /bin/lesspipe -rwxr-xr-x 1 root root 7765 Oct 8 13:41 /bin/lesspipe $ sudo mv /bin/lesspipe /bin/foobarbaz mv: cannot move ‘/bin/lesspipe’ to ‘/bin/foobarbaz’: Device or resource busy Разумеется, это баг, и с очевидными security implication (DoS), в upstream он был пофишкен, а в jessie забили :-\ > Когда это с базой keepassx стало совсем неудобно. > > > При этом делать echo в этот файл можно. Нельзя именно его > переименовывать. Но что dpkg, что keepassx, при записи нового файла > сначала переименовывает старый. > > Что характерно, после перезагрузки проблема сохраняется. То есть это не > какой-то процесс захватывает файл. > > Единственный известный мне способ решения проблемы - свалить систему в > single user mode. В single user-е проблемные файлы становится возможным > переименовать или удалить. Или просто (если речь идет о файлах под > управлением dpkg) apt-get install -f сказать. > > Вопрос в том, куда копать. > jessie, systemd, файловая система ext4 > /dev/sda8 on /home type ext4 rw,relatime,data=ordered > никаких securelevel-ов, selinux-ов и прочее не включено. > На машине имеется пачка lxc-контейнеров причем на том же разделе. > Не думаю, конечно что это в ихних cgroups-ах. Но на всякий случай > отмечаю, что оно есть.

