Самый основной бит - то, что Вам нужен rpmbuild инструмент, и необходимо записать файл спецификации. У меня есть следующий сценарий, который берет файл спецификации и дерево, поскольку это выглядело бы установленным на целевой машине:
#!/bin/bash
set -e
SPECFILE=$1
shift
SOURCEDIR=$1
BASEDIR=/usr/src/rpm/BUILD
[ -e ${BASEDIR} ] || BASEDIR=/usr/src/redhat/BUILD
BASENAME=$(grep -E '^Name:' $SPECFILE | awk '{ print $2 }')
VERSION=$(grep -E '^Version:' $SPECFILE | awk '{ print $2 }')
RELEASE=$(grep -E '^Release:' $SPECFILE | awk '{ print $2 }')
BUILDROOT=${BASEDIR}/${BASENAME}-${VERSION}-${RELEASE}
rm -rf ${BUILDROOT}
cp -r ${SOURCEDIR} ${BUILDROOT}
export SOURCEDIR BUILDROOT
rpmbuild --buildroot=${BUILDROOT} -bb $SPECFILE
Для получения дополнительной информации на файлах спецификации, посмотрите спецификацию спецификации об/мин.
В качестве альтернативы, если вы хотите использовать внешний PHP-скрипт, вы можете поместить в авторизацию следующее:
authorize {
update {
Tmp-String-0 := `/usr/bin/php5 -f /path/to/cpauth.php '%{User-Name}' '%{User-Password}'`
}
if (Tmp-String-0 == 'Accept') {
update control {
Auth-type := Accept
}
}
else {
reject
}
}
Затем введите «Принять» или «Отклонить».
Настройте экземпляр модуля rlm_sql.
Добавьте запрос к авторизовать {}
для получения хешированного пароля.
update control {
<password-attribute> := "%{sql:SELECT password FROM foo_table WHERE user=%{User-Name}}"
}
Атрибут пароля может быть одним из Открытый текст-пароль MD5-пароль SMD5-пароль Crypt-пароль SHA2-пароль SHA-пароль SSHA-пароль LM-пароль NT-пароль.
Затем вызовите модуль pap
. Модуль pap должен установить Auth-Type равным pap
и будет хэшировать значение User-Password для соответствия схеме, используемой для значения атрибута пароля, и сравнивать их.