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

48

Я нахожусь в процессе миграции машины с RHEL 4 на 5. Вместо фактического обновления мы создали новую виртуальную машину (обе машины находятся в облаке), и я нахожусь в процессе копирования данных между ними.

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

-rw-------  1 2003 2003  219 jan 11 14:22 .bash_history

Этот файл находится внутри / home / USER /, где USER - это учетная запись парня, который создал машину. У него нет учетной записи на старой машине, поэтому я пытаюсь удалить его домашнюю папку, чтобы новая машина соответствовала старой, но я получаю следующую ошибку:

rm: ne peut enlever `.bash_history': Opération non permise

(перевод с французского: невозможно удалить XXX, операция не разрешена)

Я попытался использовать следующую команду, но это не имеет значения:

chattr -i .bash_history

Является ли единственный выбор для создания пользователя с ID 2003, или есть другой способ обойти это?


редактировать

Я пытался использовать rm -f, и я получаю ту же ошибку. Я получаю такую ​​же ошибку при chmod 777первом использовании .

Мне удалось chownв папку, содержащую файл, который я пытаюсь удалить, так что это:

drwx------ 2 root root 1024 jan 24 15:58 USER

Edit2

Запуск lsattrкоманды, предложенный Ангусом, дал следующий вывод:

-----a------- USER/.bash_history
------------- USER/..
------------- USER/.

Файл помечен как только для добавления - при изменении этого флага, chattr -a .bash_historyя смог удалить файл.

Богатый
источник

Ответы:

55

Проверьте разрешения каталога . Чтобы удалить файл внутри него, он должен быть записан вами

chmod ugo+w .

и не является неизменным или только для добавления:

chattr -i -a .

Проверьте с ls -laи lsattr -a.

ангус
источник
спасибо .. Мне пришлось запустить это на именованных * файлах, которые не
очищались
К сожалению, потому что /vendor/laracasts/generators/.git/objects/pack/, когда я бегу chattr -i -a ., я получаю chattr: Inappropriate ioctl for device while reading flags on ., и я не могу rmдосадный .idxфайл, который оставил Composer (потому что «Операция не разрешена»).
Райан
Ах, одним из обходных путей для меня было выйти из моего Laravel Homestead Vagrant VirtualBox обратно в Windows 10 (все еще с помощью Git Bash) и rmфайлы оттуда. Затем composer updateсмог завершить.
Райан
chattr -i -aработал.
xji
Даже после использования Linux в течение почти 10 лет я продолжаю изучать новые вещи. Никогда не слышал об неизменном атрибуте раньше!
Marlar
9

У меня была похожая проблема, но я пробовал оба разрешения и chattr ранее безрезультатно. Корень в Терминале. CD в ​​каталог.

Однако для меня работало проверить права доступа к каталогу, в котором находился проблемный файл - если все в порядке, перейдите к:

chmod ugo+w filename

это не удалось - тогда:

chattr -i -a filename 

который был принят - тогда

chmod ugo+w 

который был принят

rm filename

и это ушло

Fedora 25 на рабочей станции hp.

Кит Манн
источник
«chmod ugo + w filename» полностью
помогло
1

'sudo' может запустить команду 'rm', используя ту же группу пользователей.

ПРИМЕЧАНИЕ : не уверен, будет ли это работать для идентификаторов, как у вас.

Пример:

ls /path/to/dir_being_deleted
  drwxrwxrwx 2 nfsnobody nfsnobody   4096 Mar  8 06:55 .
  drwxrwxrwx 7 nfsnobody nfsnobody   4096 Mar  8 06:57 ..
  -rwxrwxrwx 1 nfsnobody nfsnobody      0 Mar  8 06:55 filename.txt

sudo -u nfsnobody -g nfsnobody rm -rf /path/to/dir_being_deleted
awltux
источник