-1

В системе Linux, такой как Debian, как я могу предотвратить использование установленного приложения другими пользователями, если они не введут пароль? Другие типы токенов аутентификации также приемлемы.

Я хочу запретить другим пользователям, включая root, использовать приложение, которое я установил.

3 ответа3

3

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

Однако запретить запуск исполняемого файла другим пользователям можно с помощью chmod при условии, что у вас есть право владения данным файлом: chmod 700 /some/executable/file . Это дает владельцу файла (исполняемого файла) все разрешения (чтение / запись / выполнение) и никаких прав доступа другим пользователям в системе. Хотя интуитивно понятно, что нужно всего лишь удалить разрешение на выполнение, пользователь все равно сможет скопировать исполняемый файл в свой собственный каталог, а затем снова сделать его исполняемым. Поэтому разрешение на чтение также должно быть удалено.

1

Ваш вопрос до сих пор неясен.

  1. Если вы хотите "предотвратить использование установленного приложения другими пользователями" (кроме вас и root), просто защитите его 700 (или 500), как говорится в ответе Jarmund.  Это не остановит root , но вы говорите:«если пользователь root [сломает] его - это не имеет значения».  Я не понимаю вашу позицию в отношении "других пользователей".  Вы говорите:«Я хочу запретить другим пользователям… использовать приложение, которое я установил».  Это значит

    • Вы не хотите, чтобы кто - либо еще мог запускать программу.  Это нормально, если это обеспечивается паролем (который никто, кроме вас, не знал бы).
    • Вы хотите, чтобы выбранные другие пользователи могли запускать программу.  Вы хотите авторизовать выбранных пользователей, сообщив им пароль.
    • Вы хотите, чтобы выбранные другие пользователи могли запускать программу.  Вы специально хотите авторизовать выбранных пользователей, сообщив им пароль.

    ?

    Если это первая пуля, вероятно, проще всего просто выполнить chmod исполняемого файла и жить с тем фактом, что этот root сможет обойти эту защиту.

  2. Если это второй пункт, проверьте, есть ли в вашей системе ACL.  Если это так, настройте список контроля доступа, который позволяет только выбранным пользователям выполнять файл.  Конечно, это также не остановит root .

  3. Если это третий пункт - вы специально хотите использовать пароль (или если для вас действительно важно запретить доступ к root) - шифрование - это путь.  Зашифруйте свой исполняемый файл паролем, удалите незашифрованную программу из системы и сообщите пароль своим друзьям.

    Например, если ваша программа называется myprog , вы можете сделать

    openssl aes-256-cbc -e -in myprog -out mycode
    

    который попросит вас ввести пароль шифрования (дважды), а затем запишет зашифрованную копию вашей программы в mycode .  (Вы можете -e (шифровать); это по умолчанию.)  Затем вы можете написать скрипт, подобный этому:

    #!/bin/sh
    clear_prog=$(mktemp)
    chmod 700 "$clear_prog"
    openssl aes-256-cbc -d -in /path/to/mycode -out "$clear_prog"
    "$clear_prog" "$@"
    rm "$clear_prog"
    

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

1

Я хочу запретить другим пользователям, включая root, использовать приложение, которое я установил.

Правильная установка владельца и группы владельцев файла, а также его chmod не позволит нежелательным пользователям, кроме root выполнить файл. Обратите внимание, что если другие пользователи могут прочитать файл, но не могут выполнить его, они все равно могут скопировать его и изменить бит x в своей собственной копии, поэтому вы должны отключить разрешение r разрешением x если хотите предотвратить выполнение.

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

Вы можете приблизиться к этому, сохранив исполняемый файл в зашифрованном томе и разблокировав том непосредственно перед тем, как вызывать исполняемый файл, и сразу после этого закрывайте том. Однако root процесс может считывать исполняемый образ любого другого процесса через /proc , поэтому теоретически для другого root процесса теоретически возможно скопировать исполняемый файл из того, что находится в памяти. Я не уверен, возможно ли изменить это поведение Linux с помощью опции компиляции ядра, если это так, то это может быть что-то, чтобы рассмотреть.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .