Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mika/sssd
  • guillem/debian-pkg-sssd
  • john.veitch/sssd
  • jgullberg/sssd
  • gioele/sssd
  • oktay454/sssd
  • sergiodj/sssd
  • 3v1n0/sssd
  • jfalk-guest/sssd
  • sathieu/sssd
  • dpward/sssd
  • sssd-team/sssd
  • ahasenack/sssd
  • jbicha/sssd
  • yrro-guest/sssd
15 results
Show changes
Commits on Source (88)
Showing
with 133 additions and 84 deletions
......@@ -76,7 +76,7 @@ jobs:
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
if-no-files-found: ignore
name: covscan
......
......@@ -45,7 +45,7 @@ jobs:
source ../contrib/fedora/bashrc_sssd
make distcheck
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: build
......@@ -115,7 +115,7 @@ jobs:
- name: Upload main artifacts
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
if-no-files-found: ignore
name: ${{ matrix.tag }}-intgcheck
......@@ -128,7 +128,7 @@ jobs:
- name: Upload valgrind artifacts
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
if-no-files-found: ignore
name: ${{ matrix.tag }}-intgcheck-valgrind
......@@ -215,7 +215,7 @@ jobs:
pip3 install -r ./sssd/src/tests/multihost/requirements.txt
- name: Create multihost configuration
uses: DamianReeves/write-file-action@0a7fcbe1960c53fc08fe789fa4850d24885f4d84
uses: DamianReeves/write-file-action@6929a9a6d1807689191dcc8bbe62b54d70a32b42
with:
path: mhc.yml
write-mode: overwrite
......@@ -234,11 +234,12 @@ jobs:
set -ex -o pipefail
source .venv/bin/activate
export PYTHONPATH="${PYTHONPATH}:$(realpath ./sssd/src/tests/multihost)"
pytest -s --multihost-config=./mhc.yml ./sssd/src/tests/multihost/basic |& tee multihost-pytest.log
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
if-no-files-found: ignore
name: ${{ matrix.tag }}-multihost
......@@ -377,7 +378,7 @@ jobs:
--mh-config=./mhc.yaml \
--mh-log-path=$GITHUB_WORKSPACE/mh.log \
--mh-artifacts-dir=$GITHUB_WORKSPACE/artifacts \
--polarion-config=./polarion.yaml \
--polarion-config=../polarion.yaml \
--output-polarion-testcase=$GITHUB_WORKSPACE/artifacts/testcase.xml \
--collect-only . |& tee $GITHUB_WORKSPACE/pytest-collect.log
......@@ -394,14 +395,14 @@ jobs:
--mh-config=./mhc.yaml \
--mh-log-path=$GITHUB_WORKSPACE/mh.log \
--mh-artifacts-dir=$GITHUB_WORKSPACE/artifacts \
--polarion-config=./polarion.yaml \
--polarion-config=../polarion.yaml \
--output-polarion-testcase=$GITHUB_WORKSPACE/artifacts/testcase.xml \
--output-polarion-testrun=$GITHUB_WORKSPACE/artifacts/testrun.xml \
-vvv . |& tee $GITHUB_WORKSPACE/pytest.log
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
if-no-files-found: ignore
name: ${{ matrix.tag }}-system
......
......@@ -53,7 +53,7 @@ jobs:
version: 9.${{ env.COPR_PROJECT }}
- name: Upload source rpm as an artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ steps.srpm.outputs.file }}
path: ${{ steps.srpm.outputs.path }}
......@@ -117,7 +117,7 @@ jobs:
uses: actions/checkout@v4
- name: Downlooad source rpm
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: ${{ needs.prepare.outputs.srpm }}
path: .
......
......@@ -24,7 +24,7 @@ jobs:
uses: ./.github/actions/install-dependencies
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: cpp, python
queries: +security-and-quality
......@@ -39,7 +39,7 @@ jobs:
make -j$PROCESSORS
- name: Upload configuration artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: always()
with:
name: codeql-build
......@@ -49,7 +49,7 @@ jobs:
if-no-files-found: ignore
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3
python-system-tests:
runs-on: ubuntu-latest
......
......@@ -23,7 +23,6 @@ declare -r _DEPS_SH=
# Dependency list
declare -a DEPS_LIST=(
lcov
valgrind
)
......
......@@ -28,46 +28,4 @@ function rm_rf_ro()
rm -Rf -- "$@"
}
# Extract line and function coverage percentage from a "genhtml" or "lcov
# --summary" output.
# Input: "genhtml" or "lcov --summary" output
# Output: lines funcs
function lcov_summary()
{
sed -ne 's/^ *\(lines\|functions\)\.*: \([0-9]\+\).*$/ \2/p' |
tr -d '\n'
echo
}
# Check if a "genhtml" or "lcov --summary" output has a minimum coverage
# percentage of lines and functions.
# Input: "genhtml" or "lcov --summary" output
# Args: min_lines min_funcs
function lcov_check()
{
declare -r min_lines="$1"; shift
declare -r min_funcs="$1"; shift
declare lines
declare funcs
read -r lines funcs < <(lcov_summary)
((lines >= min_lines && funcs >= min_funcs)) && return 0 || return 1
}
# Check if the current user belongs to a group.
# Args: group_name
function memberof()
{
declare -r group_name="$1"
declare group_id
declare id
group_id=`getent group "$group_name" | cut -d: -f3` || return 1
for id in "${GROUPS[@]}"; do
if [ "$id" == "$group_id" ]; then
return 0
fi
done
return 1
}
fi # _MISC_SH
......@@ -4,14 +4,14 @@
# Ludek Janda <ljanda@redhat.com>, 2021.
# simmon <simmon@nplob.com>, 2021.
# seo hojin <jinswhat@naver.com>, 2021.
# 김인수 <simmon@nplob.com>, 2022, 2023.
# 김인수 <simmon@nplob.com>, 2022, 2023, 2024.
# Transtats <suanand@redhat.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n"
"POT-Creation-Date: 2024-01-12 13:01+0100\n"
"PO-Revision-Date: 2023-09-18 03:54+0000\n"
"PO-Revision-Date: 2024-02-13 09:36+0000\n"
"Last-Translator: 김인수 <simmon@nplob.com>\n"
"Language-Team: Korean <https://translate.fedoraproject.org/projects/sssd/"
"sssd-2-9/ko/>\n"
......@@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.0.2\n"
"X-Generator: Weblate 5.3.1\n"
#: src/config/SSSDConfig/sssdoptions.py:20
#: src/config/SSSDConfig/sssdoptions.py:21
......@@ -1046,7 +1046,7 @@ msgstr "클라이언트가 사용할 특정 사이트"
#: src/config/SSSDConfig/sssdoptions.py:316
msgid ""
"Maximum age in days before the machine account password should be renewed"
msgstr "시스템 계정 호를 갱신하기 전의 최대 사용 기간(일)"
msgstr "장비 계정 비밀번호를 갱신하기 전의 최대 사용 기간(일)"
#: src/config/SSSDConfig/sssdoptions.py:318
msgid "Option for tuning the machine account renewal task"
......@@ -1172,7 +1172,7 @@ msgstr "LDAP 서버에서 사용되는 스키마 유형 rfc2307"
#: src/config/SSSDConfig/sssdoptions.py:359
msgid "Mode used to change user password"
msgstr "사용자 호를 변경하는 데 사용되는 모드"
msgstr "사용자 비밀번호를 변경하는 데 사용되는 방식"
#: src/config/SSSDConfig/sssdoptions.py:360
msgid "The default bind DN"
......@@ -2117,8 +2117,8 @@ msgstr "시스템이 오프라인 상태이며 암호가 변경될 수 없습니
msgid ""
"After changing the OTP password, you need to log out and back in order to "
"acquire a ticket"
msgstr ""
"OTP 암호를 변경한 후 티켓을 받으려면 로그아웃한 후 다시 로그인해야 합니다"
msgstr "OTP 비밀번호를 변경한 후, 티켓을 받으려면 로그아웃한 후 다시 로그인해야 "
"합니다"
#: src/sss_client/pam_sss.c:730
msgid "PIN locked"
......@@ -2152,11 +2152,11 @@ msgstr "다른 스마트카드를 (다시)입력해 주세요"
#: src/sss_client/pam_sss.c:2380
msgid "New Password: "
msgstr "신규 호: "
msgstr "신규 비밀번호: "
#: src/sss_client/pam_sss.c:2381
msgid "Reenter new Password: "
msgstr "신규 호 재입력: "
msgstr "신규 비밀번호 재입력: "
#: src/sss_client/pam_sss.c:2551 src/sss_client/pam_sss.c:2554
msgid "First Factor: "
......@@ -2180,15 +2180,15 @@ msgstr "비밀번호: "
#: src/sss_client/pam_sss.c:2739 src/sss_client/pam_sss.c:2742
msgid "First Factor (Current Password): "
msgstr "첫 번째 요인 (현재 호): "
msgstr "첫 번째 요인 (현재 비밀번호): "
#: src/sss_client/pam_sss.c:2746
msgid "Current Password: "
msgstr "현재 호: "
msgstr "현재 비밀번호: "
#: src/sss_client/pam_sss.c:3103
msgid "Password expired. Change your password now."
msgstr "호가 만료되었습니다. 지금 호를 변경하십시오."
msgstr "비밀번호가 만료되었습니다. 지금 비밀번호를 변경하세요."
#: src/sss_client/ssh/sss_ssh_authorizedkeys.c:41
#: src/sss_client/ssh/sss_ssh_knownhostsproxy.c:186 src/tools/sss_cache.c:732
......
......@@ -3,10 +3,10 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Göran Uddeborg <goeran@uddeborg.se>, 2013-2014, 2020, 2021, 2022, 2023.
# Göran Uddeborg <goeran@uddeborg.se>, 2013-2014, 2020, 2021, 2022, 2023, 2024.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2018. #zanata
# Göran Uddeborg <goeran@uddeborg.se>, 2018. #zanata, 2020, 2021, 2022, 2023.
# Göran Uddeborg <goeran@uddeborg.se>, 2019. #zanata, 2020, 2021, 2022, 2023.
# Göran Uddeborg <goeran@uddeborg.se>, 2018. #zanata, 2020, 2021, 2022, 2023, 2024.
# Göran Uddeborg <goeran@uddeborg.se>, 2019. #zanata, 2020, 2021, 2022, 2023, 2024.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2020. #zanata
# Luna Jernberg <bittin@reimu.nl>, 2022.
msgid ""
......@@ -14,7 +14,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: sssd-devel@lists.fedorahosted.org\n"
"POT-Creation-Date: 2024-01-12 13:01+0100\n"
"PO-Revision-Date: 2023-08-30 14:21+0000\n"
"PO-Revision-Date: 2024-03-06 08:35+0000\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/sssd/"
"sssd-2-9/sv/>\n"
......@@ -23,7 +23,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.18.2\n"
"X-Generator: Weblate 5.4\n"
#: src/config/SSSDConfig/sssdoptions.py:20
#: src/config/SSSDConfig/sssdoptions.py:21
......@@ -761,7 +761,7 @@ msgstr ""
#: src/config/SSSDConfig/sssdoptions.py:226
msgid "Local authentication methods policy "
msgstr ""
msgstr "Lokal policy för autentiseringsmetoder "
#: src/config/SSSDConfig/sssdoptions.py:229
msgid "IPA domain"
......@@ -2136,6 +2136,8 @@ msgid ""
"Kerberos TGT will not be granted upon login, user experience will be "
"affected."
msgstr ""
"Kerberos-TGT kommer inte att ges vid inloggning, användarupplevelsen kommer "
"påverkas."
#: src/sss_client/pam_sss.c:72
msgid "Enter PIN:"
......@@ -2197,6 +2199,8 @@ msgid ""
"No Kerberos TGT granted as the server does not support this method. Your "
"single-sign on(SSO) experience will be affected."
msgstr ""
"Ingen Kerberos-TGT gavs eftersom servern inte stödjer denna metod. Din "
"eninloggningsupplevelse (SSO) kommer påverkas."
#: src/sss_client/pam_sss.c:835 src/sss_client/pam_sss.c:848
msgid "Password change failed. "
......
......@@ -186,6 +186,8 @@ class SSSDOptions(object):
'dns_resolver_op_timeout': _('How long should keep trying to resolve single DNS query (seconds)'),
'dns_resolver_timeout': _('How long to wait for replies from DNS when resolving servers (seconds)'),
'dns_discovery_domain': _('The domain part of service discovery DNS query'),
'failover_primary_timeout': _('How often SSSD tries to reconnect to the primary server after a successful '
'connection to the backup server.'),
'override_gid': _('Override GID value from the identity provider with this value'),
'case_sensitive': _('Treat usernames as case sensitive'),
'entry_cache_user_timeout': _('Entry cache timeout length (seconds)'),
......
......@@ -579,6 +579,7 @@ class SSSDConfigTestSSSDDomain(unittest.TestCase):
'dns_resolver_op_timeout',
'dns_resolver_timeout',
'dns_discovery_domain',
'failover_primary_timeout',
'dyndns_update',
'dyndns_ttl',
'dyndns_iface',
......@@ -939,6 +940,7 @@ class SSSDConfigTestSSSDDomain(unittest.TestCase):
'dns_resolver_op_timeout',
'dns_resolver_timeout',
'dns_discovery_domain',
'failover_primary_timeout',
'dyndns_update',
'dyndns_ttl',
'dyndns_iface',
......
......@@ -99,6 +99,7 @@ option = memcache_timeout
option = memcache_size_passwd
option = memcache_size_group
option = memcache_size_initgroups
option = memcache_size_sid
[rule/allowed_pam_options]
validator = ini_allowed_options
......@@ -404,6 +405,7 @@ option = dns_resolver_op_timeout
option = dns_resolver_timeout
option = dns_resolver_use_search_list
option = dns_discovery_domain
option = failover_primary_timeout
option = override_gid
option = case_sensitive
option = override_homedir
......
......@@ -172,6 +172,7 @@ dns_resolver_server_timeout = int, None, false
dns_resolver_op_timeout = int, None, false
dns_resolver_timeout = int, None, false
dns_discovery_domain = str, None, false
failover_primary_timeout = int, None, false
override_gid = int, None, false
case_sensitive = str, None, false
override_homedir = str, None, false
......
......@@ -154,7 +154,7 @@ sysdb_gpo_store_gpo(struct sss_domain_info *domain,
goto done;
}
lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%lu",
lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%"SPRItime,
((cache_timeout) ? (now + cache_timeout) : 0));
if (lret != LDB_SUCCESS) {
ret = sysdb_error_to_errno(lret);
......@@ -198,7 +198,7 @@ sysdb_gpo_store_gpo(struct sss_domain_info *domain,
goto done;
}
lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%lu",
lret = ldb_msg_add_fmt(update_msg, SYSDB_GPO_TIMEOUT_ATTR, "%"SPRItime,
((cache_timeout) ? (now + cache_timeout) : 0));
if (lret != LDB_SUCCESS) {
ret = sysdb_error_to_errno(lret);
......
......@@ -603,6 +603,13 @@ static errno_t sysdb_domain_cache_upgrade(TALLOC_CTX *mem_ctx,
}
}
if (strcmp(version, SYSDB_VERSION_0_23) == 0) {
ret = sysdb_upgrade_23(sysdb, &version);
if (ret != EOK) {
goto done;
}
}
ret = EOK;
done:
sysdb->ldb = save_ldb;
......
......@@ -5741,7 +5741,7 @@ errno_t sysdb_ldb_list_indexes(TALLOC_CTX *mem_ctx,
indexes = talloc_realloc(mem_ctx, indexes, const char *, j + 2);
if (indexes == NULL) ERROR_OUT(ret, ENOMEM, done);
indexes[j] = talloc_asprintf(indexes, "%*s", length, data);
indexes[j] = talloc_asprintf(indexes, "%.*s", length, data);
if (indexes[j] == NULL) ERROR_OUT(ret, ENOMEM, done);
indexes[++j] = NULL;
......
......@@ -23,6 +23,7 @@
#ifndef __INT_SYS_DB_H__
#define __INT_SYS_DB_H__
#define SYSDB_VERSION_0_24 "0.24"
#define SYSDB_VERSION_0_23 "0.23"
#define SYSDB_VERSION_0_22 "0.22"
#define SYSDB_VERSION_0_21 "0.21"
......@@ -47,7 +48,7 @@
#define SYSDB_VERSION_0_2 "0.2"
#define SYSDB_VERSION_0_1 "0.1"
#define SYSDB_VERSION SYSDB_VERSION_0_23
#define SYSDB_VERSION SYSDB_VERSION_0_24
#define SYSDB_BASE_LDIF \
"dn: @ATTRIBUTES\n" \
......@@ -60,6 +61,7 @@
"objectclass: CASE_INSENSITIVE\n" \
"ipHostNumber: CASE_INSENSITIVE\n" \
"ipNetworkNumber: CASE_INSENSITIVE\n" \
"mail: CASE_INSENSITIVE\n" \
"\n" \
"dn: @INDEXLIST\n" \
"@IDXATTR: cn\n" \
......@@ -191,6 +193,7 @@ int sysdb_upgrade_19(struct sysdb_ctx *sysdb, const char **ver);
int sysdb_upgrade_20(struct sysdb_ctx *sysdb, const char **ver);
int sysdb_upgrade_21(struct sysdb_ctx *sysdb, const char **ver);
int sysdb_upgrade_22(struct sysdb_ctx *sysdb, const char **ver);
int sysdb_upgrade_23(struct sysdb_ctx *sysdb, const char **ver);
int sysdb_ts_upgrade_01(struct sysdb_ctx *sysdb, const char **ver);
......
......@@ -2718,6 +2718,62 @@ done:
return ret;
}
int sysdb_upgrade_23(struct sysdb_ctx *sysdb, const char **ver)
{
TALLOC_CTX *tmp_ctx;
int ret;
struct ldb_message *msg;
struct upgrade_ctx *ctx;
tmp_ctx = talloc_new(NULL);
if (!tmp_ctx) {
return ENOMEM;
}
ret = commence_upgrade(sysdb, sysdb->ldb, SYSDB_VERSION_0_24, &ctx);
if (ret) {
return ret;
}
/* Add new indexes */
msg = ldb_msg_new(tmp_ctx);
if (!msg) {
ret = ENOMEM;
goto done;
}
msg->dn = ldb_dn_new(tmp_ctx, sysdb->ldb, "@ATTRIBUTES");
if (!msg->dn) {
ret = ENOMEM;
goto done;
}
/* Case insensitive search for mail */
ret = ldb_msg_add_empty(msg, SYSDB_USER_EMAIL, LDB_FLAG_MOD_ADD, NULL);
if (ret != LDB_SUCCESS) {
ret = ENOMEM;
goto done;
}
ret = ldb_msg_add_string(msg, SYSDB_USER_EMAIL, "CASE_INSENSITIVE");
if (ret != LDB_SUCCESS) {
ret = ENOMEM;
goto done;
}
ret = ldb_modify(sysdb->ldb, msg);
if (ret != LDB_SUCCESS) {
ret = sysdb_error_to_errno(ret);
goto done;
}
/* conversion done, update version number */
ret = update_version(ctx);
done:
ret = finish_upgrade(ret, &ctx, ver);
talloc_free(tmp_ctx);
return ret;
}
int sysdb_ts_upgrade_01(struct sysdb_ctx *sysdb, const char **ver)
{
struct upgrade_ctx *ctx;
......
......@@ -4,6 +4,7 @@ AC_SUBST(SMBCLIENT_CFLAGS)
AC_SUBST(SMBCLIENT_LIBS)
AC_SUBST(NDR_KRB5PAC_CFLAGS)
AC_SUBST(NDR_KRB5PAC_LIBS)
AC_SUBST(IDMAP_SAMBA_LIBS)
if test x"$with_samba" = xyes; then
PKG_CHECK_MODULES(NDR_NBT, ndr_nbt, ,
......@@ -62,13 +63,21 @@ them. In this case, you will need to execute configure script with argument
AC_MSG_ERROR([Illegal value -$with_smb_idmap_interface_version- for option --with-smb-idmap-interface-version])
fi
else
AC_MSG_CHECKING([Samba's idmap plugin interface version])
sambalibdir="`$PKG_CONFIG --variable=libdir smbclient`"/samba
AC_MSG_CHECKING([Samba's idmap library])
if test -f "${sambalibdir}/libidmap-private-samba.so"; then
IDMAP_SAMBA_LIBS=idmap-private-samba
elif test -f "${sambalibdir}/libidmap-samba4.so"; then
IDMAP_SAMBA_LIBS=idmap-samba4
else
AC_MSG_ERROR([Cannot find private idmap-samba library])
fi
AC_MSG_RESULT([found: $IDMAP_SAMBA_LIBS])
AC_MSG_CHECKING([Samba's idmap plugin interface version])
SAVE_CFLAGS=$CFLAGS
SAVE_LIBS=$LIBS
CFLAGS="$CFLAGS $SMBCLIENT_CFLAGS $NDR_NBT_CFLAGS $NDR_KRB5PAC_CFLAGS"
LIBS="$LIBS -L${sambalibdir} -lidmap-samba4 -Wl,-rpath ${sambalibdir}"
LIBS="$LIBS -L${sambalibdir} -l${IDMAP_SAMBA_LIBS} -Wl,-rpath ${sambalibdir}"
AC_RUN_IFELSE(
[AC_LANG_SOURCE([
#include <stdlib.h>
......
......@@ -279,6 +279,11 @@ sss_passkeycl_process(krb5_context context,
goto done;
}
if (prompter == NULL) {
ret = EINVAL;
goto done;
}
/* Get FAST armor key. */
as_key = cb->fast_armor(context, rock);
if (as_key == NULL) {
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE reference PUBLIC "-//OASIS//DTD DocBook V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<!DOCTYPE reference PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<reference>
<title>SSSD Manual pages</title>
<refentry>
......