Файл, доступный только с правами root

У меня есть двоичный файл, который нужно запускать при запуске на всех учетных записях (включая непривилегированные учетные записи пользователей), поэтому команда запускать его будет помещена в /etc/rc.local . Сама программа будет иметь только разрешения на выполнение, чтобы она не могла быть прочитана или изменена непривилегированным пользователем. Он находится в /usr/bin .

Тем не менее, он должен получить доступ к секретному ключу, когда он запускается (ключ находится в /usr/share ). Возможно ли создать файл, содержащий секретный ключ, который не будет доступен для чтения или записи для всех обычных пользователей, но доступен для чтения программой? Может ли файл использовать привилегированную программу?

Возможно, у него могут быть какие-то настройки с разрешениями на файлы (chmod)? Или есть способ, которым он должен быть зашифрован каким-то образом?

  • Сохранять билет в кеберосе через вызов sudo
  • Выполнить строку команд с помощью одного sudo
  • sudo не может открыть / etc / sudoers
  • yum не выбирает переменную окружения YUM0
  • суперпользователя или пользователя?
  • Могу ли я перенести файл в папку (на удаленном сервере), доступную для записи только через root (через sudo)?
  • Как ретроактивно создавать скрипт с правами root?
  • Получить iSerial с lsusb без sudo
  • One Solution collect form web for “Файл, доступный только с правами root”

    Если он, как вы говорите, «должен запускаться при запуске на непривилегированной учетной записи пользователя», тогда он обязательно будет иметь доступ ко всем файлам, к которым имеет доступ доступная учетная запись без права доступа.

    Вы можете создать выделенную неуправляемую учетную запись пользователя для запуска скрипта. Установите разрешения для файла секретного ключа, чтобы только эта специальная учетная запись пользователя могла ее прочитать. Но похоже, что вам нужно запустить программу под определенной ранее существующей учетной записью пользователя, чтобы она не работала для вас.

    Существуют и другие решения, такие как запуск его в chroot() который имеет доступ к секретному ключу, но независимо от того, зависит ли это от того, что он делает, и что еще, кроме файла секретного ключа, ему нужен доступ.

    Вам не нужно будет использовать sudo в любом случае, потому что /etc/rc.local работает от имени root, поэтому вы можете напрямую подключаться к той учетной записи, которую вы в конечном счете решили запустить в программе.

    EDIT после выяснения вопроса:

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

    Понимаю. Это сильно отличается от запуска его только при запуске с использованием /etc/rc.local как вы изначально заявляли!

    Лучше всего в этом случае, вероятно, попытаться внедрить секретный ключ в двоичный файл вместо того, чтобы обращаться к нему как к внешнему файлу, иметь двоичный файл, принадлежащий root и исполняемый, но не читаемый другими пользователями (разрешения, такие как rwx--x--x . Пользователи не смогут получить доступ к ключу (если только они не rwx--x--x root в системе), но они могут запускать двоичный файл.

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

    Interesting Posts

    Исправить символические ссылки после изменения версии

    Начиная с вчерашнего обновления Debian, X11, похоже, не загружает мой файл ~ / .Xmodmap, каков был бы самый правильный способ его загрузки?

    USB-адаптер беспроводной сети не обнаружен после приостановки

    локальный IP-порт недоступен в общедоступном ip

    Является ли ссылка symlink относительно родительского каталога адресата, и если да, то почему?

    Установка общего ресурса NFS как на многих клиентских хостах

    mount: не удалось найти свободное устройство

    Использовать виртуальный хост apache для перенаправления субдомена на внутренний IP-адрес, сохраняющий переданный порт

    Воспроизведение компактных носителей

    Как запустить веб-страницу в фоновом режиме?

    Не удалось создать большой файл tar с трубкой и xargs

    Хозяин KVM, добавьте LV в гостевой

    Разработка сценария bash с использованием переменных

    Что подразумевается под оболочкой в ​​режиме «vi» или «emacs»?

    Автоматическое обновление пакетов

    Linux и Unix - лучшая ОС в мире.