Как удалить смонтированный каталог томов Docker на хосте без прав root

У меня следующая проблема.

Я непреднамеренно смонтировал том Docker на хост-компьютере, на котором у меня нет прав root. Теперь я получаю сообщение об ошибке «Отказано в доступе» при попытке удалить каталог, потому что контейнер Docker был создан с пользователем root по умолчанию.

x@y:~/app/xy$ ls -ld data
drwxr-xr-x 4 root root 4096 Apr  7 16:26 data
x@y:~/app/xy$ rm -rf data
rm: cannot remove 'data/data/binlog.000005': Permission denied
rm: cannot remove 'data/data/undo_002': Permission denied
rm: cannot remove 'data/data/server-key.pem': Permission denied
rm: cannot remove 'data/data/ibdata1': Permission denied
rm: cannot remove 'data/data/client-cert.pem': Permission denied
...
rm: cannot remove 'data/dump/client-key.pem': Permission denied
rm: cannot remove 'data/dump/ca.pem': Permission denied
x@y:~/app/xy$

Информация: этот контейнер Docker был удален.

Я искал решения, но пока не нашел.

Есть ли у вас какие-либо предложения, как я могу решить мою проблему?

С уважением, Мартин

Технически, если вы можете запускать контейнер от имени root, у вас также должны быть разрешения на запуск команд от имени root с помощью sudo. Бессмысленно не предоставлять привилегии суперпользователя, пока вы можете использовать контейнер для взломать в обход этого ограничения.

The Fool 09.04.2022 13:40

@TheFool Видимо, это возможно.

kerschi 09.04.2022 13:53
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
2
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Зайдите в родительский каталог. Запустите контейнер от имени пользователя root и удалите каталог

cd ~/app/xy
docker run --rm -v $(pwd):/app -w /app alpine rm -rf data

См. это, если вы хотите убедить кого-то, что они также могут дать вам root на хосте: https://docs.docker.com/engine/security/#docker-daemon-attack-surface. Конечно, это может иметь неприятные последствия, и они лишат вас привилегий докера :)

Другие вопросы по теме