Передача параметров в lintian в pdebuild

Запустите 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 -, вероятно, были мышечная память, следование устаревшим советам или работа с действительно старыми системами.Вероятно, вам следует разучить эти две команды.

0
24.06.2021, 20:02
2 ответа

debuildвызывает lintianнапрямую, поэтому у него есть возможность передавать ему аргументы. pdebuildнет.

Если вы хотите добавить вызов lintianк вашему запуску pdebuild, вы обычно добавляете хук pbuilderи указываете там параметры. См. /usr/share/doc/pbuilder/examples/B90lintianдля примера хука и Как запустить lintian из pbuilder -dist? для получения подробной информации о том, как его использовать.

0
28.07.2021, 11:22

Вот моя расширенная версия 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 и передачи ему некоторых параметров.

0
28.07.2021, 11:22

Теги

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