Если вы используете bash, краткий ответ — поместить экспортированные переменные в один из существующих личных файлов запуска (или инициализации ). Переменные, экспортированные в ваш терминал, теряются, когда вы его закрываете. Переменные, экспортированные в ваш сценарий, теряются при выходе из вашего сценария.
Существуют и другие файлы запуска, которые могут существовать или не существовать, но это наиболее распространенные:
~/.bashrc
~/.bash_profile
~/.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/
Нет. Существует возможность, которая позволяет получать доступ к произвольным файлам независимо от разрешений (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 для автоматического управления им при изменении сетевого подключения.