- Что такое флаги linux
- Делаем файл исполняемым в Linux
- Чем отличается Linux от Windows в плане исполнений файлов, так это тем, что первая система определяет выполняемые файлы программными не по расширению, а по специальному флагу исполняемости. Так у каждого файла есть три режима исполняемости: чтение, исполнение и запись. Именно эти режима определяют, что система может делать с конкретным файлом. Когда пользователь скачивает различные установщики из интернета или создает скрипт, то по умолчанию ему присваиваются следующие режимы – чтение и запись. Одним словом, пользователь не сможет сделать с такой программой ничего, так как с ним нужно сделать кое-что еще.
- Что означает исполняемость?
- Как сделать файл исполняемым
- Как установить флаг исполняемости в GUI
- linux-notes.org
- Изменение атрибутов (флагов) на файлах в Unix/Linux
- 3 thoughts on “ Изменение атрибутов (флагов) на файлах в Unix/Linux ”
- Добавить комментарий Отменить ответ
Что такое флаги linux
Кроме уже рассмотренных атрибутов (владелец, группа, «права доступа»), существует еще один атрибут, который ограничивает возможные действия с файлом — «набор флагов».
Кстати, по умолчанию команда ls флаги не показывает (и большинство «коммандеров»/»файлменеджеров» — тоже). Для того, чтобы она их показала, надо указать ключ -lo .
С помощью флагов можно запретить изменять содержимое файла, его название или и то и другое.
Флаги являются более «сильнодействующим средством» чем permissions. Они действуют одинаково для всех юзеров, не разделяя их на категории. Более того, их действие не может игнорировать и владелец файла и даже root. Единственное отличие владельца и root’а от прочих пользователей в том, что они могут убрать флаги с файла (и то не всегда) и только потом уже делать то, что им хочется.
Рассмотрим их подробнее.
Флаги делятся на две группы «юзерские» флаги и «суперюзерские». Разница в том, что «юзерские» может поставить и убрать как root, так и владелец файла, а ставить/убирать «суперюзерские» может только root.
На самом деле, «снятие» флагов — вопрос более сложный. Он зависит от того, в каком «режиме безопасности» находится система. Но об этом немного позднее.
По своему назначению флаги делятся на
- append — разрешается только «дописывать» файл (естественно, файл должен также иметь permssion «w»). Без этого флага, если юзеру из соответствующей категории разрешается писать в файл, он может как добавить что-либо к содержимому файла, так и «убавить», то есть стереть часть содержимого. При установленном флаге append, любой юзер (даже root) сможет только добавить что-нибудь в конец файла, но не сможет ничего изменить в уже имеющемся содержимом.
Если этот флаг поставить на директорию, то в ней можно создавать файлы (или копировать туда файлы из других директорий), но нельзя удалять или менять их названия. Естественно, на сами файлы действие флага не распространяется. - nounlink — файл (или директорию) нельзя удалить или переименовать, даже если права, установленные на директории (в которой находится файл) это позволяют. В то же время, этот флаг не запрещает менять содержимое файла (если, конечно, permissions это позволяют).
- immutable или change — «ничего нельзя» :-). То есть, файл (директорию) нельзя ни удалить, ни переименовать, ни изменить содержимое. Опять же, если это флаг стоит на директории, то на файлы (в ней содержащиеся) его действие не распространяется. То есть, вы не сможете ни добавить, ни убрать файл в директории, но менять содержимое самих файлов это флаг не запретит.
Как уже говорилось, эти три флага существуют в двух вариантах — «юзерские» и «суперюзерские». То есть, на самом деле их шесть
- три «юзерских» — uappend, uunlink и uimmutable
- и три «суперюзерских» — sappend, sunlink и simmutable .
Вообще-то, существует еще два «непарных» флага. Это флаги
- archived (архивный файл) — это файл «суперюзерский», то есть его может поставить только root, а аналогичного «юзерского» не существует;
- nodump (файл не надо «дампировать») — а это «юзерский» флаг, его может поставить не только root, но и владелец файла.
Эти флаги проверяются только некоторыми конкретными программами. Флаг nodump сообщает программе dump , что этот файл не надо сохранять в архиве. (Подробнее о программе dump вы можете прочитать в соответствующем man’уале — man dump ).
Кем и для чего проверяется флаг archived , я, к сожалению, не знаю.
И, наконец, несколько слов о «режиме безопасности».
Дело в том, что в FreeBSD система может находится на разных «уровнях безопасности». Существует четыре уровня
- -1 — система безопасности выключена
- 0 — система безопасности включена, но никаких ограничений нет
- 1 — «режим безопасности», установлен ряд ограничений на работу с внешними устройствами и операции с флагами
- 2 — «повышенная безопасность», еще больше ограничений, чем на уровне 1.
Подробнее о том, в чем заключаются ограничения и как меняются «уровни безопасности», можно прочитать в man ini t (отмечу только, что «по умолчанию» система стартует с уровнем -1, то есть «безопасность» выключена).
Для нас в данный момент важно только, что на уровне 1 и 2, даже суперюзеру (root’у) запрещено снимать флаги sappend и simmutable .
Естественно, это делается не для того, чтобы «защитить» систему от собственного администратора. Он все равно, при желании, сможет убрать эти флаги (и удалить/изменить соответствующие файлы). Правда, для этого ему придется перезагрузить систему, причем с консоли.
А вот «взломщик», проникший в систему, даже если каким-то образом и получит root’овские права, не сможет изменить «жизненно важные файлы» (если, конечно, они защищены флагом simmutable ) или «почистить логи» (если они защищены флагом sappend ), чтобы «замести следы» своего пребывания в системе.
Источник
Делаем файл исполняемым в Linux
Чем отличается Linux от Windows в плане исполнений файлов, так это тем, что первая система определяет выполняемые файлы программными не по расширению, а по специальному флагу исполняемости. Так у каждого файла есть три режима исполняемости: чтение, исполнение и запись. Именно эти режима определяют, что система может делать с конкретным файлом. Когда пользователь скачивает различные установщики из интернета или создает скрипт, то по умолчанию ему присваиваются следующие режимы – чтение и запись. Одним словом, пользователь не сможет сделать с такой программой ничего, так как с ним нужно сделать кое-что еще.
Что означает исполняемость?
Но для начала не будет лишним разобраться с таким вопросом, как: что такое исполняемость и что это вообще означает? Начнем с программы, являющейся набором инструкций, выполняемых процессором над совокупностью данных с целью получения нужного результата. Для процессора не существует разницы между инструкциями и данными.
И первые, и вторые состоят из цифр – байт. То есть, определенное сочетание цифр будет означать для процессора необходимость выполнения конкретного действия. Для процессора нет принципиальной разницы, какой процесс выполнять – файл операционной системы или текстовый файл. И первый, и второй файл будут выполнены, вот только в случае с текстовым файлом необходимость в инструкциях фактически отпадает.
Для понимания системой, какие файлы должны быть выполнены по инструкции, а какие выполнять не нужно, и были придуманы флаги исполняемости. Фактически содержимое файла никак не изменяется в зависимости от установленного флага исполняемости – отличие сводится только к нескольким строчкам. Со скриптами все работает точно так же, только команды из файла выполняет не процессор, а интерпретатор, например, в bash скриптах — сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик — это ld-linux.so.2.
Как сделать файл исполняемым
В системе Linux предусмотрена специальная утилита, которая позволяет управлять флагами файлов, которая получила название chmod. Для вызова этой утилиты необходимо задействовать синтаксис:
$ chmod категория действие флаг адрес_файла
И здесь необходимо учитывать следующее:
- Флаг — один из доступных флагов — r (чтение), w (запись), x (выполнение).
- Категория — флаги могут устанавливаться для трех категорий: владельца файла, группы файла и всех остальных пользователей. В команде они указываются символами u (user) g (group) o (other) соответственно.
- Действие — может быть + (плюс), что будет значить установить флаг или — (минус) снять флаг.
Таким образом, чтобы сделать исполняемым скрипт в Linux, пользователю необходимо выполнить:
Зачастую уже этого достаточно, чтобы сделать файл исполняемым, но если необходимо наделить других пользователей полномочиями исполнять эти файлы, еще необходимо добавить:
Чтобы посмотреть флаги в терминале достаточно воспользоваться утилитой ls:
Флаги включены для всех категорий. Первое rwx — флаги владельца, второе — группы, а третье — для всех остальных. Если флаг не установлен, на его месте будет прочерк.
Снять флаг исполняемого файла очень просто. Используется та же команда только со знаком минус:
Дальше рассмотрим вопрос установки управляемости в GUI.
Как установить флаг исполняемости в GUI
Установка файлов исполняемости доступна не только через терминал, но и файловые менеджеры, одним из которых является GUI. Для новичков, возможно, даже эта инструкция окажется проще и доступней. Рассмотрим на примере файлового менеджера GNOME, Nautilus. Кликните правой кнопкой по нашему файлу программы или скрипта, чтобы открыть контекстное меню, затем выберите свойства:
Переходим на вкладку права и устанавливаем галочку «Разрешить выполнение файла как программы»:
Теперь файл будет запущен системой непосредственно из файлового менеджера. Вот и вся инструкция. Теперь с запуском программы или скрипта из интернета у вас не возникнет трудностей.
Источник
linux-notes.org
Изменение атрибутов (флагов) на файлах в Unix/Linux
Сейчас расскажу как можно изменить атрибуты на файлы в Unix\Linux и приведу готовые примеры в своей статье «Изменение атрибутов (флагов) на файлах в Unix/Linux».
1. chattr
chattr — изменяет атрибуты файлов на файловых системах ext2fs, ext3, ext4 и частично на других файловых системах Linux.
Формат символьного режима: +-=[acdeijstuACDST].
«+» обозначает добавление указанных атрибутов к существующим;
«-» обозначает их снятие;
«=» обозначает установку только этих атрибутов файлам.
Символы «acdeijstuACDST» указывают на новые атрибуты файлов, некоторые атрибуты может назначить только суперпользователь (root):
- Не обновлять время последнего доступа к файлу atime (A)
- Использовать синхронное обновление (S)
- Использовать синхронное обновление каталогов (D)
- Только добавление к файлу (a)
- Сжатый (c)
- Не архивировать (d)
- Неизменяемый (i)
- Безопасное удаление (s)
- Вершина иерархического дерева (T)
- Запрет слияния в конце файла (t)
- Неудаляемый (u)
- Нет копирования при записи (C)
- Журналирование данных (j)
- extent format (e)
2. lsattr
Формат символьного режима:
- Огромный файл (h),
- Ошибки сжатия (E),
- Индексированный каталог (I),
- Сжатие прямого доступа(X),
- Сжатый грязный файл (Z).
Опции
-R
Рекурсивное изменение атрибутов каталогов и их содержимого.
-V
Вывод на экран с выводом chattr и показать версию программы.
-f
Запретить большинство сообщений об ошибках.
-v
Вывести версию программы.
-d
Вывести все атрибуты для всех каталогах.
-a
Вывести все атрибуты для всех файлов.
Linux
В Linux есть утилита chattr, она может выставлять нужные флаги на файлы и папки, но все изменения проводить может только пользователь root.
Выставляем флаг который нельзя удалить (может только root):
Просмотр всех флагов для папок и файлов:
Чтобы убирать флаги i,u для всех файлов в папке:
Проверим стоит ли права, после применения команды:
Я сбросил все атрибуты в 000, нужно дял файлов теперь выставить нормальные (это 644), для этого используем:
И нужно поменять владельца сайта ( у меня кто-то сменил на пользователя root, видимо нашли уязвимость и проделали этот трюк для своих нужд), по этому, исправляем:
Иногда нужно менять еще и права на папки и файлы, я использую эту статью для этого:
выставить права на папки 755 и права на файлы 644
Если нужно больше информации о командах chattr или lsattr, то читаем мануал:
Разрешаем ядру автоматически сжимать или разжимать файл:
Игнорируем данный файл когда используем команды dump:
Запрешаем изменение бинарников:
Удалим атрибут ‘s’ с файла, но он после этого будет заполнен нулями и перезаписан на
диск:
Только добавление данных (append-only), удаление и переименование запрещено (Предотвращаем модификацию лога злоумышленником):
Если удалить файл с этим атрибутом, то он будет сохранен и пользователь может восстановить данные при необходимости:
Удостовериться что все изменения файла сразу будут записаны на диск:
FreeBSD/OpenBSD
В *BSD, данной функцией обладает утилита chflags. Приведу несколько примеров использования данной программы на freeBSD.
Чтобы выставить неудаляемый флаг (в отличии от ext это может НЕ только root):
Чтобы убрать флаг:
Обо всем возможностях можно узнать в:
Утилита chattr (lsattr) входят в пакет утилит — e2fsprogs (иногда называемая e2fs programs) — это набор программ для поддержания файловых систем (ext2, ext3 и ext4).
Что входит в данный пакет утилиты e2fsprogs:
- badblocks — используется для поиска плохих блоков;
- chattr — изменяет атрибуты файлов на файловой системе ext2fs;
- debugfs — используется для ручного просмотра и изменения внутренней структуры файловой системы;
- dumpe2fs — печатает superblock and block group information;
- e2fsck — fsck-программа, проверяющая и корректирующая несоответствия;
- e2image — записывает критические данные файловой системы в файл;
- e2label — используется для просмотра и изменения метки файловой системы;
- lsattr — печатает список атрибутов файловой системы;
- mke2fs — используется для создания файловых систем ext2, ext3 и ext4;
- mklost+found — создаёт каталог lost+found и выделяет для него блоки дискового пространства;
- resize2fs — используется для изменения пространства, выделенного под файловые системы ext2, ext3 and ext4;
- tune2fs — используется для модифицирования параметров файловой системы.
- Многие из этих утилит основаны на библиотеке libext2fs.
Тема «Изменение атрибутов (флагов) на файлах в Unix/Linux» завершена.
3 thoughts on “ Изменение атрибутов (флагов) на файлах в Unix/Linux ”
Спасибо за статью, а можно вопрос?
Вот вывод команды ls
-rwxrwxrwx+ 1 user User 304227 окт 5 09:18 Копия Агентское
Что означает «+» после «rwxrwxrwx» ? Нигде не могу найти информации
Это расширенный атрибут, который устанавливается:
На MacOS:
# chmod -R +a «group:Your_Group_Name allow read,write,append,readattr,writeattr,readextattr,writeextattr» /Path/to/dir
# chmod -R +a «user:Your_User_Name allow read,write,append,readattr,writeattr,readextattr,writeextattr» /Path/to/dir
На Linux:
$ setfacl -m u:Your_User_Name:rw,u:some_user:r,g::r,m::rw /Path/to/dir
Если удалить файл с этим атрибутом, то он будет сохранен и пользователь может восстановить данные при необходимости
# chattr +u my_test_file
А где файл будет сохранен? как его найти?
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник