Есть ли надежный способ заставить несколько учетных записей пользователей вести себя как root, кроме sudo?

Когда ветки удаляются удаленно, вам нужно обрезать ваш локальный репозиторий — проще всего это сделать с помощью

git fetch -p

Это обновит ваш локальный репозиторий со всеми изменениями, внесенными в удаленный репозиторий. , но без обновления какой-либо из ваших локальных веток. После запуска

git branch --remote

больше не будет показывать удаленную удаленную ветку.

git-репозитории полны как в вашей собственной системе, так и на сервере. Поэтому, когда вы впервые клонируете репозиторий, вы получаете полную копию, и ваш локальный git «знает» обо всех удаленных ветках, а также о ваших локальных ветках. Эта информация не синхронизируется автоматически, поэтому, когда ваш коллега удалил ветку release на сервере, ваш локальный репозиторий git не потерял своего понятия об удаленной ветке release.Синхронизация с git fetch обновляет всю локальную информацию в удаленных ветках, чтобы они соответствовали состоянию на сервере (строго говоря, удаленному репозиторию, где бы он ни находился), но не удаляя никакой локальной информации в удаленных ветках. Сокращение с помощью git fetch -p (или git fetch --prune или git remote prune) удаляет локальную информацию об удаленных ветвях, которые были удалены.

0
14.08.2017, 22:03
2 ответа

Если вы используете sudo -s, ваш $HOMEне обновляется, поэтому история вашей оболочки хранится в вашей собственной учетной записи.

(Имейте в виду, что другие файлы конфигурации/истории, такие как созданные vim, также создаются с правами root. Это означает, что в вашем домашнем каталоге могут оказаться файлы, принадлежащие пользователю root. Это может создать «интересные» ситуации, когда вы хотите изменить их, не будучи root, и иногда вам нужно будет запустить что-то вроде chown -R myusername "$HOME", чтобы исправить это.)

3
28.01.2020, 02:16

Вот как мы справились с этим на предыдущем месте работы.

Во-первых, у нас был безопасный хост-бастион, на который администраторы входили для всех root-доступов к целевым машинам. На этом хосте была настроена специальная учетная запись keymaster, которая содержала закрытые ключи, соответствующие root на целевых хостах. (У нас также была система, в которой новые хосты автоматически регистрировались сами. Но это выходит за рамки здесь.)

Администраторы будут входить на этот хост-бастион с учетными записями уровня пользователя -, а затем подключаться к целевым системам.

За исключением нескольких из нас, имеющих доступ к root на самом хосте-бастионе, ни один администратор не мог фактически получить доступ к ключам напрямую; вместо этого они использовали команду connect, запускаемую под sudo (как keymaster, а не root )для подключения. Эта команда connect устанавливает переменную среды REMOTE_ADMINв качестве имени подключающегося пользователя и подключается к целевой системе как root.

Затем удаленные системы были настроены на AcceptEnv=REMOTE_ADMINв sshd_configи файлы.bashrc для установки BASH_HISTORYв ~/.bash_history-$REMOTE_ADMIN.

При такой настройке разные .bash_historyфайлы не являются защищенными записями, но они, по крайней мере, различны для не -злонамеренного оглядывания того, что произошло. Запись безопасности находится на хосте-бастионе и показывает, кто и когда подключался. (Мы также использовали двухфакторную аутентификацию для команды sudo connect.)

Кроме того, за исключением подрыва хостов, нет необходимости беспокоиться о корневом доступе за пределами назначенной системы (, будь то злонамеренный или просто для «удобства» ). И хотя ключи можно удалить, нет необходимости делать это только потому, что чей-то уровень доступа изменился.

Вы можете использовать все это решение или его часть; просто иметь .bash_history-$SUDO_USERможет быть достаточно, в зависимости от того, чего вы действительно пытаетесь достичь.

2
28.01.2020, 02:16

Теги

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