Что происходит «под капотом», когда выполняется chmod?

Добрый вечер!

Что происходит, когда выполняется, например
$ chmod +x myfile ?

Понятно, что файлу присваивается право на выполнение, теперь он может выполняться, и в ls -la мы теперь увидим нечто подобное:

-rwxrwxr-x  1 username usergroup 42 Oct 26 23:25 myfile


Но что произошло "под капотом"?

Затрагивается ли сам файл, или может изменения вносятся куда-то (итнересно, куда), в файловую систему, или же что-то другое?
  • Вопрос задан
  • 406 просмотров
Решения вопроса 1
15432
@15432
Системный программист ^_^
На уровне файловой системы у каждого файла есть свойства - имя, владелец, время создания / изменения, права доступа. Вот права доступа и изменяются. Происходит модификация записи файла в структуре файловой системы ext3 (или какая у вас там)
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
В файловой системе стандарта POSIX (стандарт для всех *nix), есть аттрибуты файла в виде rwxrwxrwx, плюс еще два-три специальных бита.
Собственно этот аттрибут и правится. Внутри файла ничего не меняется.
Можете нагуглить права доступа в POSIX системах.

Этот флаг говорит системе, что файл - исполняемый. Но как его исполнят, система смотрит по заголовку файла.
Для скриптовых файлов, там обычно указан путь к интерпретатору. Для бинарных - соответствующий заголовок.
В отличие от Windows, расширение в *nix не значит ничего.
Ответ написан
Комментировать
Комментировать
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
есть такая чудесная штука - иноды. Информация о правах/владельцах/времени доступа/модификации/ и т.д.
Ответ написан
Комментировать
@abcd0x00
Затрагивается ли сам файл, или может изменения вносятся куда-то (итнересно, куда), в файловую систему

Сам файл не затрагивается. Управление файлом происходит через его inode. Inode - это такая структура в файловой системе, описывающая файл. Когда ты запускаешь ls, она не заходит в файлы, а проходит по их inode'ам, читая из них информацию. А содержимое файла записывается в inode в виде адреса первого блока. Вот по этому inode и определяется, что можно делать с содержимым файла.
Ответ написан
Комментировать
В дополнение ко всем ответам поясню, что права доступа является атрибутом файла.
Помимо прав атрибутами так же являются имя файла, владелец, группа, временные отметки доступа. Атрибуты не влияют на содержимое файла. Например, при переименовывании содержимое файла сохраняется.

Атрибуты не являются чем-то универсальным, их поддержка зависит от файловой системы. Например FAT32 не поддерживает стандартные POSIX-атрибуты доступа. В свою очередь, EXT4 не поддерживает атрибут скрытности (скрытые файлы и папки в Windows).

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

Архиватор tar умеет сохранять атрибуты заархивированых файлов и восстанавливать их при распаковке.

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

Войдите, чтобы написать ответ

Похожие вопросы