root
имеет доступ ко всему , поэтому в зависимости от того, кого вы называете «суперпользователями», ответ будет «возможно» или «нет».¹ Для обычных пользователей вы можете:
chown root:root /home/*/announcements/announcement-1
chmod a-wt /home/*/announcements/announcement-1
chmod a+r /home/*/announcements/announcement-1
Значение соответственно построчно:
а. Измените владельца вашего объявления на root
б. Удалить бит записи и закрепления из объявления
в. Предоставьте всем доступ только для чтения.
Примечание 1:Если ваше определение «суперпользователя» = «имеет доступ к sudo», ответ Нет!(извините! ); если что-то другое:Может быть, уточните .
Нет, это невозможно.
Доказательство:
su ev
или создать и запустить программу, которая выполняет базовый системный вызов. После этого они могут подать команду «разблокировать», так как они могут делать то же, что и вы. su ev
— это также бессмысленно, потому что это все равно не сработает ). Почти проверки разрешений позволяют пользователю 0 делать все, что может делать любой другой пользователь. Есть несколько исключений (, таких как доступ к файловой системе FUSE ), но как только пользователь является root, он может просто запускать код, как и любой другой пользователь (, см. 1 ). Обратите внимание, что под «суперпользователем» я предполагаю, что вы имеете в виду «суперпользователя», т. е. пользователя с административными привилегиями на машине. Обмануть можно несколькими способами:
sudo reboot
, не является суперпользователем. Пользователь, который может запускать sudo sh
, sudo tee
или sudo mount
, является суперпользователем. Самое близкое, что вы можете сделать без значительной работы, связанной с такими вещами, как SELinux, — это сделать файл неизменяемым с помощью:
chattr +i /path/to/file
Если для файла установлен неизменяемый флаг, никто не может записывать, добавлять, перемещать, удалять или каким-либо другим образом изменять файл на уровне файловой системы или выше без предварительного снятия неизменяемого флага. Это все еще имеет две проблемы:
Как только вы примете во внимание SELinux или другие системы MAC, вы возможно сможете делать то, что хотите, но для этого потребуется много усилий.
При всем при этом вы не должны предоставлять root-доступ людям, которым не доверяете.
Кроме того, потенциально следует отметить, что вы не можете добиться этого и в Windows, любой, у кого есть доступ к учетной записи администратора (не указана в качестве учетной записи администратора, а фактическая учетная запись «Администратор» )может обойти почти все разрешения проверяются точно так же, как это делает пользователь root в системах UNIX.