Вам нужно Обязательное управление доступом . Это позволяет вам указать набор разрешений, которые ядро не позволит переопределить даже пользователю root. SELinux — одна из хорошо -известных таких систем, Smack — еще один пример, а AppArmor — третья такая система. В Linux они реализованы как Модули безопасности Linux , средства общего -назначения для управления доступом за пределами традиционной модели безопасности, подобной UNIX -. В дополнение к существующим системам общего -назначения, вы, конечно, могли бы создать свои собственные для специального назначения.
Конечно, root имеет возможность включать или выключать все средства или изменять разрешения MAC для файлов, а некоторые из этих систем даже позволяют предоставлять эти возможности не -пользователям root. Однако также возможно, в зависимости от системы, отключить эту возможность. Я знаю, что SELinux и Smack делают это возможным; Я сомневаюсь, что все LSM это делают. После отключения единственный способ восстановить возможность — перезагрузить ядро. Затем вы захотите, чтобы ваш процесс загрузки отключил эту возможность до того, как доступ пользователя будет разрешен. Если ваше ядро и процесс загрузки защищены, такая конфигурация может (по крайней мере теоретически )быть изменена только путем физического извлечения носителя для его изменения.
Например, если вы используете SMACK, вы можете:
chsmack -a _
При этом файл будет иметь специальную метку " _", которая разрешает доступ только для чтения или выполнения, но не для записи. Теперь даже root не может записать этот файл (после того, как SMACK был активирован и возможность переопределения безопасности была отключена, как упоминалось выше ).
Однако вы также должны убедиться, что ваше ядро безопасно. По умолчанию пользователю root легко разрушить ядро, потому что ядро доверяет пользователю root. Если root может просто удалить модуль безопасности, это не очень поможет. Список таких методов здесь ,но обратите внимание, что такой список никогда не может быть по-настоящему полным для всех обстоятельств.
Наконец, в зависимости от обстоятельств вам может потребоваться защитить процесс загрузки. Для машины, к которой у вас есть единственный физический доступ, это может не понадобиться, но для максимальной безопасности вам действительно нужны зашифрованные файловые системы и безопасный способ загрузки ядра, такой как UEFI Secure Boot.
Это работает нормально
sudo snap install aws-cli --classic
aws --version
aws-cli/1.16.266 Python/3.5.2 Linux/5.0.0-37-generic botocore/1.13.2
Вместо этого используйте следующие шаги:
sudo apt-get update
sudo apt-get install awscli
aws --version