Запустите sudo -l
от имени обычного пользователя, чтобы просмотреть действующие параметры.
Включает ли вывод env_reset
? Если да, то при прохождении sudo
будет сохранен только краткий список безопасных/необходимых переменных окружения. Вы можете использовать ключевые слова env_check
и/или env_keep
в файле sudoers
, чтобы указать переменные среды, которые будут разрешены через sudo
.
Включает ли вывод always_set_home
? Если это так, то переменная среды $HOME
будет указывать на домашний каталог целевого пользователя, то есть /root
в вашем случае. В результате результирующая оболочка будет запускать /root/.bashrc
, а не вашу личную, и аналогичным образом все программы будут искать свои пользовательские -конфигурационные файлы в каталоге /root/
, а не в вашем личном домашнем каталоге.
Если sudo -s
использует корневой .bashrc
, а не ваш личный, то always_set_home
скорее всего действует (или у вас странный дистрибутив с драконовскими модулями PAM или что-то в этом роде ). В этом случае используйте visudo
для редактирования файла sudoers и добавьте одну из следующих строк (восклицательный знак перед названием параметра означает «не»):
Defaults !always_set_home
отключает параметр для всех пользователей. Defaults>root !always_set_home
отключает его для всех переходов к пользователю root, кем бы ни был первоначальный пользователь. Defaults:johndoe !always_set_home
отключает его для переходов, где johndoe
— только исходный пользователь. Порядок имеет значение :Последняя настройка имеет преимущество, поэтому, если в вашем файле sudoers
есть какие-либо существующие Defaults
строки, вы должны добавить свои настройки после них.
А если соединить su
после sudo
, будут применяться собственные правила, которые обычно не настраиваются. Поведение (и даже доступность )su -p
или su -m
различаются в разных дистрибутивах и версиях Linux.
sudo su
означает переключение с вашего обычного пользователя на root, а затем снова с root на root, что максимизирует шансы нарушения тщательно -настроенных настроек персональной среды с небольшой выгодой. С помощью sudo -s
вы можете добиться того же, либо напрямую, либо с некоторой настройкой параметров Defaults
в файле sudoers
, в зависимости от ваших предпочтений и выбора дистрибутива Linux.
sudo su -
, с другой стороны, является устаревшим способом сказать: «Я явно хочу, чтобы среда была такой же, как если бы целевой пользователь (, то есть root ), вошел в систему напрямую; я не хочу, чтобы след моего личного окружения, чтобы остаться в результирующем сеансе». Если у вас есть версия sudo
, выпущенная в этом тысячелетии, вы можете вместо этого использовать sudo -i
.
В 2010-х единственными причинами использования sudo su
или sudo su -
, вероятно, были мышечная память, следование устаревшим советам или работа с действительно старыми системами.Вероятно, вам следует разучить эти две команды.
debuild
вызывает lintian
напрямую, поэтому у него есть возможность передавать ему аргументы. pdebuild
нет.
Если вы хотите добавить вызов lintian
к вашему запуску pdebuild
, вы обычно добавляете хук pbuilder
и указываете там параметры. См. /usr/share/doc/pbuilder/examples/B90lintian
для примера хука и Как запустить lintian из pbuilder -dist? для получения подробной информации о том, как его использовать.
Вот моя расширенная версия B90lintian
, которая поддерживает передачу опций в lintian:
#!/bin/bash
set -e
BUILDDIR="${BUILDDIR:-/tmp/buildd}"
if [ "$LINT" = 1 ] || [ -n "$LINTOPTS" ]; then
apt-get install -y "${APTGETOPT[@]}" lintian
# Because pbuilder has not home directory, calling su - pbuilder will print
# su: warning: cannot change directory to /nonexistent: No such file or directory
# To avoid that warning and to provide the proper current working directory for any
# relative file names used in LINTOPTS, set pbuilder's home directory to source
# directory, which is the (only) subdirectory of the build directory
usermod --home "$BUILDDIR"/*/ pbuilder
echo "I: start of lintian output"
# use this version if you want lintian to fail the build
#su -c "lintian -I --show-overrides $LINTARGS $BUILDDIR/*.changes" - pbuilder
# use this version if you don't want lintian to fail the build
su -c "lintian -I --show-overrides $LINTOPTS $BUILDDIR/*.changes; :" - pbuilder
echo "I: end of lintian output"
fi
Переменные окружения LINT
и LINTOPTS
могут использоваться для вызова lintian и передачи ему некоторых параметров.