Невозможно удалить операция не позволена ubuntu

Обновлено: 03.07.2024

В этой статье мы объясним, как удалять каталоги в Linux с помощью команд rmdir , rm и find .

Подготовка

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

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

В большинстве файловых систем Linux для удаления каталога требуется разрешение на запись в каталог и его содержимое. В противном случае вы получите ошибку «Операция запрещена».

Имена каталогов с пробелами должны быть экранированы обратной косой чертой ( / ).

Удаление каталогов с помощью rmdir

Чтобы удалить каталог с помощью rmdir , введите команду, а затем имя каталога, который вы хотите удалить. Например, чтобы удалить каталог с именем dir1 , введите:

Если каталог не пустой, вы получите следующую ошибку:

В этом случае вам нужно будет использовать команду rm или вручную удалить содержимое каталога, прежде чем вы сможете его удалить.

Удаление каталогов с помощью rm

По умолчанию при использовании без каких-либо параметров rm не удаляет каталоги. Чтобы удалить пустой каталог, используйте параметр -d ( --dir ), а для удаления непустого каталога и всего его содержимого используйте параметр -r ( --recursive или -R ).

Например, чтобы удалить каталог с именем dir1 вместе со всем его содержимым, введите:

Если каталог или файл в каталоге защищен от записи, вам будет предложено подтвердить удаление. Чтобы удалить каталог без запроса, используйте параметр -f :

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

Параметр -i указывает rm запрашивать подтверждение удаления каждого подкаталога и файла. Если в каталоге много файлов, это может немного раздражать, поэтому вы можете рассмотреть возможность использования опции -I которая предложит вам только один раз, прежде чем продолжить удаление.

Чтобы удалить каталог, введите y и нажмите Enter .

Вы также можете использовать обычные расширения для сопоставления и удаления нескольких каталогов. Например, чтобы удалить все каталоги первого уровня в текущем каталоге, который заканчивается на _bak , вы должны использовать следующую команду:

Использование регулярных расширений при удалении каталогов может быть рискованным. Рекомендуется сначала перечислить каталоги с помощью команды ls чтобы вы могли видеть, какие каталоги будут удалены, прежде чем запускать команду rm .

Удаление каталогов с помощью find

Давайте проанализируем команду выше:

Удаление всех пустых каталогов

Чтобы удалить все пустые каталоги в дереве каталогов, выполните:

Вот объяснение используемых опций:

Используйте параметр -delete с особой осторожностью. Командная строка поиска оценивается как выражение, и если вы сначала добавите параметр -delete , команда удалит все, что находится ниже указанных вами начальных точек.

Всегда сначала проверяйте команду без опции -delete и используйте -delete в качестве последней опции.

/ bin / rm: слишком длинный список аргументов

Есть несколько разных решений этой проблемы. Например, вы можете cd в каталог и вручную или с помощью цикла для удаления Подкаталогов один за другим.

Выводы

С помощью rm и find вы можете быстро и эффективно удалять каталоги по различным критериям.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.


Дистр/система-то какая? В BSD есть "супер" флаг у файлов.


Пробовал уже, то же самое.


ps: может папка bin только для чтения?


Проверил на соседнем бинарнике — нормально удалился.

gatsu ★ ( 22.02.13 20:43:11 )
Последнее исправление: gatsu 22.02.13 20:43:41 (всего исправлений: 1)


Стим запущен? Может flock делает на файле или типо того?

//me не специалист, просто предполагаю



cast alpha4

Steam не запущен.

Пакет изначально устаналивался из AUR:

Потом приплыло обновление из комьюнити-репозитория:

После чего я снёс проблемный пакет, а файл так и остался.

gatsu ★ ( 22.02.13 20:54:20 )
Последнее исправление: gatsu 22.02.13 20:57:11 (всего исправлений: 2)


Вон оно че. У вас в стиме можно так?!

chmod 775 /usr/bin/steam ; rm -f /usr/bin/steam


Спасибо за найденное решение :)

Выставление прав доступа тоже не было позволено.

Что-то я не понял, как они это сделали?


А тут не понимать надо, а знать.

