[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Странная проблема с перименованием файла



Victor Wagner <vitus@wagner.pp.ru> writes:

> On Sat, 12 Nov 2016 02:27:51 +0300
> yumkam+debian@gmail.com (Yuriy M. Kaminskiy) wrote:
>
>> Victor Wagner <v.wagner@postgrespro.ru> writes:
>> 
>> > Вылезла у меня тут проблемка - при попытке перезаписать файл,
>> > например при обновлении пакета, выдается "Device or resource busy".
>> > Файл, с которым возникает проблема, может быть,
>> > например /usr/bin/perl  
>> 
>> firejail или что-то аналогичное? С ядром из jessie, mount --bind в
>> *отдельном* mount namespace может приводить к невозможности
>> переименовать файлы и в оригинальном namespace:
>
> firejail есть. Но именно это место туда не монтируется. И в
> lxc-контейнеры не монтируется. Поскольку на мой взгляд  единственное,
> зачем нужен firejail, это чтобы не позволить глюкавой проприетарной
> хреновине добраться до моих данных. Поэтому уж база keepass точно будет
> от него подальше.

Чтобы уменьшить attack surface, firejail убирает из /bin "всякое
ненужное", монтируя в свежеотфорканном mount namespace "недоступный файл"
поверх всего-подряд (в частности, gcc, perl, python, и так далее,
см. /etc/firejail/disable-devel.inc); или, наоборот, собирает "новый
/bin", состоящий только из нужных бинарников (при помощи ровно того же
mount --bind).

(IMO, это из раздела одевания презерватива на огурец, но...)

(Ну и тоже самое с кучей файлов в $HOME, с теми же последствиями:
при запущенном firejail [и на ядре из jessie], сделать mv ~/.bashrc{,~}
тоже не получится [а вот это уже часть необходимой защиты, без которой
не обойтись])

>> $ 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 забили :-\
>
> В смысле, имеет смысл поставить ядро из бэкпортов?

Да. Там оно пофикшено.
Учитывая близкий релиз stretch, это должно быть даже не слишком
череповато. (Наверно.)


Reply to: