Способность процесса читать файл определяется эффективным UID указанного процесса.Если вы измените права доступа к файлу, то процессы пользователя (включая процесс ruby) не смогут его прочитать.
Одним из решений является передача вашего ruby-интерпретатора кому-то другому, а затем присвоение ему setuid, но это даст ему возможность читать эти «защищенные» файлы независимо от того, какой скрипт он запускает.Короче, не делай этого.
Другой вариант - сохранить ваши данные где-то, кроме файловой системы, а затем использовать для этого отдельную систему аутентификации.
Правильный способ, на мой взгляд, состоит в том, чтобы иметь все методы в вашем скрипте, но использовать какую-то привязку AAA, которая ограничивает доступ к методам, которые пользователь не должен запускать.Затем вы можете использовать любой бэкэнд AAA для аутентификации вашего пользователя (LDAP, файл паролей и т. Д.).