A file with the `i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

зы: я тоже не знал :)


У меня похожая проблема. chattr пишет chattr: Неприменимый к данному устройству ioctl while reading flags on brightness


А к чему ты пытаешься его применить? Почитай man там много зависит от типа fs и опций монтирования.


путь /sys/class/backlight/acpi_video0/brightness. Файловая система ext4. В файле нужно изменить значение, а он даже под рутом не редактируется/удаляется/перезаписывается.


У меня в /sys файловая система sysfs.


Я делал только один раздел под ОС, не монтируя boot, home и прочее в разные разделы. Или он в любом случае будет sysfs?

Неужели его (Файл) никак не изменить?


бгг. RTFM про chattr

такое иногда ещё в /tmp бывает на некоторых дистрах с разными прикольными флажками - ну типа, читать низзя, типа, чукчка не читатель, чукча - писатель. в ASPLinux (не к ночи помянут!) точно такое было.


Не подскажете все таки как изменить права и возможно ли это?


тут жеж уже напейсали:

chattr -i FILE тама кстате ещё флаги есть, забавно ещё a поставить.:-)


chattr: Неприменимый к данному устройству ioctl while reading flags on /sys/class/backlight/acpi_video0/brightness


дык на /sys не будет работать. на /proc ЕМНИП - тоже.


chattr: Неприменимый к данному устройству ioctl while reading flags on /sys/class/backlight/acpi_video0/brightness

это потому, что /sys/ НЕ является нормальной ФС. И файлы там тоже особые. Ты хоть видишь, ЧТО ты удаляешь? Как ты представляешь себе УДАЛЕНИЕ ЯРКОСТИ МОНИТОРА.

Если уж хочешь удалить, снеси дрова(модуль, ядро), и перезагрузись. Удалится.


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


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



$ su -
Пароль:
[root@aquila

Здравствуй, дорогой читатель! Наверняка у тебя есть такие файлы с данными, потеря которых абсолютно нежелательна и ты хотел бы защитить такие файлы от случайного удаления. Особенно это актуально для тех кто только осваивает систему Ubuntu и много экспериментирует с терминалом и различными утилитами и командами. Конечно можно воспользоваться командой chmod, чтобы установить права на изменение файла только определенным пользователям, но это не спасет от случайного удаления файла от имени суперпользователя.

Для файловых систем семейства ext* (ext2, 3, 4) существует программный пакет e2fsprogs в состав которого входит утилита chattr, которая позволяет управлять атрибутами файлов. И использование данной утилиты поможет сделать файл действительно защищенным от удаления либо перезаписи данных, ведь удалить или изменить его не сможет даже суперпользователь.

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

Создадим пустой файл:

Теперь попробуем удалить файл:

Ответ в терминале:

rm: невозможно удалить './file.ext': Операция не позволена

Попробуем удалить файл от имени суперпользователя:

Ответ все тот-же:

rm: невозможно удалить './file.ext': Операция не позволена
Также, если попробовать открыть файл в любом редакторе, при попытке его сохранить мы получим отказ:


Для того, чтобы снова разрешить изменение файла нужно снять поставленный атрибут:

Таким образом можно защитить не только файл, но и целый каталог вместе со всеми вложенными в него файлами:
$ mkdir ./test
$ touch ./test/file.ext
$ sudo chattr +i ./test/
$ sudo rm ./test/file.ext
rm: невозможно удалить './test/file.ext': Операция не позволена

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

Новые пользователи довольно часто сталкиваются с такой ошибкой, как ошибка отказано в доступе Linux. Если вы только что перешли с Windows, то можете еще не знать всех особенностей операционной системы Linux и почему возникает такая проблема.

В этой статье мы рассмотрим причины ошибки access denied linux, а также как ее обойти.

Ошибка отказано в доступе Linux

Наиболее часто такая ошибка встречается, в таких случаях:

  • Вы пытаетесь выполнить команду в терминале;
  • Вы пытаетесь примонтировать внешний носитель с помощью файлового менеджера;
  • Вы пытаетесь запустить системный сервис и находите такую ошибку в логе.

В операционной системе Linux действует сложная система полномочий. Настройки доступа для каждого файла настраиваются тремя параметрами - чтение, запись и выполнение. Эти параметры устанавливаются для трех категорий - владелец файла, группа файла и все остальные пользователи.

Если вы попытаетесь получить доступ, например, открыть для чтения файл, к которому вам доступ не разрешен, то вы получите такую ошибку. А учитывая что все устройства, сокеты, и другие системные объекты - это тоже файлы, то вы будете получать такую ошибку всегда, когда попытаетесь сделать то, что вам не позволено. Самый простой способ обойти такой запрет - это выполнять нужную команду от имени суперпользователя.

Многие программы проверяют после запуска от какого пользователя они запущены и говорят, что их нужно запускать от имени суперпользователя, но так ведут себя не все. Например, команда ls вернет ошибку отказано в доступе linux если вы попытаетесь посмотреть содержимое каталога суперпользователя:


Но эта же команда нормально отработает нормально при использовании команды sudo:


Другой случай, это если вы обнаруживаете проблему в логах какого-либо системного сервиса, например, веб-сервера Apache. Казалось бы, должно было быть все верно, потому что запуск и так выполняется от имени суперпользователя.

Но нет, сервисы не только запускаются от имени суперпользователя, но потом, для увеличения безопасности они меняют пользователя на обычного, не привелигированного. Например, Apache работает от имени пользователя apache или www-data. Уже от имени этого пользователя программа пытается получить доступ к файловой системе.

Если нужная папка не доступна этому пользователю для чтения то вы получите ошибку access denied linux. Обычно, в логе программа сообщает какая папка или файл нужен когда происходит ошибка.

Вам просто нужно поменять на него права с помощью утилиты chmod или изменить владельца chown. Причем, нужно чтобы ко всем подкаталогам на пути к целевому каталогу был доступ у программы. Например, нельзя так чтобы права на чтение /home/ не было, а на /home/user/ было. Так не пройдет.

Права разрешающие чтение и запись владельцу и только чтение для группы и остальных вставляются командой:

sudo chmod 755 /путь/к/файлу

Или для смены прав для всех файлов в каталоге и самого каталога:

sudo chmod -R 755 /путь/к/каталогу

Или вы можете изменить владельца, обычно, это более безопасная и распространенная практика:

sudo chown пользователь /путь/к/файлу
$ sudo chown -R пользователь /путь/к/каталогу


Имя пользователя, от имени которого работает сервис вы можете посмотреть с помощью команды:

sudo ps aux | grep имя_сервиса


После того как вы установите правильные права, ошибка отказано в доступе linux больше не будет встречаться.

Выводы

В этой статье мы рассмотрели что делать если случается ошибка нет доступа linux, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

В домашнем каталоге есть файл: **.doc Фменеджер говорит что весит он 3,6 Мб. но удалять отказывается от простого пользователя. говорит файла такого нет. из под рута таже история. говорит нет файла и все тут! ФС - ext3 ОС openSUSE11.2 КДЕ4

Подскажите в чем может быть дело? Как побороть этот файл? Просто он уже достал, ему уже 2 года. судя по данным из файлменеджера.

С какими опциями примонтирован раздел?(вывод mount) Какие права у файла?(вывод ls -l) Какая общая ситуация по фс в системе?(вывод df) Как удаляете? Пробовали удалять по номеру инода? UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code. наберите в консоли ls -l в этом каталоге.
вывод скопируйте суда.

Скоро придёт
Осень

Не удаля еться файл! Даже из под рута!

Коллега, исправьте.
Позорище же какое.

Скоро придёт
Осень

/**.doc"
Только кавычки обязательно. Или
rm

в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик

тогда будет спрашивать, какой файл удалять. есть ещё mc

Stasroot1
а причём тут рут?!
у вас ошибка разве "нет доступа"?
да даже если и эта - если вы чего-то не понимаете, то "от рута", вы всё равно ничего не поймёте, а просто завалите всю систему.

Скоро придёт
Осень

Не удаля еться файл! Даже из под рута!

Коллега, исправьте.
Позорище же какое.


Спасибо за указание ошибки, да еще и в названии темы! Исправил! (блин постоянно делаю ошибки с этим мягким знаком! Хотя знаю как проверить! :-) )

Всем спасибо за подсказки, после обеда все посмотрю и выводы сюда напишу. Спасибо за помощь.

наберите в консоли ls -l в этом каталоге.
вывод скопируйте суда.

Вот вывод относительно одного файла который меня интересует:

С какими опциями примонтирован раздел?(вывод mount) Какие права у файла?(вывод ls -l) Какая общая ситуация по фс в системе?(вывод df) Как удаляете? Пробовали удалять по номеру инода?
mount У меня для этих целей в bashrc прописана функция lsn, которая выводит файлы пронумерованными, и кроме того, прописывает их в переменные LS1, LS2, .
После чего файл с крякозябрами переименовывается так:
mv "$LS25" "normal_name"

тогда будет спрашивать, какой файл удалять. есть ещё mc

Stasroot1
а причём тут рут?!
у вас ошибка разве "нет доступа"?
да даже если и эта - если вы чего-то не понимаете, то "от рута", вы всё равно ничего не поймёте, а просто завалите всю систему.


Так объясните мне каким образом удаляя файл из под рута, файл который лежит в пользовательской директории можно завалить систему? Вроде как вордовские документы не являются системными и соответственно систему завалит не получится. поправьте в чем мои мысли неправильны если я ошибаюсь.

Возможно данный файл сначала стоит переименовать, а затем удалить. Возможно данный файл сначала стоит переименовать, а затем удалить.

Пробовал уже. Вот что получается: Файл или папка /home/stas/Загрузки/��.doc не существует.

Как я понимаю, если файл отсутствует то его нельзя удалить переименовать переместить.

Вариант со скриптом интересный, но пока не очень понятно что куда прописывать?

Так что вопрос переходит из области практического в область теоретическую.

Так объясните мне каким образом удаляя файл из под рута, файл который лежит в пользовательской директории можно завалить систему? Вроде как вордовские документы не являются системными и соответственно систему завалит не получится. поправьте в чем мои мысли неправильны если я ошибаюсь.

А потом набрал rm -rvf etc, что-бы стереть эту чужую папку. Вот только по инерции, случайно, я набрал /etc. К счастью, у меня был бекап и с того компьютера тоже
А у вас - есть?

Так что вопрос переходит из области практического в область теоретическую. $ ls -il итого 38124 24639 -rw-r--r-- 1 ftp ftp 104 2010-03-23 17:17 ?.txt 1558228 drwxr-xr-x 2 ftp ftp 4096 2010-03-23 17:16 . \ . / 1558227 drwxr-xr-x 2 ftp ftp 4096 2010-03-23 17:16 . \ . / 24640 -rw-r--r-- 1 ftp ftp 139559 2010-03-23 17:17 . fpl 1558226 drwxr-xr-x 3 ftp ftp 4096 2010-03-23 17:16 . / 1558221 drwxr-xr-x 5 ftp ftp 4096 2010-03-23 17:17 Bluetooth/ 1558225 drwxr-xr-x 2 ftp ftp 4096 2010-03-23 17:16 Youcam/ 24638 -rw-r--r-- 1 ftp ftp 38818792 2010-03-23 17:17 setuprus.exe

Скоро придёт
Осень

Да у меня есть копия и как правило я ее делаю перед тем как что то серьезное делать и предполагаю что возможно случайно или по незнанию поврежу ее работоспособность.

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

За метод с инодами спасибо. Новое для меня. Но понятное.

Но согласитесь в моем случае даже из под рута систему я не убъю так как действую в конкретной папке и в случае если долго бездействует то или иное приложение с правами рут которое дабы не нашалить я его закрываю.
ага. я тоже действовал "в папке". И конкретно убил все конфиги сразу во всей системе. Случайно слеш поставил. Ага. Руки. Но это реальный случай. У вас ещё и не такое будет

Скоро придёт
Осень

Но согласитесь в моем случае даже из под рута систему я не убъю так как действую в конкретной папке и в случае если долго бездействует то или иное приложение с правами рут которое дабы не нашалить я его закрываю.
ага. я тоже действовал "в папке". И конкретно убил все конфиги сразу во всей системе. Случайно слеш поставил. Ага. Руки. Но это реальный случай. У вас ещё и не такое будет

Будет конешно разное, но я пользуюсь Linux не первый день и поэтому глупые ошибки маловероятны. да, что то подобное натворить я мог когда только первые разы ставил и настраивал систему. сейчас все летает и работает на уверенную четверку, и ничего особо правит редактировать не особо нужно. :-) А в особо глубокие места не лезу стараюсь, так как времени на это реально нет. За предупреждение спасибо, да под рутом надо поменьше копаться по ФС ОС.

Пожалуйста попробуйте что я мог бы такого сделать чтобы поламать систему, просто ятобы я не наступил на эти и подобные грабли своей криворукости. про криворукость: не отправлять на винду, меня линь устраивает вполне, ибо в игрушки я вообще не работаю, фотошоп ненужен так как заглаза хватает гимпа. . хотя в винде мой твтюнер встроенный в ноутбук работает, а тут так и не настроил (упорствовать не упорствовал но надобы).

Читайте также: