Я должен допустить, что пользователь изменяет некоторые файлы sudo, которые имеют только доступ только для чтения.
Например, я хочу допустить, что пользователь 'hosteditor' изменяет '/etc/hosts' 'файл. Я добавил к sudoers, следуют за строкой:
hosteditor ALL=(root) /usr/bin/vim /etc/hosts
Теперь, пользователь hosteditor может использовать энергию только для изменения/etc/hosts файл. Но если они пользователь при изменении файла входят!/bin/sh он заставит предоставление выполнять все команды с корневым разрешением.
Что я должен, чтобы сделать, чтобы допустить, что пользователь изменяет только определенный файл без системы взлома возможности.
După ce am studiat această problemă, am găsit a treia variantă de rezolvare a acestei probleme.
Prin editarea sudoerilor putem acorda utilizatorului permisiunea de a rula sudoedit . Este o modalitate sigură de a modifica fișierele numai root, fără posibilitatea de hack. Deci, răspunsul este
hosteditor ALL=(root) sudoedit /etc/hosts
Не используйте для этого SUDO. Вместо этого добавьте хостедитора в группу и делегируйте доступ на запись этой группе, используя списки управления доступом к файлам POSIX. Найдите на http://linux.die.net/man/1/setfacl команду для управления списками контроля доступа и http://linux.die.net/man/5 / acl для фактической записи ACL в Linux. Это, конечно, предполагает, что вы используете файловую систему и систему аутентификации, которые поддерживают списки контроля доступа к файлам POSIX. Чтобы убедиться, что разрешения остаются в силе,вы, вероятно, захотите делегировать применение ACL инструменту управления конфигурацией. Puppet может выполнять списки ACL POSIX (см. https://github.com/dobbymoodge/puppet-acl ). CFEngine может это сделать (см. https://auth.cfengine.com/archive/manuals/cf-manuals/cf2-Reference#acl ), и я уверен, что Chef тоже.
Другой вариант - предоставить команду или службу, которую хостедитор может использовать для создания файла / etc / hosts из базы данных / электронной таблицы и шаблона. Это повысит гибкость и позволит вам добавлять элементы управления в команду или службу.
Я уверен, что есть и другие хорошие способы решить эту проблему, включая отдельный экземпляр DNS (или даже отдельное представление DNS, если используется BIND9) и предоставление учетной записи хостедитора возможности добавлять и удалять записи с помощью NSUPDATE команда (см. http://linux.die.net/man/8/nsupdate )
Удачи.
Из vi можно запускать любую команду, включая оболочку, поэтому разрешение пользователю запускать vi через sudo небезопасно. Более безопасным вариантом было бы установить разрешения, как предлагает предыдущий ответ. Если вы не можете этого сделать, настройте sudo, чтобы разрешить копирование в файл:
Cmnd_Alias CP_ETC_HOSTS = / bin / cp -v ./hosts / etc / hosts
Они могут редактировать копию файла и копировать свои измененная версия на /etc/hosts.