Возможности Linux для изменения файлов, принадлежащих пользователю root?

Если вы используете bash, краткий ответ — поместить экспортированные переменные в один из существующих личных файлов запуска (или инициализации ). Переменные, экспортированные в ваш терминал, теряются, когда вы его закрываете. Переменные, экспортированные в ваш сценарий, теряются при выходе из вашего сценария.

Существуют и другие файлы запуска, которые могут существовать или не существовать, но это наиболее распространенные:

  • ~/.bashrc
    • выполняется bash для не -оболочек входа в систему
  • ~/.bash_profile
    • выполняется bash для интерактивных оболочек входа в систему
    • ~/.profileозначает не читается , если этот файл существует
    • также читается как ~/.bashrcв некоторых системах
    • требуется (выход и )вход для повторного чтения файла
  • ~/.profile
    • выполняется интерпретатором команд для оболочек входа в систему
    • является не прочитанным , когда ~/.bash_profileсуществует
    • также читается как ~/.bashrcв некоторых системах
    • требуется (выход из системы и )вход для повторного чтения файла

Или вы создаете новый файл запуска со всеми своими личными настройками и читаете его (исходный код )с помощью source /path/to/myenvironmentили . /path/to/myenvironmentлибо в командной строке / в ваших скриптах, либо в одном из файлов запуска упомянутый выше.

Некоторые примеры файлов запуска находятся в пакете bash-docв Ubuntu/Debian (, устанавливаются с помощьюsudo apt-get install bash-doc)и устанавливаются в /usr/share/doc/bash/examples/startup-files/

.
1
14.07.2020, 21:00
1 ответ

Нет. Существует возможность, которая позволяет получать доступ к произвольным файлам независимо от разрешений (CAP_DAC_OVERRIDE), но это почти эквивалентно предоставлению root-доступа (, если вы можете перезаписать /etc/passwd, с большинством конфигураций вы находитесь в ):это полезно только для процессов, которые выполняют определенную задачу (, например программу резервного копирования ), не предоставлять пользователю. И нет возможности, позволяющей обойти разрешения для определенных файлов. :возможности являются булевыми, они не параметризуются списком файлов. В любом случае это было бы практически бессмысленно, потому что уже существует механизм, позволяющий пользователям записывать в определенные файлы разрешения :.

Создайте группу, добавьте пользователей в группу и предоставьте группе доступ на запись к файлу.

addgroup fstab-writers
adduser alice fstab-writers     # Note that this only takes effect when alice logs in, not in her already-running session(s).
chgrp fstab-writers /etc/fstab
chmod g+w /etc/fstab

Если определенные права доступа к файлу требуются нескольким группам, используйте список управления доступом вместо chgrpи chmod.

setfacl -m g:fstab-writers:rw /etc/fstab

Обратите внимание, что если системная программа перезаписывает рассматриваемый файл, нет гарантии, что она воспроизведет групповое владение или список контроля доступа. Но если это так, вам, вероятно, не следует изменять этот файл вручную.

Также обратите внимание, что как для /etc/fstab, так и для /etc/resolv.confсуществуют хорошо -установленные механизмы, не требующие предоставления пользователям прав на запись.

  • Предоставление пользователю разрешения на запись в /etc/fstabэквивалентно разрешению запускать произвольные команды от имени root. Самый простой способ — смонтировать образ файловой системы с исполняемым файлом setuid root, но есть и другие. Если вы хотите разрешить пользователям монтировать файловые системы,они могут использовать udisks (, которые используются окружением рабочего стола под капотом )илиpmount.
  • /etc/resolv.confобычно автоматически управляется NetworkManager , которым могут управлять не -пользователи root. Это то, что окружение рабочего стола использует под капотом, а также имеет интерфейс командной строки(nmcli). Даже при отсутствии NetworkManager многие дистрибутивы поставляют resolvconf для автоматического управления им при изменении сетевого подключения.
2
18.03.2021, 23:19

Теги

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