Принудительный вход без истечения срока действия для сценариев

По какой-то причине мне нужно установить сервер perforce, и я пытался автоматизировать установку, но у меня возникла глупая проблема с тем, что я не могу повторно запустить скрипт через день после истечения срока действия сеанса.

Для уточнения цели:

  • Я устанавливаю сервер Perforce на Linux, на сервере работает Debian, и я следую установке Linux (которая работает) и устанавливаю пакет helix-p4d.
  • После этого я настраиваю сервер с помощью сценария /opt/perforce/sbin/configure-helix-p4d.sh и передаю параметры сценарию в качестве опции.
  • Затем я следую рекомендациям по безопасности perforce для установки: https://www.perforce.com/manuals/p4sag/Content/P4SAG/chapter.security.html

Все приведенные ниже команды выполняются на сервере perforce.

Я кое-что прочитал, и некоторые предлагают создать билет без срока действия с помощью этой команды:

p4 login -a -p

Я попробовал и получил строку билетов для подключения:

p4 -P STRING login

И у меня спросили пароль... Я не очень понимаю, что я там делаю не так, и я не знаю, как проверить срок действия билета.

Я пробовал другие более простые вещи, такие как:

  • установка переменной P4PASSWD с помощью p4 set P4PASSWD=PASSWORD , которая, похоже, больше не работает, значение не отображается при выполнении p4 set -s
  • установка переменной P4PASSWD непосредственно в файле $HOME/p4enviro... значение отображается в p4 set -s, но p4 login по-прежнему запрашивает пароль.

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

Кто-нибудь знает, как установить пароль или билеты, чтобы он работал?

Обновлено:

Я также попытался изменить параметр безопасности конфигурации perforce, чтобы не требовать аутентификации билета, как в параметрах 3/4 (значение по умолчанию), и попробовал значения для совместимости, но я все еще не могу установить P4PASSWD.


109
2

Ответы:

Если на вашем сервере нет уровня безопасности, требующего использования входных билетов, и вы хотите использовать прямую аутентификацию по паролю для каждой команды вместо аутентификации на основе билетов, вы можете полностью игнорировать p4 login. Единственная цель p4 login — предоставить вам билет для аутентификации на основе билетов. Чтобы удалить любой существующий входной билет, который у вас может быть, выполните:

p4 logout

Затем, чтобы установить открытый текстовый пароль в вашей среде для аутентификации, выполните следующие действия:

p4 set P4PASSWD=your_password

Проверьте, работает ли он, выполнив команду, требующую аутентификации, например:

p4 changes -m1

Не запускайте p4 login, если не хотите аутентифицироваться с помощью билетов. p4 login полностью игнорирует ваше значение P4PASSWD (идея состоит в том, что если вы используете билеты для обеспечения безопасности, вы не должны устанавливать свой пароль в своей среде, поэтому все, что связано с аутентификацией на основе билетов, игнорирует / не поощряет использование P4PASSWD) и всегда будет запрашивать вам для вашего пароля.

Обратите внимание, что p4 set и p4 set -s применяются к разным пространствам имен среды; если вы устанавливаете переменную с помощью p4 set, то проверьте ее с помощью p4 set:

p4 set P4PASSWD

покажет вам значение P4PASSWD для текущего пользователя. Флаг -s устанавливает и запрашивает среду для системного пользователя в Windows.

Если сервер требует аутентификации на основе билетов (например, для счетчика security установлено значение 3, что является стандартом для администраторов, которым нужна хоть какая-то безопасность при установке Perforce), вам нужно будет запросить возможность создавать билеты с неограниченным временем ожидания. Это делается путем назначения вас group с Timeout: unlimited.


Решено

Похоже, у вашего пользователя еще не настроен неограниченный билет.

Команда p4 login -a -p даст вам билет для этого пользователя, который можно использовать на любом компьютере, но он не делает этот билет неограниченным. Чтобы изменить время ожидания билета пользователя, вам необходимо создать группу с неограниченным временем ожидания входа, а затем добавить пользователя в эту группу.

Если вы хотите сделать это в CLI, на этой странице рассказывается, как это сделать https://portal.perforce.com/s/article/2589 Но вы также можете сделать это в P4Admin с любой машины.

Войдите в P4Admin как суперпользователь. В верхнем меню нажмите кнопку «Добавить группу».

Затем в диалоговом окне «Группа» дайте ей имя (например, «Неограниченно»), нажмите «Обзор...», чтобы выбрать своего пользователя и добавить его в группу, затем установите переключатель «Неограниченно» для параметра «Продолжительность до истечения времени сеанса входа в систему».

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

Надеюсь, это поможет!