Hudson не может использовать пользователя / группу unix для аутентификации - PullRequest
3 голосов
/ 12 января 2011

Я пытаюсь использовать базу данных пользователей / групп Unix в качестве области безопасности Гудзона.Сервер Linux использует NIS для управления пользователями.Моя учетная запись может войти на сервер hudson через ssh.

И сервер hudson работает от пользователя 'hudson', который также является членом группы 'shadow', поэтому hudson мог читать / etc / shadow.И я протестировал конфигурацию, используя кнопку «test», hudson говорит мне, что она работает хорошо.

Но я не могу использовать свою учетную запись unix и пароль для входа на сервер hudson.

И я нашелниже исключение java в журнале hudson,

Jan 12, 2011 8:23:42 AM hudson.security.AuthenticationProcessingFilter2 onUnsuccessfulAuthentication
INFO: Login attempt failed
org.acegisecurity.BadCredentialsException: pam_authenticate failed : Authentication failure; nested exception is org.jvnet.libpam.PAMException: pam_authenticate failed : Authentication failure
    at hudson.security.PAMSecurityRealm$PAMAuthenticationProvider.authenticate(PAMSecurityRealm.java:100)
    at org.acegisecurity.providers.ProviderManager.doAuthentication(ProviderManager.java:195)
    at org.acegisecurity.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:45)
    at org.acegisecurity.ui.webapp.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:71)
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:252)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:66)
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:195)
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368)
    at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
    at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
    at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
    at java.lang.Thread.run(Thread.java:595)
Caused by: org.jvnet.libpam.PAMException: pam_authenticate failed : Authentication failure
    at org.jvnet.libpam.PAM.check(PAM.java:105)
    at org.jvnet.libpam.PAM.authenticate(PAM.java:123)
    at hudson.security.PAMSecurityRealm$PAMAuthenticationProvider.authenticate(PAMSecurityRealm.java:90)
    ... 18 more

Обновление от 17 января ,

Хост - RHEL 4.5, и я создал пользователя и группу shadow , затем добавьте hudson в группу shadow .

-bash-3.00$ cat  /etc/redhat-release 
Red Hat Enterprise Linux WS release 4 (Nahant Update 5)
-bash-3.00$ ll /etc/shadow
-r--r-----  1 root shadow 1114 Jan  4 11:37 /etc/shadow
-bash-3.00$ cat /etc/group |grep shadow
shadow:x:44:hudson

Я также попытался настроить hudson на другом хосте RHEL 4.8.На этот раз я запустил hudson с правами суперпользователя,

kzhu0@pek-wb-rhws4_32:~$ ps -ef|grep hudson
root     18764 29161  0 Jan14 pts/5    00:00:33 /usr/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DHUDSON_HOME=/var/lib/hudson -jar /usr/lib/hudson/hudson.war --logfile=/var/log/hudson/hudson.log --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
kzhu0    22404 18833  0 10:52 pts/2    00:00:00 grep hudson
kzhu0@pek-wb-rhws4_32:~$ cat /etc/redhat-release 

Но мне все еще не повезло заставить работать группу Unix user / password.И я не могу найти сообщения об ошибках pam в / var / log / messages и / var / log / secure.Похоже, что hudson выдает исключение, прежде чем использовать pam для аутентификации.Red Hat Enterprise Linux WS выпуск 4 (обновление Nahant 8)

Ответы [ 3 ]

5 голосов
/ 18 января 2011

Я нашел решение после отладки кода libpam4j, который используется hudson для безопасности PAM.

  1. имя службы должно быть ' sshd ' в моем случае, потому что я хочу использовать NIS для проверки подлинности. alt text RHEL 4.x использует pam 0.77, это строго зависит от имени службы указано Гудзоном. Однако мой Ubuntu 10.04 принимает любое бессмысленное имя сервиса, которое использует pam 1.1.1.
  2. пользователь, который запускает hudson, должен иметь разрешение на чтение служебного файла pam, /etc/pam.d/sshd - файл в моем случае
3 голосов
/ 30 марта 2011

В моем случае в Ubuntu 10.04 для имени службы пришлось использовать ssh вместо sshd

0 голосов
/ 08 апреля 2015

Я боролся с этой проблемой в течение многих часов.В конце концов, что сработало для меня: 1. Добавьте пользователя 'hudson' в корневую и теневую группы. 2. Установите sshd (отсутствует в /etc/pam.d).3. Установите для службы PAM вход в систему.

Затем я смогу войти в Hudson с учетной записью Unix и выполнить сборку как пользователь Unix.

Я думаю, что точка 1 - это та, которая исправила проблему.

...