Вопрос или проблема
У меня есть доступ к большому удалённому серверу через SSH, и я являюсь пользователем root на этом сервере. Однако на сервере есть несколько других пользователей root, которые также имеют доступ к нему. Я хочу запускать некоторые программы на Fortran/C на этом сервере, но меня беспокоит защита моего кода.
Существует ли способ выполнить мои программы на Fortran/C, не раскрывая исходный код другим пользователям на сервере? Я ищу решения, которые позволят мне сохранить конфиденциальность, одновременно позволяя запускать мои программы.
Одно из решений, которое я задумал, — это предоставить код программы как ввод непосредственно в терминал с порядком компиляции. Вставив код туда, он сгенерирует .o
файлы, которые, как я полагаю, сложнее поддаются обратной разработке (хотя я не совсем уверен). Затем я использую эти .o
файлы для компиляции и запуска своей программы.
Это хороший подход, или есть лучшие методы для сохранения конфиденциальности моего исходного кода, при этом позволяя его выполнение на сервере? Кроме того, существуют ли способы шифрования и дешифрования файла для компиляции? В идеале единственным способом получить программу должно быть аппаратное средство, а не программное.
Ответ или решение
Для компиляции и выполнения программ на Fortran/C на общедоступном удалённом сервере, при этом сохраняя конфиденциальность вашего исходного кода, можно рассмотреть несколько подходов. Вот подробно описанные шаги и методы, которые помогут вам добиться желаемого уровня защиты.
1. Подход с использованием временного окружения
Создайте временную директорию с ограниченными правами доступа, доступными только для вашего пользователя:
mkdir ~/my_project
chmod 700 ~/my_project
Поместите все ваши исходные файлы в эту директорию. Это обеспечит, что никто другой не сможет просматривать или изменять ваши файлы.
2. Команда для компиляции
Для компиляции программ можно использовать команды gcc
для Си и gfortran
для Fortran. Если ваш код хранится в определённой директории, вы можете скомпилировать его следующим образом:
gcc -o my_program my_program.c
gfortran -o my_program my_program.f90
3. Выполнение бинарных файлов
После компиляции вы можете запускать скомпилированные программы. Так как у вас есть доступ только к бинарным файлам, ваш исходный код не будет выставлен в открытый доступ:
./my_program
4. Использование шифрования
Если вы хотите увеличить уровень безопасности, вы можете зашифровать ваш исходный код. Один из доступных инструментов – gpg
.
- Зашифруйте файл:
gpg -c my_program.c
- Это создаст зашифрованный файл
my_program.c.gpg
. Для компиляции вам нужно будет расшифровать файл:
gpg my_program.c.gpg
После компиляции вы можете удалить расшифрованный файл:
rm my_program.c
5. Сборка через систему сборки
Если ваш проект становится более сложным, рассмотрите использование системы сборки, такой как CMake или Make. Эти инструменты помогут вам организовать процесс сборки и также могут быть настроены для работы с временными директориями, скрывающими исходный код.
6. Использование Docker-контейнеров
Если ваш сервер поддерживает Docker, вы можете использовать контейнеры для изоляции вашего рабочего окружения. Создайте Docker-контейнер с необходимыми инструментами для компиляции и запуска программ. Код будет находиться в контейнере, недоступен снаружи.
Заключение
Изоляция вашего рабочего окружения и использование методов шифрования значительно сократит риск раскрытия вашего исходного кода другим пользователям. Рекомендуется комбинировать перечисленные методы для достижения наилучшего результата. Всегда соблюдайте осторожность при работе с удалёнными серверами, особенно если доступ ко всему серверу имеют другие администраторы.