Операция не позволена linux

Обновлено: 04.07.2024

Здравствуй, дорогой читатель! Наверняка у тебя есть такие файлы с данными, потеря которых абсолютно нежелательна и ты хотел бы защитить такие файлы от случайного удаления. Особенно это актуально для тех кто только осваивает систему 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': Операция не позволена

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


Дистр/система-то какая? В 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

Новые пользователи довольно часто сталкиваются с такой ошибкой, как ошибка отказано в доступе 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, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!

У меня есть сценарий, который мне нужно выполнить на разделе NTFS. Разрешение скрипта установлено в 600.

Я попытался изменить разрешения, запустив chmod 755 script.sh, который не сообщает об ошибке или что-то еще, - но он также не изменяет разрешения на файл:

$ stat script.sh File: `script.sh' Size: 297070 Blocks: 584 IO Block: 4096 regular file Device: 811h/2065d Inode: 35515 Links: 1 Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx) Access: 2010-09-30 14:05:16.041621000 -0700 Modify: 2010-09-30 14:05:05.070157000 -0700 Change: 2010-09-30 14:05:05.070475000 -0700 $ chmod 755 script.sh $ stat script.sh File: `script.sh' Size: 297070 Blocks: 584 IO Block: 4096 regular file Device: 811h/2065d Inode: 35515 Links: 1 Access: (0600/-rw-------) Uid: ( 1000/ xxxxxx) Gid: ( 1000/ xxxxxx) Access: 2010-09-30 14:05:16.041621000 -0700 Modify: 2010-09-30 14:05:05.070157000 -0700 Change: 2010-09-30 14:05:05.070475000 -0700

Как вы можете видеть, он остается неизменным.

Режим определяется настройками монтирования раздела (вы не можете изменить его с помощью chmod).

Для '755' для файлов и '777' в каталогах вы использовали бы что-то вроде

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

Режим определяется настройками монтирования раздела (вы не можете изменить его с помощью chmod).

Для '755' для файлов и '777' в каталогах вы использовали бы что-то вроде

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

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

В дополнение к установке fmask и / или dmask в ответе htorque выше, если вы хотите выполнить сценарии на диске, мне также нужно было установить параметр монтирования «exec».

Итак, пример будет:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000,exec /dev/whatever /mnt/whatever

Сделайте это один раз для каждого раздела NTFS!

Я проверяю его с помощью Сделайте это один раз для каждого раздела NTFS, есть! , и разрешения влияют на ОС Windows! Я меняю права на свой домашний каталог на Windows, и когда я снова использовал Windows, я мог видеть, что пользователь был сломан!

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

Обратите внимание, что сценарий вызывает другие скрипты или двоичные файлы в одном разделе, это не будет Работа. Также обратите внимание, что стратегия не работает с двоичными файлами, а не с текстовыми файлами сценариев, написанными в Bash Script, Perl, Python и т. Д.

Для разделов NTFS используйте опцию permissions в fstab.

Сначала отключите раздел ntfs.

Определите свой UUID раздела с помощью blkid

Затем отредактируйте /etc/fstab

И добавьте или отредактируйте строку для раздела ntfs

Сделайте точку монтирования (если необходимо)

sudo mkdir /media/windows

Теперь смонтируйте раздел

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

Затем вы можете использовать chown и chmod в разделе ntfs.

В отличие от большинства людей, NTFS является файловой системой, совместимой с POSIX¹, и возможно использование разрешений для NTFS.

Чтобы включить это, вам нужен «файл сопоставления пользователя» или просто укажите параметр permissions при установке (если не требуется совместимость с Windows). Это отображает пользователей Linux в вашей системе с идентификаторами пользователей, такими как NTFS / Windows, которые используют их внутри.

См. Справочную страницу ntfs-3g для получения некоторой информации и некоторых примеров. Если вам нужна дополнительная информация, ознакомьтесь с дополнительной документацией о правах собственности и разрешениях ntfs-3g.

(Обратите внимание, что это не работает в файловых системах FAT.)

¹ Да, это также может хранить имена файлов, которые действительны в linux / unix, но не под Windows, поддерживает символические ссылки и amp; hardlinks и т. д.

Установите раздел NTFS на USB-накопитель с пользовательскими разрешениями и владельцем

В Linux режим NTFS (и FAT32) определяется настройками монтирования раздела. Вы не можете изменить его с помощью chmod.

опции монтирования sdb1, изменить в соответствии с буквой диска и номером раздела в вашем случае. Общий синтаксис - sdxn, где x - буква диска, а n - номер раздела, как показано, например, sudo lsblk -f

Установите раздел NTFS

, чтобы соответствовать букве диска и номеру раздела в вашем случае (без разрешения на выполнение для файлов, без доступа к «другим») ),

Пример 2 (с разрешениями на выполнение для файлов, без доступа для «других»),

Отключите раздел NTFS. [ ! d14] /mnt/sd1/this-script , и вы также можете запускать исполняемые программы из этого места (не рекомендуется).

В этом случае вы можете запустить скрипт this-script с помощью

1) Создаю пользователя biba и задаю ему мандатные атрибуты sudo pdpl-user -l 0:2 -i 0 -c 0:3 biba (ограничение категорий по 0:3 позволит дать доступ для категории 1 и категории 2)
2) Создаю в файловой системе директорию в которой будет файл file1 с аналогичными метками,что и у директории dirbiba (дискретка chmod -R 777 dirbiba)

Пытаюсь от пользователя biba вывести содержимое файла sudo -u biba cat /dirbiba/file1 && echo "FAIL: 1" || echo "OK: 0" , но мне выдает следующее: операция не позволена

Python

New member

Python

New member

Малышок

New member


Нет, так как пользователь создавался через команду useradd ( нет доп. информации, назначенного пароля и пр.) Сейчас пользователь был добавлен в группу astra-console, но при попытке открыть файл выдало тоже самое - операция не позволена.
добавлялся пользователь так: sudo usermod -G astra-console biba

Малышок

New member

Не проверялось, так как пользователь создавался через команду useradd ( нет доп. информации, назначенного пароля и пр.). Основная суть как раз таки в реализации открытия файла от другого пользователя. Не знаю что может мешать, так как дискретка отключена, теперь пользователь имеет доступ к консоли(astra-console) но операция не позволена

CrashBldash

New member

А вашему новому пользователю biba можно делать sudo?
Покажите /etc/sudoers и id пользователя biba

Малышок

New member

А вашему новому пользователю biba можно делать sudo?
Покажите /etc/sudoers и id пользователя biba

Команда sudo предоставляет возможность пользователям выполнять команды от имени суперпользователя root либо других пользователей, а мне это совершенно не нужно. Задача что бы biba делал свои дела исходя из тех прав,что ему даровано. Суть в мандатном разграничении доступа. Из установленных категорий и уровней он директорию и файл видит, дискретка на максимум, следовательно и читать/писать/исполнять он тоже может. Доп.привелегий biba никто не даст,он обычный юзер.

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