Есть ли способ каким-либо образом защитить файл, чтобы другие суперпользователи НЕ МОГУТ изменять, удалять или перезаписывать его?

Usando sin tuberías;)

awk -F'[,]' '
    /^[0-9]{4}-[0-9]{2}-[0-9]{2}\s+[0-9]{2}:[0-9]{2}:[0-9]{2}/
    {var=$1" "$2}
    END{print var}
' file

1
19.05.2019, 23:24
3 ответа
  1. rootимеет доступ ко всему , поэтому в зависимости от того, кого вы называете «суперпользователями», ответ будет «возможно» или «нет».¹
  2. Для обычных пользователей вы можете:

    chown root:root /home/*/announcements/announcement-1
    chmod a-wt /home/*/announcements/announcement-1
    chmod a+r /home/*/announcements/announcement-1
    

    Значение соответственно построчно:
    а. Измените владельца вашего объявления на root
    б. Удалить бит записи и закрепления из объявления
    в. Предоставьте всем доступ только для чтения.

Примечание 1:Если ваше определение «суперпользователя» = «имеет доступ к sudo», ответ Нет!(извините! ); если что-то другое:Может быть, уточните .

4
28.04.2021, 23:41

Нет, это невозможно.

Доказательство:

  1. Самый очевидный :суперпользователь может сделать su evили создать и запустить программу, которая выполняет базовый системный вызов. После этого они могут подать команду «разблокировать», так как они могут делать то же, что и вы.
  2. В любом случае, им даже это не нужно (и поэтому бессмысленно пытаться блокировать определенные команды, такие как su ev— это также бессмысленно, потому что это все равно не сработает ). Почти проверки разрешений позволяют пользователю 0 делать все, что может делать любой другой пользователь. Есть несколько исключений (, таких как доступ к файловой системе FUSE ), но как только пользователь является root, он может просто запускать код, как и любой другой пользователь (, см. 1 ).

Обратите внимание, что под «суперпользователем» я предполагаю, что вы имеете в виду «суперпользователя», т. е. пользователя с административными привилегиями на машине. Обмануть можно несколькими способами:

  • Вы можете оставить себе права суперпользователя и разрешить другим людям доступ только к некоторым определенным командам, которые не позволяют запускать произвольный код. Например, пользователь, который может запустить sudo reboot, не является суперпользователем. Пользователь, который может запускать sudo sh, sudo teeили sudo mount, является суперпользователем.
  • Некоторые платформы безопасности, такие как SELinux, позволяют настроить доступ к учетной записи с идентификатором пользователя 0 (, то есть root ), но с ограничениями, которые не позволяют этой учетной записи делать то, что не может делать учетная запись root -. Это действительно сложно настроить правильно, и в основном это бессмысленно на практике, поскольку нет смысла давать кому-либо доступ к идентификатору пользователя 0, если они не получают от него привилегий.
  • Вы можете дать всем остальным права суперпользователя на виртуальной машине или в контейнере, но оставить права суперпользователя на хосте себе.
2
28.04.2021, 23:41

Самое близкое, что вы можете сделать без значительной работы, связанной с такими вещами, как SELinux, — это сделать файл неизменяемым с помощью:

chattr +i /path/to/file

Если для файла установлен неизменяемый флаг, никто не может записывать, добавлять, перемещать, удалять или каким-либо другим образом изменять файл на уровне файловой системы или выше без предварительного снятия неизменяемого флага. Это все еще имеет две проблемы:

  • Невозможно предотвратить сброс флага неизменяемости пользователем с root-доступом.
  • Невозможно запретить кому-либо, имеющему доступ к устройству хранения, на котором хранится файл, файловую систему, просто напрямую изменять данные файла.

Как только вы примете во внимание SELinux или другие системы MAC, вы возможно сможете делать то, что хотите, но для этого потребуется много усилий.

При всем при этом вы не должны предоставлять root-доступ людям, которым не доверяете.

Кроме того, потенциально следует отметить, что вы не можете добиться этого и в Windows, любой, у кого есть доступ к учетной записи администратора (не указана в качестве учетной записи администратора, а фактическая учетная запись «Администратор» )может обойти почти все разрешения проверяются точно так же, как это делает пользователь root в системах UNIX.

4
28.04.2021, 23:41

Теги

Похожие вопросы