Должны ли разрешения на файлы передаваться между компьютерами?

Я не линукс-гуру или что-то в этом роде, но я только что узнал о файловых разрешениях несколько дней назад и нашел кое-что тревожное (может быть, потому что я не очень хорошо понимаю это). Скажем так, у меня есть вредоносный скрипт и запустите эту команду sudo chmod +x malcious_script. Если я правильно понял, то теперь я дал этому сценарию разрешение на выполнение на моем компьютере, и это нормально, пока мы знаем, что я делаю, но давайте скажем, что я загружаю этот сценарий на github, и кто-то клонит его на свою машину. Должен ли этот сценарий все еще иметь разрешение на исполнение? (Из того, что я пробовал, я использовал убунту 14 (если это имеет значение), чтобы сначала написать сценарий и дать ему разрешение. Затем я загрузил скрипт на другую виртуальную машину, и у скрипта все еще было разрешение на исполнение))

0
задан 15 September 2020 в 20:46

1 ответ

Хорошо, несколько разных моментов:

  • Чтобы быть педантичным, вы не дали разрешение на выполнение скрипта, вы дали своему пользователю разрешение на выполнение скрипта. Это звучит как одно и то же, но это принципиально разные вещи. Файл инертен, поэтому пользователь должен выполнить действие, которое потенциально может иметь здесь значение.
  • Простой способ взглянуть на общую ситуацию: разрешения файловой системы Linux перестают существовать за пределами файловой системы, которая их создала. Если вы используете этот же сценарий на компьютере с Windows, Windows не будет иметь представления о том, что означают разрешения «755» в Linux.
  • Наконец, git сбрасывает все разрешения файловой системы Linux, за исключением бита выполнения. За исключением бита выполнения, файлы, созданные git clone, имеют разрешения, установленные вашим umask.

РЕДАКТИРОВАТЬ: Чтобы ответить на другие вопросы:

  • Права доступа к файлам делают Linux более безопасным. Например, ваш пользователь действительно должен иметь права на запись только в ваш домашний каталог. Если вы делаете что-то глупое или запускаете вирус, единственное место, куда можно что-то записать (без чего-то вроде privesc), — это ваш домашний каталог. Очистка в этот момент очень проста, просто удалите свой домашний каталог и начните сначала. Разрешения на доступ к файлам также полезны, когда в системе есть несколько пользователей, чтобы гарантировать, что они не смогут читать/записывать файлы друг друга, если им не предоставлено такое разрешение.
  • Что касается того, где на самом деле хранятся разрешения, эта информация хранится в файловой системе в виде метаданных файла.Глупая аналогия: файлы похожи на письма в конверте. Редакторы и все остальные смотрят на письмо, тогда как разрешения, имя файла и т. д. находятся на конверте, который хранится как метаданные файловой системы. Если вы хотите углубиться в детали, некоторые из этих метаданных хранятся в inode, а некоторые — в содержащем элементе каталога. Когда вы передаете файл, передаются только данные (письмо), а метаданные (конверт) отбрасываются, если не используется какой-либо другой механизм для сохранения метаданных (например, файл tar, git, как описано ранее, и т. д.).
3
ответ дан 16 September 2020 в 05:02

Другие вопросы по тегам:

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