Здравствуйте.
Стоит задача поднять TACACS+ с поддержкой аутентификации через ldap.
Установил из портов пакет tac_plus-4.0.4.15. Но там во флагах нет включения ldap.
Взял отсюда http://www.gazi.edu.tr/tacacs/index.php?page=download сырцы (взял пакет tac_plus_v9), пытался скомпилить, но безуспешно.
Выполняю в соответствии с инструкциями.
#./configure --with-ldap
#make tac_plus
Завершается ошибками http://pastebin.org/153568
Кто сталкивался, подскажите как скомпилить? может есть еще способ установить tacacs+ с поддержкой ldap?
Спасибо.
Можно сделать так:
В
/usr/portage/net-nds/tac_plus/tac_plus-4.0.4.15.ebuild
заменить cтроку:
IUSE="debug finger tcpd skey"
на
IUSE="debug finger tcpd skey ldap"
После
`use_with tcpd libwrap`
добавить
`use_with ldap ldap`
Потом
ebuild /usr/portage/net-nds/tac_plus/tac_plus-4.0.4.15.ebuild digest
По хорошему лучше вынести ебилд в локальный оверлей, но на пробу и так сойдет.
Можно так же сконфигурить пакет руками со следующими флагами:
./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --libdir=/usr/lib64 --without-skey --with-libwrap --with-ldap --disable-finger --disable-debug
После этих действий теперь действительно показывает,что пакет tac_plus скомпилен с ldap.
# equery uses tac_plus
[ Searching for packages matching tac_plus... ]
[ Colour Code : set unset ]
[ Legend : Left column (U) - USE flags from make.conf ]
[ : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for net-nds/tac_plus-4.0.4.15 ]
U I
- - debug : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml
- - finger : Adds support for checking user counts via fingering the NAS
+ + ldap : Adds LDAP support (Lightweight Directory Access Protocol)
- - skey : Enable S/Key (Single use password) authentication support
+ + tcpd : Adds support for TCP wrappers
В /etc/tac_plus/tac_plus.conf добавлена строчка для аутентификации через ldap
accounting file = /var/log/tac_plus.log
key = 12345 # ваш секретный ключ
default authentication = ldap://127.0.0.1
...
При рестарте /etc/init.d/tac_plus restart не запускается, а в логах пишет
# tail /var/log/tac_plus.log
Fri Apr 16 19:17:00 2010 [25896]: Reading config
Fri Apr 16 19:17:00 2010 [25896]: Error expecting 'file' but found 'ldap' on line 4
Т.е. такакс не понимает значение ldap, а хочет,чтобы я ему указал на фал (/etc/passwd).
Причем я скачивал оригинальные сырцы ftp://ftp.shrubbery.net/pub/tac_plus ( версию tacacs±F4.0.4.19) и там в configure --help нет опции --with-ldap.
Видимо ldap тока в пропатченых версиях, которые не собираются:(
Написать ебилд 15 минут. Давай исходники.
Я конечно попробую ебилд сделать. Сейчас читаю как это делать. Но как я понимаю ебилд это же просто сценарий для сборки пакета, т.е при сборки выплозут те же ошибки, что и при выполнении команды make tac_plus вручную?
Я создал ebuild изменив оригинальный. Он выглядит так.
cat /root/portage/net-nds/tac_plus/tac_plus-9a.ebuild
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-nds/tac_plus/tac_plus-4.0.4.15.ebuild,v 1.2 2008/05/11 13:11:58 ulm Exp $
DESCRIPTION="An updated version of Cisco's TACACS+ server"
HOMEPAGE="http://www.shrubbery.net/tac_plus/"
SRC_URI="ftp://localhost/pub/tac_plus_9a.tar.gz"
LICENSE="as-is"
SLOT="0"
KEYWORDS="~x86"
IUSE="debug finger tcpd skey ldap"
DEPEND="skey? ( >=sys-auth/skey-1.1.5-r1 )
tcpd? ( sys-apps/tcp-wrappers )"
src_compile() {
econf
`use_with skey`
`use_with tcpd libwrap`
`use_with ldap ldap`
`use_enable finger`
`use_enable debug`
|| die "econf failed"
emake || die
}
src_install() {
make DESTDIR="${D}" install || die
dodoc CHANGES FAQ
newinitd "${FILESDIR}/tac_plus.init" tac_plus
newconfd "${FILESDIR}/tac_plus.confd" tac_plus
insinto /etc/tac_plus
newins "${FILESDIR}/tac_plus.conf" tac_plus.conf || die
Выполняю digest
#ebuild /root/portage/net-nds/tac_plus/tac_plus-9a.ebuild digest
Appending /root/portage to PORTDIR_OVERLAY...
>>> Creating Manifest for /root/portage/net-nds/tac_plus
Устанавливаю
#ebuild /root/portage/net-nds/tac_plus/tac_plus-9a.ebuild install
Appending /root/portage to PORTDIR_OVERLAY...
>>> Existing ${T}/environment for 'tac_plus-9a' will be sourced. Run
>>> 'clean' to start with a fresh environment.
* tac_plus_9a.tar.gz RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]
* checking tac_plus_9a.tar.gz ;-) ... [ ok ]
* CPV: net-nds/tac_plus-9a
* REPO:
* USE: elibc_glibc kernel_linux ldap tcpd userland_GNU x86
>>> Checking tac_plus_9a.tar.gz's mtime...
>>> WORKDIR is up-to-date, keeping...
>>> Compiling source in /var/calculate/tmp/portage/net-nds/tac_plus-9a/work ...
* ERROR: net-nds/tac_plus-9a failed:
* no configure script found
*
* Call stack:
* ebuild.sh, line 54: Called src_compile
* environment, line 259: Called econf '--without-skey' '--with-libwrap' '--with-ldap' '--disable-finger' '--disable-debug'
* ebuild.sh, line 549: Called die
* The specific snippet of code:
* die "no configure script found"
*
* If you need support, post the output of 'emerge --info =net-nds/tac_plus-9a',
* the complete build log and the output of 'emerge -pqv =net-nds/tac_plus-9a'.
* This ebuild is from an overlay: '/root/portage/'
* The complete build log is located at '/var/calculate/tmp/portage/net-nds/tac_plus-9a/temp/build.log'.
* The ebuild environment file is located at '/var/calculate/tmp/portage/net-nds/tac_plus-9a/temp/environment'.
* S: '/var/calculate/tmp/portage/net-nds/tac_plus-9a/work/tac_plus-9a'
Подскажите плиз, почему он ругается no configure script found?
Хотя все файлы там есть
# ls /var/calculate/tmp/portage/net-nds/tac_plus-9a/work/tac_plus_v9a/
acct.c config.sub default_fn.c generate_passwd.c md4.h pwlib.c sendpass.c tac_plus.sql
authen.c configure default_v0_fn.c hash.c md5.c README.LDAP skey_fn.c tcpwrap.c
author.c configure.in do_acct.c INSTALL md5.h README.PAM stamp-h time_limit.c
change.log convert.pl do_author.c install-sh mschap.h regexp.3 tac_pam.c time_limit.h
CHANGES db.c dump.c ldap.c packet.c regexp.c tac_plus.1 users_guide
choose_authen.c db.h enable.c ldap.h parse.c regexp.h tac_plus.c utils.c
config.c db_mysql.c encrypt.c Makefile.in parse.h regmagic.h tac_plus.cfg
config.guess db_null.c expire.c maxsess.c programs.c report.c tac_plus.h
config.h.in db_pgsql.c expire.h md4.c pw.c sendauth.c tac_plus.init
Спасибо!
Проблема в том, что он даже так не собирается.
У меня выдает:
gcc -g -O2 -DTACPLUS_PIDFILE=\"/var/run/tac_plus.pid\" -c -o acct.o acct.c
In file included from acct.c:20:
tac_plus.h:711: ошибка: несовместимые типы для ‘sys_errlist’
/usr/include/bits/sys_errlist.h:28: ошибка: здесь была предыдущая декларация ‘sys_errlist’
acct.c: В функции ‘accounting’:
acct.c:69: предупреждение: несовместимая неявная декларация внутренней функции ‘free’
acct.c: В функции ‘account’:
acct.c:168: предупреждение: несовместимая неявная декларация внутренней функции ‘free’
make: *** [acct.o] Ошибка 1
Исходники принадлежат следующим пакетам:
$ equery b /usr/include/bits/sys_errlist.h
sys-libs/glibc-2.10.1-r1 (/usr/include/bits/sys_errlist.h)
$ equery b acct.c
sys-kernel/gentoo-sources-2.6.31-r10 (/usr/src/linux-2.6.31-gentoo-r10/kernel/acct.c)
Не говорит ли о том, что прога 2001-го года и исходнички для нее шибко новые?
Author : Harpes Patrick (patrick.harpes@tudor.lu)
Jahnen Andreas (andreas.jahnen@tudor.lu)
Date : 16.03.2001
В общем я нашел какая ошибка мешала удачно скомпилиться.
#./configure --with-ldap
#make tac_plus
Вывод make tac_plus содержал такие строчки
config.c:112: error: static declaration of ‘nopasswd_str’ follows non-static declaration
parse.h:21: error: previous declaration of ‘nopasswd_str’ was here
Надо отредактировать config.c. Ищем там 112 строчку и редактируем
До
static char *nopasswd_str = "nopassword";
После
char *nopasswd_str = "nopassword";
Потом вновь запускаю make tac_plus. Все проходит удачно.
#make install
Все ок.
Появиться время, соберу ebuld, чтобы не мучиться потом.
Спасибо большое за участие:)