Как препятствовать тому, чтобы schroot сверхизбавил passwd файл, и файлы других уже представляют в chrooted системе?

Я думаю функция, которую Вы ищете, назван совместным использованием соединения. Добавьте это к Вашему $HOME/.ssh/config файл:

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r

выборка № 1 от SSH Может Сделать Это? Подсказки по производительности для Работы с Удаленными серверами

К счастью, OpenSSH имеет функцию, которая делает его намного более мгновенным для получения другого терминала на сервере, с которым Вы уже подключены: совместное использование соединения.

выборка № 2

Общие соединения не являются просто благом с несколькими окнами терминала; они также делают копирование файлов к и от удаленных серверов бриз. SSH к серверу и затем используют команду scp для копирования файла в него, scp, при использовании существующего соединения SSH ‒... Соединения также совместно используются с rsync, мерзавцем и любой другой командой, которая использует SSH для соединения.

Ссылки

5
13.04.2017, 15:37
2 ответа

Я создал второй профиль под названием foo ; Вы могли бы просто сделать это в профиле по умолчанию . Профили подкаталогии / etc / stchroot / , например / etc / schroot / foo / , / etc / schroot / по умолчанию / .

diff -ruw default/fstab foo/fstab
--- default/fstab       2014-05-25 14:03:42.000000000 -0700
+++ foo/fstab   2014-04-03 16:36:42.644336952 -0700
@@ -7,7 +7,7 @@
 /sys            /sys            none    rw,bind         0       0
 /dev            /dev            none    rw,bind         0       0
 /dev/pts        /dev/pts        none    rw,bind         0       0
-/home           /home           none    rw,bind         0       0
+#/home           /home           none    rw,bind         0       0
 /tmp            /tmp            none    rw,bind         0       0

 # It may be desirable to have access to /run, especially if you wish
diff -ruw default/nssdatabases foo/nssdatabases
--- default/nssdatabases        2014-05-25 14:03:42.000000000 -0700
+++ foo/nssdatabases    2014-04-03 16:36:55.760398695 -0700
@@ -1,11 +1,11 @@
 # System databases to copy into the chroot from the host system.
 #
 # <database name>
-passwd
-shadow
-group
-gshadow
-services
-protocols
-networks
-hosts
+#passwd
+#shadow
+#group
+#gshadow
+#services
+#protocols
+#networks
+#hosts

/ etc / default / copyfiles также существует, но я оставил туда, поскольку вы обычно делают , хотите скопировать /etc/resolv.conf .

1
27.01.2020, 20:39

Шрут делает несколько вещей, чтобы сделать chrooted-систему пригодной для использования. Это задание выполняется сценариями в /etc/schroot/setup.d/ .Эти действия конфигурируются файлами в каталоге профиля schroot, что указывается ключом profile в конфигурации schroot и по умолчанию / etc / schroot / default / (конфигурация schroot также может указывать другие расположения файлов, подробности см. В руководстве). Действия при запуске включают:

  • Смонтируйте некоторые файловые системы, как указано в файле fstab в каталоге профиля.
  • Скопируйте файлы из хост-системы в chroot. Список файлов для копирования считывается из файла copyfiles из каталога профиля.
  • Перезаписать базы данных NSS в chroot, прочитанные с хоста. Список перезаписываемых баз данных считывается из файла nssdatabases из каталога профиля. Это похоже на копирование файлов, но не только, например, скопируйте / etc / passwd в chroot, он также получает записи из других источников, таких как NIS или LDAP.

По умолчанию copyfiles содержит /etc/resolv.conf , чтобы гарантировать, что программы в chroot будут иметь доступ к DNS, как и те, которые находятся вне chroot. Настройка chroot по умолчанию предполагает, что вам нужны одни и те же пользователи внутри и вне chroot, поэтому nssdatabases содержит все обычные базы данных, включая passwd , и профиль по умолчанию fstab содержит не только файловые системы, такие как / proc и / dev , которые необходимы для работы многих программ, но и / home .

Если вы не хотите ничего перезаписывать в chroot, объявите профиль schroot без файлов копирования и nssdatabases . Вы, вероятно, захотите иметь fstab , который монтирует все необходимое, но не / home .

Более полезная конфигурация schroot будет воспроизводить учетные записи пользователей и их домашние каталоги, но не системные учетные записи. Воспроизведение системных учетных записей неудачно, потому что внутри и вне chroot могут быть разные учетные записи. Например, Debian и их производные используют динамически назначаемые учетные записи для большинства системного программного обеспечения,поэтому соответствие между именем пользователя и номером для большинства системных учетных записей зависит от порядка, в котором были установлены программы. Для этого удалите passwd , shadow , group и gshadow из файла nssdatabases и напишите свой собственный скрипт, который добавляет только те учетные записи, которые необходимо скопировать.

Вы можете написать следующий сценарий как /etc/schroot/setup.d/20appendaccounts для копирования только учетных записей в реальном диапазоне пользователей.

#!/bin/sh
## Append users and groups from the host.
set -e

. "$SETUP_DATA_DIR/common-data"
. "$SETUP_DATA_DIR/common-functions"
. "$SETUP_DATA_DIR/common-config"

if [ -z "$SETUP_NSSDATABASES" ] || ! [ -f "$SETUP_NSSDATABASES" ]; then
  exit 0
fi

DATABASES='group gshadow passwd shadow'

want () {
  grep -qx "#>>$1" "$SETUP_NSSDATABASES"
}

start () {
  sed -i -e '/^#begin added by schroot$/,/^#end added by schroot$/d' "$tmpfile"
  {
    echo '#begin added by schroot'
    getent "$db" | case $db in
      ## passwd, group: copy the range for local human accounts
      passwd) awk -F : "$FIRST_UID <= \$3 && \$3 <= $LAST_UID";;
      group) awk -F : "$FIRST_GID <= \$3 && \$3 <= $LAST_GID";;
      ## shadow, gshadow: copy only entries with a password hash
      shadow|gshadow) awk -F : '$2 ~ /^\$/';;
    esac
    echo '#end added by schroot'
  } >>"$tmpfile"
}

iterate () {
  for db in $DATABASES; do
    want "$db" || continue
    dbfile=$CHROOT_PATH/etc/$db
    tmpfile=$dbfile.$$
    [ -f "$dbfile" ] || continue
    cp -f -- "$dbfile" "$tmpfile"
    "$@"
    if ! [ -s "$tmpfile" ] || cmp -s -- "$dbfile" "$tmpfile"; then
      rm -f -- "$tmpfile"
    else
      mv -- "$tmpfile" "$dbfile"
    fi
  done
}

case $STAGE in
  setup-start|setup-recover)
    FIRST_UID=1000
    LAST_UID=29999
    FIRST_GID=1000
    LAST_GID=29999
    if [ -e /etc/adduser.conf ]; then . /etc/adduser.conf; fi
    umask 600
    iterate start;;
esac

Отредактируйте файл nssdatabases вашего профиля, чтобы он содержал следующие строки, или поместите setup.nssdatabases = default / nssdatabases-append в профиль schroot и напишите следующие строки в по умолчанию / nssdatabases .

#>>passwd
#>>shadow
#>>group
#>>gshadow
services
protocols
networks
hosts

Schroot не перезаписывает никакие файлы в вашем домашнем каталоге в своей конфигурации по умолчанию. - preserve-environment относится к переменным среды и здесь не имеет значения.

4
27.01.2020, 20:39

Теги

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