Как управлять / сохранять права доступа к файлам во время онлайн-передачи файлов?

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

https://github.com/fletom/ACLr8

Но когда я использую chmod a+x с моим файлом, и я отправляю файл своему другу (в этом случае я отправляю его себе), он (я) не может выполнить, потому что файл потерял +x разрешения.

Есть ли способ (есть человек, который может это сделать по ссылке), чтобы отправить bash-скрипт с правами на выполнение исполняемого файла, просто дважды щелкнув и выполнив его?

1 ответ

ПРИМЕЧАНИЕ: вопрос в то время касался передачи по электронной почте (согласно комментариям от ОП по вопросу). Этот ответ написан для того, чтобы ответить на этот вопрос, каким он был, в этом электронном письме есть способ передачи, доступный здесь.

Используя электронную почту для передачи файлов между системами, вы не можете "сохранить" все права доступа к файлам, какими вы хотите их видеть при простой отправке файла. Это связано с тем, что это "новая загрузка", то есть "новый файл", созданный в соответствии с условиями и требованиями системной политики для "новых разрешений на создание файлов" в месте загрузки, в системе загрузки и т. Д. Это также потому, что электронная почта протоколы не имеют каких-либо механизмов для внешнего сохранения разрешений исходной системы.

Показанный вами пример GitHub "сохранит" состояния разрешений для файлов как часть системы контроля версий. Электронная почта не имеет такого механизма.


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

  1. Используйте тарбол. Вы можете создать каталог с файлом в нем, и создать tar-архив для хранения системы. При извлечении в системе Linux он попытается "сохранить" эти разрешения, как это было при заархивировании файлов. tar -pczf name_of_your_archive.tar.gz /path/to/directory это общая структура команд для использования. Однако, если они не могут бежать tar xzf или похожий на другом конце, это не будет работать.

  2. Используйте систему контроля версий для хранения данных, такую ​​как GitHub. Вы можете создать репозиторий github для хранения сценария оболочки, а затем попросить другого человека клонировать его в свою систему. Это должно сохранить исполняемый бит, но без гарантий.

  3. Проинструктируйте другого пользователя, как установить исполняемый бит через командную строку. Если они загружают файл в /home/USERNAME/Downloads, где USERNAME это их имя пользователя, вы можете поручить им войти в терминал и запустить chmod a+x /home/USERNAME/Downloads/FileName.shи затем они могут запустить его двойным щелчком мыши или командной строкой.

  4. Если электронная почта является единственным вариантом передачи, тогда запустите скрипт с языком оболочки, на котором вы его написали (вероятно, Bash, я думаю). Это не потребует каких-либо изменений в разрешениях или бите выполнения в любом месте. Предполагая, что это скрипт Bash, просто попросите удаленного пользователя, который скачал скрипт, выполнить следующее (из командной строки): bash /path/to/script.sh (и заменить /path/to/script.sh с реальным путем к файлу, скорее всего /home/USERNAME/Downloads или место загрузки электронной почты по умолчанию, или если оно загружено через веб-почту в веб-браузере, где USERNAME - имя пользователя пользователя)

Кроме первых трех методов, о которых мне известно, я не верю, что вы сможете "сохранить" разрешения при отправке файла другому пользователю. Это ограничение электронной почты - оно не может сохранять разрешения таким образом, потому что нет способа сохранить разрешения как часть этого файла таким образом, который сохраняется при передаче по электронной почте. Четвертый вариант дает метод, который не требует даже исполняемого бита и вообще не связывается с разрешениями.

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