commit a8e3dc883a7423a9db3488c1c8ae963a9e531325 Author: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon Sep 30 11:16:38 2019 -0400 Package init diff --git a/CVE-2018-14629.patch b/CVE-2018-14629.patch new file mode 100644 index 0000000..3594dd6 --- /dev/null +++ b/CVE-2018-14629.patch @@ -0,0 +1,92 @@ +From bf596c14c2462b9a15ea738ef4f32b3abb8b63d1 Mon Sep 17 00:00:00 2001 +From: Aaron Haslett +Date: Tue, 23 Oct 2018 17:25:51 +1300 +Subject: [PATCH 01/17] CVE-2018-14629 dns: CNAME loop prevention using counter + +Count number of answers generated by internal DNS query routine and stop at +20 to match Microsoft's loop prevention mechanism. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13600 + +Signed-off-by: Aaron Haslett +Reviewed-by: Andrew Bartlett +Reviewed-by: Garming Sam +--- + python/samba/tests/dns.py | 22 ++++++++++++++++++++++ + selftest/knownfail.d/dns | 6 ++++++ + source4/dns_server/dns_query.c | 6 ++++++ + 3 files changed, 34 insertions(+) + +diff --git a/python/samba/tests/dns.py b/python/samba/tests/dns.py +index 6771e3bb8c4..3e6306e2be8 100644 +--- a/python/samba/tests/dns.py ++++ b/python/samba/tests/dns.py +@@ -844,6 +844,28 @@ class TestComplexQueries(DNSTest): + self.assertEquals(response.answers[1].name, name2) + self.assertEquals(response.answers[1].rdata, name0) + ++ def test_cname_loop(self): ++ cname1 = "cnamelooptestrec." + self.get_dns_domain() ++ cname2 = "cnamelooptestrec2." + self.get_dns_domain() ++ cname3 = "cnamelooptestrec3." + self.get_dns_domain() ++ self.make_dns_update(cname1, cname2, dnsp.DNS_TYPE_CNAME) ++ self.make_dns_update(cname2, cname3, dnsp.DNS_TYPE_CNAME) ++ self.make_dns_update(cname3, cname1, dnsp.DNS_TYPE_CNAME) ++ ++ p = self.make_name_packet(dns.DNS_OPCODE_QUERY) ++ questions = [] ++ ++ q = self.make_name_question(cname1, ++ dns.DNS_QTYPE_A, ++ dns.DNS_QCLASS_IN) ++ questions.append(q) ++ self.finish_name_packet(p, questions) ++ ++ (response, response_packet) =\ ++ self.dns_transaction_udp(p, host=self.server_ip) ++ ++ max_recursion_depth = 20 ++ self.assertEquals(len(response.answers), max_recursion_depth) + + class TestInvalidQueries(DNSTest): + def setUp(self): +diff --git a/selftest/knownfail.d/dns b/selftest/knownfail.d/dns +index a5176654cc2..a248432aafa 100644 +--- a/selftest/knownfail.d/dns ++++ b/selftest/knownfail.d/dns +@@ -69,3 +69,9 @@ samba.tests.dns.__main__.TestSimpleQueries.test_qtype_all_query\(rodc:local\) + + # The SOA override should not pass against the RODC, it must not overstamp + samba.tests.dns.__main__.TestSimpleQueries.test_one_SOA_query\(rodc:local\) ++ ++# ++# rodc and vampire_dc require signed dns updates, so the test setup ++# fails, but the test does run on fl2003dc ++^samba.tests.dns.__main__.TestComplexQueries.test_cname_loop\(rodc:local\) ++^samba.tests.dns.__main__.TestComplexQueries.test_cname_loop\(vampire_dc:local\) +diff --git a/source4/dns_server/dns_query.c b/source4/dns_server/dns_query.c +index 923f7233eb9..65faeac3b6a 100644 +--- a/source4/dns_server/dns_query.c ++++ b/source4/dns_server/dns_query.c +@@ -40,6 +40,7 @@ + + #undef DBGC_CLASS + #define DBGC_CLASS DBGC_DNS ++#define MAX_Q_RECURSION_DEPTH 20 + + struct forwarder_string { + const char *forwarder; +@@ -419,6 +420,11 @@ static struct tevent_req *handle_dnsrpcrec_send( + state->answers = answers; + state->nsrecs = nsrecs; + ++ if (talloc_array_length(*answers) >= MAX_Q_RECURSION_DEPTH) { ++ tevent_req_done(req); ++ return tevent_req_post(req, ev); ++ } ++ + resolve_cname = ((rec->wType == DNS_TYPE_CNAME) && + ((question->question_type == DNS_QTYPE_A) || + (question->question_type == DNS_QTYPE_AAAA))); +-- +2.17.1 diff --git a/CVE-2018-16841-1.patch b/CVE-2018-16841-1.patch new file mode 100644 index 0000000..9509660 --- /dev/null +++ b/CVE-2018-16841-1.patch @@ -0,0 +1,41 @@ +From b38900c353ca92365f144734c99d156cc39611d4 Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Tue, 23 Oct 2018 17:33:46 +1300 +Subject: [PATCH 3/5] CVE-2018-16841 heimdal: Fix segfault on PKINIT with + mis-matching principal + +In Heimdal KRB5_KDC_ERR_CLIENT_NAME_MISMATCH is an enum, so we tried to double-free +mem_ctx. + +This was introduced in 9a0263a7c316112caf0265237bfb2cfb3a3d370d for the +MIT KDC effort. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13628 + +Signed-off-by: Andrew Bartlett +Reviewed-by: Gary Lockyer +--- + source4/kdc/db-glue.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/source4/kdc/db-glue.c b/source4/kdc/db-glue.c +index 8ccc34cd665..519060a5641 100644 +--- a/source4/kdc/db-glue.c ++++ b/source4/kdc/db-glue.c +@@ -2606,10 +2606,10 @@ samba_kdc_check_pkinit_ms_upn_match(krb5_context context, + * comparison */ + if (!(orig_sid && target_sid && dom_sid_equal(orig_sid, target_sid))) { + talloc_free(mem_ctx); +-#ifdef KRB5_KDC_ERR_CLIENT_NAME_MISMATCH /* Heimdal */ +- return KRB5_KDC_ERR_CLIENT_NAME_MISMATCH; +-#elif defined(KRB5KDC_ERR_CLIENT_NAME_MISMATCH) /* MIT */ ++#if defined(KRB5KDC_ERR_CLIENT_NAME_MISMATCH) /* MIT */ + return KRB5KDC_ERR_CLIENT_NAME_MISMATCH; ++#else /* Heimdal (where this is an enum) */ ++ return KRB5_KDC_ERR_CLIENT_NAME_MISMATCH; + #endif + } + +-- +2.11.0 + diff --git a/CVE-2018-16841-2.patch b/CVE-2018-16841-2.patch new file mode 100644 index 0000000..a06be60 --- /dev/null +++ b/CVE-2018-16841-2.patch @@ -0,0 +1,40 @@ +From 58733073f6eb78e8b157ee55493e92ffa361b73c Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Wed, 24 Oct 2018 15:41:28 +1300 +Subject: [PATCH 4/5] CVE-2018-16841 selftest: Check for mismatching principal + in certficate compared with principal in AS-REQ + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13628 +Signed-off-by: Andrew Bartlett +Reviewed-by: Gary Lockyer +--- + testprogs/blackbox/test_pkinit_heimdal.sh | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/testprogs/blackbox/test_pkinit_heimdal.sh b/testprogs/blackbox/test_pkinit_heimdal.sh +index 0a13aa293e7..0912e0dbfe8 100755 +--- a/testprogs/blackbox/test_pkinit_heimdal.sh ++++ b/testprogs/blackbox/test_pkinit_heimdal.sh +@@ -75,10 +75,18 @@ testit "STEP1 kinit with pkinit (name specified) " $samba4kinit $enctype --reque + testit "STEP1 kinit renew ticket (name specified)" $samba4kinit --request-pac -R || failed=`expr $failed + 1` + test_smbclient "STEP1 Test login with kerberos ccache (name specified)" 'ls' "$unc" -k yes || failed=`expr $failed + 1` + ++testit_expect_failure "STEP1 kinit with pkinit (wrong name specified) " $samba4kinit $enctype --request-pac --renewable $PKUSER not$USERNAME@$REALM || failed=`expr $failed + 1` ++ ++testit_expect_failure "STEP1 kinit with pkinit (wrong name specified 2) " $samba4kinit $enctype --request-pac --renewable $PKUSER $SERVER@$REALM || failed=`expr $failed + 1` ++ + testit "STEP1 kinit with pkinit (enterprise name specified)" $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise $USERNAME@$REALM || failed=`expr $failed + 1` + testit "STEP1 kinit renew ticket (enterprise name specified)" $samba4kinit --request-pac -R || failed=`expr $failed + 1` + test_smbclient "STEP1 Test login with kerberos ccache (enterprise name specified)" 'ls' "$unc" -k yes || failed=`expr $failed + 1` + ++testit_expect_failure "STEP1 kinit with pkinit (wrong enterprise name specified) " $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise not$USERNAME@$REALM || failed=`expr $failed + 1` ++ ++testit_expect_failure "STEP1 kinit with pkinit (wrong enterprise name specified 2) " $samba4kinit $enctype --request-pac --renewable $PKUSER --enterprise $SERVER$@$REALM || failed=`expr $failed + 1` ++ + testit "STEP1 kinit with pkinit (enterprise name in cert)" $samba4kinit $enctype --request-pac --renewable $PKUSER --pk-enterprise || failed=`expr $failed + 1` + testit "STEP1 kinit renew ticket (enterprise name in cert)" $samba4kinit --request-pac -R || failed=`expr $failed + 1` + test_smbclient "STEP1 Test login with kerberos ccache (enterprise name in cert)" 'ls' "$unc" -k yes || failed=`expr $failed + 1` +-- +2.11.0 + + diff --git a/CVE-2018-16851.patch b/CVE-2018-16851.patch new file mode 100644 index 0000000..2be7d22 --- /dev/null +++ b/CVE-2018-16851.patch @@ -0,0 +1,43 @@ +From f33f52c366f7cf140f470de44579dcb7eb832629 Mon Sep 17 00:00:00 2001 +From: Garming Sam +Date: Mon, 5 Nov 2018 16:18:18 +1300 +Subject: [PATCH 07/17] CVE-2018-16851 ldap_server: Check ret before + manipulating blob + +In the case of hitting the talloc ~256MB limit, this causes a crash in +the server. + +Note that you would actually need to load >256MB of data into the LDAP. +Although there is some generated/hidden data which would help you reach that +limit (descriptors and RMD blobs). + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13674 + +Signed-off-by: Garming Sam +Reviewed-by: Andrew Bartlett +--- + source4/ldap_server/ldap_server.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source4/ldap_server/ldap_server.c b/source4/ldap_server/ldap_server.c +index b5251e3623e..bc2f54bc146 100644 +--- a/source4/ldap_server/ldap_server.c ++++ b/source4/ldap_server/ldap_server.c +@@ -690,13 +690,13 @@ static void ldapsrv_call_writev_start(struct ldapsrv_call *call) + ret = data_blob_append(call, &blob, b.data, b.length); + data_blob_free(&b); + +- talloc_set_name_const(blob.data, "Outgoing, encoded LDAP packet"); +- + if (!ret) { + ldapsrv_terminate_connection(conn, "data_blob_append failed"); + return; + } + ++ talloc_set_name_const(blob.data, "Outgoing, encoded LDAP packet"); ++ + DLIST_REMOVE(call->replies, call->replies); + } + +-- +2.17.1 diff --git a/CVE-2018-16853-1.patch b/CVE-2018-16853-1.patch new file mode 100644 index 0000000..b318fe1 --- /dev/null +++ b/CVE-2018-16853-1.patch @@ -0,0 +1,246 @@ +From 403c007b2309fe7ff264240cd3d07eb8a94a63f9 Mon Sep 17 00:00:00 2001 +From: Isaac Boukris +Date: Sat, 18 Aug 2018 15:32:43 +0300 +Subject: [PATCH 1/5] CVE-2018-16853: Fix kinit test on system lacking + ldbsearch + +By fixing bindir variable name. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13571 + +Signed-off-by: Isaac Boukris +Reviewed-by: Andreas Schneider +Reviewed-by: Stefan Metzmacher +--- + testprogs/blackbox/test_kinit_mit.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/testprogs/blackbox/test_kinit_mit.sh b/testprogs/blackbox/test_kinit_mit.sh +index dabf9915ed1..370542536e1 100755 +--- a/testprogs/blackbox/test_kinit_mit.sh ++++ b/testprogs/blackbox/test_kinit_mit.sh +@@ -32,13 +32,13 @@ samba_enableaccount="$samba_tool user enable" + machineaccountccache="$samba_srcdir/scripting/bin/machineaccountccache" + + ldbmodify="ldbmodify" +-if [ -x "$samba4bindir/ldbmodify" ]; then +- ldbmodify="$samba4bindir/ldbmodify" ++if [ -x "$samba_bindir/ldbmodify" ]; then ++ ldbmodify="$samba_bindir/ldbmodify" + fi + + ldbsearch="ldbsearch" +-if [ -x "$samba4bindir/ldbsearch" ]; then +- ldbsearch="$samba4bindir/ldbsearch" ++if [ -x "$samba_bindir/ldbsearch" ]; then ++ ldbsearch="$samba_bindir/ldbsearch" + fi + + . `dirname $0`/subunit.sh +-- +2.19.1 + + +From fbae2d0135b4ab998e771db2a8052574d7e34ad9 Mon Sep 17 00:00:00 2001 +From: Isaac Boukris +Date: Sat, 18 Aug 2018 00:40:30 +0300 +Subject: [PATCH 2/5] CVE-2018-16853: The ticket in check_policy_as can + actually be a TGS + +This happens when we are called from S4U2Self flow, and in that case +kdcreq->client is NULL. Use the name from client entry instead. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13571 + +Signed-off-by: Isaac Boukris +Reviewed-by: Andreas Schneider +Reviewed-by: Stefan Metzmacher +--- + source4/kdc/mit-kdb/kdb_samba_policies.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/source4/kdc/mit-kdb/kdb_samba_policies.c b/source4/kdc/mit-kdb/kdb_samba_policies.c +index de5813bde2f..81ac73582e0 100644 +--- a/source4/kdc/mit-kdb/kdb_samba_policies.c ++++ b/source4/kdc/mit-kdb/kdb_samba_policies.c +@@ -81,6 +81,7 @@ krb5_error_code kdb_samba_db_check_policy_as(krb5_context context, + char *netbios_name = NULL; + char *realm = NULL; + bool password_change = false; ++ krb5_const_principal client_princ; + DATA_BLOB int_data = { NULL, 0 }; + krb5_data d; + krb5_pa_data **e_data; +@@ -90,7 +91,10 @@ krb5_error_code kdb_samba_db_check_policy_as(krb5_context context, + return KRB5_KDB_DBNOTINITED; + } + +- if (ks_is_kadmin(context, kdcreq->client)) { ++ /* Prefer canonicalised name from client entry */ ++ client_princ = client ? client->princ : kdcreq->client; ++ ++ if (client_princ == NULL || ks_is_kadmin(context, client_princ)) { + return KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN; + } + +@@ -111,7 +115,7 @@ krb5_error_code kdb_samba_db_check_policy_as(krb5_context context, + goto done; + } + +- code = krb5_unparse_name(context, kdcreq->client, &client_name); ++ code = krb5_unparse_name(context, client_princ, &client_name); + if (code) { + goto done; + } +-- +2.19.1 + + +From a49cb0d8b694d7cb579bf9b97208c7c1083be711 Mon Sep 17 00:00:00 2001 +From: Isaac Boukris +Date: Sat, 18 Aug 2018 16:01:59 +0300 +Subject: [PATCH 3/5] CVE-2018-16853: Add a test to verify s4u2self doesn't + crash + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13571 + +Signed-off-by: Isaac Boukris +Reviewed-by: Andreas Schneider +Reviewed-by: Stefan Metzmacher +--- + testprogs/blackbox/test_kinit_mit.sh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/testprogs/blackbox/test_kinit_mit.sh b/testprogs/blackbox/test_kinit_mit.sh +index 370542536e1..f691b0f15d7 100755 +--- a/testprogs/blackbox/test_kinit_mit.sh ++++ b/testprogs/blackbox/test_kinit_mit.sh +@@ -24,6 +24,7 @@ samba_srcdir="$SRCDIR/source4" + samba_kinit=kinit + samba_kdestroy=kdestroy + samba_kpasswd=kpasswd ++samba_kvno=kvno + + samba_tool="$samba_bindir/samba-tool" + samba_texpect="$samba_bindir/texpect" +@@ -299,6 +300,17 @@ test_smbclient "Test machine account login with kerberos ccache" 'ls' -k yes || + + testit "reset password policies" $VALGRIND $samba_tool domain passwordsettings set $ADMIN_LDBMODIFY_CONFIG --complexity=default --history-length=default --min-pwd-length=default --min-pwd-age=default --max-pwd-age=default || failed=`expr $failed + 1` + ++########################################################### ++### Test basic s4u2self request ++########################################################### ++ ++# Use previous acquired machine creds to request a ticket for self. ++# We expect it to fail for now. ++MACHINE_ACCOUNT="$(hostname -s | tr [a-z] [A-Z])\$@$REALM" ++$samba_kvno -U$MACHINE_ACCOUNT $MACHINE_ACCOUNT ++# But we expect the KDC to be up and running still ++testit "kinit with machineaccountccache after s4u2self" $machineaccountccache $CONFIGURATION $KRB5CCNAME || failed=`expr $failed + 1` ++ + ### Cleanup + + $samba_kdestroy +-- +2.19.1 + + +From 3e5ed4ad4a7ee1a42d4db73da35932d0acabe959 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Wed, 28 Sep 2016 07:22:32 +0200 +Subject: [PATCH 4/5] CVE-2018-16853: Do not segfault if client is not set + +This can be triggered with FAST but we don't support this yet. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13571 + +Signed-off-by: Andreas Schneider +Reviewed-by: Stefan Metzmacher +--- + source4/kdc/mit-kdb/kdb_samba_policies.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/source4/kdc/mit-kdb/kdb_samba_policies.c b/source4/kdc/mit-kdb/kdb_samba_policies.c +index 81ac73582e0..fc80329f221 100644 +--- a/source4/kdc/mit-kdb/kdb_samba_policies.c ++++ b/source4/kdc/mit-kdb/kdb_samba_policies.c +@@ -461,6 +461,14 @@ void kdb_samba_db_audit_as_req(krb5_context context, + krb5_timestamp authtime, + krb5_error_code error_code) + { ++ /* ++ * FIXME: This segfaulted with a FAST test ++ * FIND_FAST: for , Unknown FAST armor type 0 ++ */ ++ if (client == NULL) { ++ return; ++ } ++ + samba_bad_password_count(client, error_code); + + /* TODO: perform proper audit logging for addresses */ +@@ -473,6 +481,14 @@ void kdb_samba_db_audit_as_req(krb5_context context, + krb5_timestamp authtime, + krb5_error_code error_code) + { ++ /* ++ * FIXME: This segfaulted with a FAST test ++ * FIND_FAST: for , Unknown FAST armor type 0 ++ */ ++ if (client == NULL) { ++ return; ++ } ++ + samba_bad_password_count(client, error_code); + } + #endif +-- +2.19.1 + + +From d67c462cd36ee525eb9122bd5d525d10eac7d06a Mon Sep 17 00:00:00 2001 +From: Isaac Boukris +Date: Wed, 7 Nov 2018 22:53:35 +0200 +Subject: [PATCH 5/5] CVE-2018-16853: fix crash in expired passowrd case + +When calling encode_krb5_padata_sequence() make sure to +pass a null terminated array as required. + +Fixes expired passowrd case in samba4.blackbox.kinit test. + +Signed-off-by: Isaac Boukris +Reviewed-by: Andreas Schneider +Reviewed-by: Stefan Metzmacher +--- + source4/kdc/mit_samba.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/source4/kdc/mit_samba.c b/source4/kdc/mit_samba.c +index 414e67c6a98..eacca0903ec 100644 +--- a/source4/kdc/mit_samba.c ++++ b/source4/kdc/mit_samba.c +@@ -865,7 +865,7 @@ krb5_error_code encode_krb5_padata_sequence(krb5_pa_data *const *rep, krb5_data + static void samba_kdc_build_edata_reply(NTSTATUS nt_status, DATA_BLOB *e_data) + { + krb5_error_code ret = 0; +- krb5_pa_data pa, *ppa = NULL; ++ krb5_pa_data pa, *ppa[2]; + krb5_data *d = NULL; + + if (!e_data) +@@ -886,9 +886,10 @@ static void samba_kdc_build_edata_reply(NTSTATUS nt_status, DATA_BLOB *e_data) + SIVAL(pa.contents, 4, 0); + SIVAL(pa.contents, 8, 1); + +- ppa = &pa; ++ ppa[0] = &pa; ++ ppa[1] = NULL; + +- ret = encode_krb5_padata_sequence(&ppa, &d); ++ ret = encode_krb5_padata_sequence(ppa, &d); + free(pa.contents); + if (ret) { + return; +-- +2.19.1 + diff --git a/CVE-2018-16853-2.patch b/CVE-2018-16853-2.patch new file mode 100644 index 0000000..cbe405b --- /dev/null +++ b/CVE-2018-16853-2.patch @@ -0,0 +1,54 @@ +From 4aabfecd290cd2769376abf7f170e832becc4112 Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Tue, 6 Nov 2018 13:32:05 +1300 +Subject: [PATCH 08/17] CVE-2018-16853 build: The Samba AD DC, when build with + MIT Kerberos is experimental + +This matches https://wiki.samba.org/index.php/Running_a_Samba_AD_DC_with_MIT_Kerberos_KDC + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13678 + +Signed-off-by: Andrew Bartlett +Reviewed-by: Gary Lockyer +--- + wscript | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/wscript b/wscript +index 19fc6d12118..7c265e7befb 100644 +--- a/wscript ++++ b/wscript +@@ -56,6 +56,14 @@ def set_options(opt): + help='build Samba with system MIT Kerberos. ' + + 'You may specify list of paths where Kerberos is installed (e.g. /usr/local /usr/kerberos) to search krb5-config', + action='callback', callback=system_mitkrb5_callback, dest='with_system_mitkrb5', default=False) ++ ++ opt.add_option('--with-experimental-mit-ad-dc', ++ help='Enable the experimental MIT Kerberos-backed AD DC. ' + ++ 'Note that security patches are not issued for this configuration', ++ action='store_true', ++ dest='with_experimental_mit_ad_dc', ++ default=False) ++ + opt.add_option('--with-system-mitkdc', + help=('Specify the path to the krb5kdc binary from MIT Kerberos'), + type="string", +@@ -210,7 +218,16 @@ def configure(conf): + conf.DEFINE('AD_DC_BUILD_IS_ENABLED', 1) + + if Options.options.with_system_mitkrb5: ++ if not Options.options.with_experimental_mit_ad_dc and \ ++ not Options.options.without_ad_dc: ++ raise Utils.WafError('The MIT Kerberos build of Samba as an AD DC ' + ++ 'is experimental. Therefore ' ++ '--with-system-mitkrb5 requires either ' + ++ '--with-experimental-mit-ad-dc or ' + ++ '--without-ad-dc') ++ + conf.PROCESS_SEPARATE_RULE('system_mitkrb5') ++ + if not (Options.options.without_ad_dc or Options.options.with_system_mitkrb5): + conf.DEFINE('AD_DC_BUILD_IS_ENABLED', 1) + +-- +2.17.1 diff --git a/CVE-2019-12435-1.patch b/CVE-2019-12435-1.patch new file mode 100644 index 0000000..2af1538 --- /dev/null +++ b/CVE-2019-12435-1.patch @@ -0,0 +1,59 @@ +diff -Nurp samba-4.9.1/python/samba/tests/dcerpc/dnsserver.py samba-4.9.1-bak/python/samba/tests/dcerpc/dnsserver.py +--- samba-4.9.1/python/samba/tests/dcerpc/dnsserver.py 2018-07-12 04:23:36.000000000 -0400 ++++ samba-4.9.1-bak/python/samba/tests/dcerpc/dnsserver.py 2019-07-29 11:47:02.701000000 -0400 +@@ -28,6 +28,7 @@ from samba.dcerpc import dnsp, dnsserver + from samba.tests import RpcInterfaceTestCase, env_get_var_value + from samba.netcmd.dns import ARecord, AAAARecord, PTRRecord, CNameRecord, NSRecord, MXRecord, SRVRecord, TXTRecord + from samba import sd_utils, descriptor ++from samba import WERRORError, werror + + class DnsserverTests(RpcInterfaceTestCase): + +@@ -707,6 +708,29 @@ class DnsserverTests(RpcInterfaceTestCas + 'ServerInfo') + self.assertEquals(dnsserver.DNSSRV_TYPEID_SERVER_INFO, typeid) + ++ # This test is to confirm that we do not support multizone operations, ++ # which are designated by a non-zero dwContext value (the 3rd argument ++ # to DnssrvOperation). ++ def test_operation_invalid(self): ++ non_zone = 'a-zone-that-does-not-exist' ++ typeid = dnsserver.DNSSRV_TYPEID_NAME_AND_PARAM ++ name_and_param = dnsserver.DNS_RPC_NAME_AND_PARAM() ++ name_and_param.pszNodeName = 'AllowUpdate' ++ name_and_param.dwParam = dnsp.DNS_ZONE_UPDATE_SECURE ++ try: ++ res = self.conn.DnssrvOperation(self.server, ++ non_zone, ++ 1, ++ 'ResetDwordProperty', ++ typeid, ++ name_and_param) ++ except WERRORError as e: ++ if e.args[0] == werror.WERR_DNS_ERROR_ZONE_DOES_NOT_EXIST: ++ return ++ ++ # We should always encounter a DOES_NOT_EXIST error. ++ self.fail() ++ + def test_operation2(self): + client_version = dnsserver.DNS_CLIENT_VERSION_LONGHORN + rev_zone = '1.168.192.in-addr.arpa' +diff -Nurp samba-4.9.1/source4/rpc_server/dnsserver/dcerpc_dnsserver.c samba-4.9.1-bak/source4/rpc_server/dnsserver/dcerpc_dnsserver.c +--- samba-4.9.1/source4/rpc_server/dnsserver/dcerpc_dnsserver.c 2018-07-12 04:23:36.000000000 -0400 ++++ samba-4.9.1-bak/source4/rpc_server/dnsserver/dcerpc_dnsserver.c 2019-07-29 11:51:52.408000000 -0400 +@@ -1955,7 +1955,13 @@ static WERROR dcesrv_DnssrvOperation(str + &r->in.pData); + } else { + z = dnsserver_find_zone(dsstate->zones, r->in.pszZone); +- if (z == NULL && request_filter == 0) { ++ /* ++ * In the case that request_filter is not 0 and z is NULL, ++ * the request is for a multizone operation, which we do not ++ * yet support, so just error on NULL zone name. ++ */ ++ if (z == NULL) { ++ + return WERR_DNS_ERROR_ZONE_DOES_NOT_EXIST; + } + diff --git a/CVE-2019-12435-2.patch b/CVE-2019-12435-2.patch new file mode 100644 index 0000000..c6eb2a0 --- /dev/null +++ b/CVE-2019-12435-2.patch @@ -0,0 +1,53 @@ +diff -Nurp samba-4.9.1/python/samba/tests/dcerpc/dnsserver.py samba-4.9.1-bak/python/samba/tests/dcerpc/dnsserver.py +--- samba-4.9.1/python/samba/tests/dcerpc/dnsserver.py 2019-07-29 11:56:23.948000000 -0400 ++++ samba-4.9.1-bak/python/samba/tests/dcerpc/dnsserver.py 2019-07-29 11:58:35.410000000 -0400 +@@ -731,6 +731,32 @@ class DnsserverTests(RpcInterfaceTestCas + # We should always encounter a DOES_NOT_EXIST error. + self.fail() + ++ # This test is to confirm that we do not support multizone operations, ++ # which are designated by a non-zero dwContext value (the 5th argument ++ # to DnssrvOperation2). ++ def test_operation2_invalid(self): ++ client_version = dnsserver.DNS_CLIENT_VERSION_LONGHORN ++ non_zone = 'a-zone-that-does-not-exist' ++ typeid = dnsserver.DNSSRV_TYPEID_NAME_AND_PARAM ++ name_and_param = dnsserver.DNS_RPC_NAME_AND_PARAM() ++ name_and_param.pszNodeName = 'AllowUpdate' ++ name_and_param.dwParam = dnsp.DNS_ZONE_UPDATE_SECURE ++ try: ++ res = self.conn.DnssrvOperation2(client_version, ++ 0, ++ self.server, ++ non_zone, ++ 1, ++ 'ResetDwordProperty', ++ typeid, ++ name_and_param) ++ except WERRORError as e: ++ if e.args[0] == werror.WERR_DNS_ERROR_ZONE_DOES_NOT_EXIST: ++ return ++ ++ # We should always encounter a DOES_NOT_EXIST error. ++ self.fail() ++ + def test_operation2(self): + client_version = dnsserver.DNS_CLIENT_VERSION_LONGHORN + rev_zone = '1.168.192.in-addr.arpa' +diff -Nurp samba-4.9.1/source4/rpc_server/dnsserver/dcerpc_dnsserver.c samba-4.9.1-bak/source4/rpc_server/dnsserver/dcerpc_dnsserver.c +--- samba-4.9.1/source4/rpc_server/dnsserver/dcerpc_dnsserver.c 2019-07-29 11:56:23.950000000 -0400 ++++ samba-4.9.1-bak/source4/rpc_server/dnsserver/dcerpc_dnsserver.c 2019-07-29 12:00:03.852000000 -0400 +@@ -2168,7 +2168,12 @@ static WERROR dcesrv_DnssrvOperation2(st + &r->in.pData); + } else { + z = dnsserver_find_zone(dsstate->zones, r->in.pszZone); +- if (z == NULL && request_filter == 0) { ++ /* ++ * In the case that request_filter is not 0 and z is NULL, ++ * the request is for a multizone operation, which we do not ++ * yet support, so just error on NULL zone name. ++ */ ++ if (z == NULL) { + return WERR_DNS_ERROR_ZONE_DOES_NOT_EXIST; + } + diff --git a/CVE-2019-3870-1.patch b/CVE-2019-3870-1.patch new file mode 100644 index 0000000..bb5e0a6 --- /dev/null +++ b/CVE-2019-3870-1.patch @@ -0,0 +1,140 @@ +From c25348e1f2a7fd0801e06918d67c469f1912f311 Mon Sep 17 00:00:00 2001 +From: Tim Beale +Date: Fri, 15 Mar 2019 15:20:21 +1300 +Subject: [PATCH 1/5] CVE-2019-3870 tests: Extend smbd tests to check for umask + being overwritten + +The smbd changes the umask - if the code fails to restore the umask to +what it was, then this is very bad. Add an extra check to every +smbd-related test that the umask at the end of the test is the same as +what it was at the beginning (i.e. if the smbd code changed the umask +then it correctly restored the value afterwards). + +As the selftest sets the umask for all tests to zero, it makes it hard +to detect this problem, so the test setUp() needs to set it to something +else first. + +This extra checking is added to the setUp()/tearDown() so that it +applies to all test-cases. However, any failure that occur with this +approach will not be able to be known-failed. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13834 + +Signed-off-by: Tim Beale +Reviewed-by: Andrew Bartlett + +(This backport to Samba 4.9 by Andrew Bartlett was not a pure +cherry-pick due to merge conflicts) +--- + python/samba/tests/ntacls_backup.py | 4 ++-- + python/samba/tests/posixacl.py | 4 ++-- + python/samba/tests/smbd_base.py | 48 +++++++++++++++++++++++++++++++++++++ + selftest/knownfail.d/umask-leak | 3 +++ + 4 files changed, 55 insertions(+), 4 deletions(-) + create mode 100644 python/samba/tests/smbd_base.py + create mode 100644 selftest/knownfail.d/umask-leak + +diff --git a/python/samba/tests/ntacls_backup.py b/python/samba/tests/ntacls_backup.py +index 9ab264a27fd..763804fd63f 100644 +--- a/python/samba/tests/ntacls_backup.py ++++ b/python/samba/tests/ntacls_backup.py +@@ -27,10 +27,10 @@ from samba import ntacls + from samba.auth import system_session + from samba.param import LoadParm + from samba.dcerpc import security +-from samba.tests import TestCaseInTempDir ++from samba.tests.smbd_base import SmbdBaseTests + + +-class NtaclsBackupRestoreTests(TestCaseInTempDir): ++class NtaclsBackupRestoreTests(SmbdBaseTests): + """ + Tests for NTACLs backup and restore. + """ +diff --git a/python/samba/tests/posixacl.py b/python/samba/tests/posixacl.py +index 8b48825fc6f..2005f4eef59 100644 +--- a/python/samba/tests/posixacl.py ++++ b/python/samba/tests/posixacl.py +@@ -20,7 +20,7 @@ + + from samba.ntacls import setntacl, getntacl, checkset_backend + from samba.dcerpc import security, smb_acl, idmap +-from samba.tests import TestCaseInTempDir ++from samba.tests.smbd_base import SmbdBaseTests + from samba import provision + import os + from samba.samba3 import smbd, passdb +@@ -32,7 +32,7 @@ DOM_SID = "S-1-5-21-2212615479-2695158682-2101375467" + ACL = "O:S-1-5-21-2212615479-2695158682-2101375467-512G:S-1-5-21-2212615479-2695158682-2101375467-513D:(A;OICI;0x001f01ff;;;S-1-5-21-2212615479-2695158682-2101375467-512)" + + +-class PosixAclMappingTests(TestCaseInTempDir): ++class PosixAclMappingTests(SmbdBaseTests): + + def setUp(self): + super(PosixAclMappingTests, self).setUp() +diff --git a/python/samba/tests/smbd_base.py b/python/samba/tests/smbd_base.py +new file mode 100644 +index 00000000000..4e5c3641e2c +--- /dev/null ++++ b/python/samba/tests/smbd_base.py +@@ -0,0 +1,48 @@ ++# Unix SMB/CIFS implementation. Common code for smbd python bindings tests ++# Copyright (C) Catalyst.Net Ltd 2019 ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++# ++from samba.tests import TestCaseInTempDir ++import os ++ ++TEST_UMASK = 0o022 ++ ++class SmbdBaseTests(TestCaseInTempDir): ++ ++ def get_umask(self): ++ # we can only get the umask by setting it to something ++ curr_umask = os.umask(0) ++ # restore the old setting ++ os.umask(curr_umask) ++ return curr_umask ++ ++ def setUp(self): ++ super(SmbdBaseTests, self).setUp() ++ self.orig_umask = self.get_umask() ++ ++ # set an arbitrary umask - the underlying smbd code should override ++ # this, but it allows us to check if umask is left unset ++ os.umask(TEST_UMASK) ++ ++ def tearDown(self): ++ # the current umask should be what we set it to earlier - if it's not, ++ # it indicates the code has changed it and not restored it ++ self.assertEqual(self.get_umask(), TEST_UMASK, ++ "umask unexpectedly overridden by test") ++ ++ # restore the original umask value (before we interferred with it) ++ os.umask(self.orig_umask) ++ ++ super(SmbdBaseTests, self).tearDown() +diff --git a/selftest/knownfail.d/umask-leak b/selftest/knownfail.d/umask-leak +new file mode 100644 +index 00000000000..5580beb4b68 +--- /dev/null ++++ b/selftest/knownfail.d/umask-leak +@@ -0,0 +1,3 @@ ++^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_smbd_create_file ++^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_backup_online ++^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_backup_offline +-- +2.11.0 diff --git a/CVE-2019-3870-2.patch b/CVE-2019-3870-2.patch new file mode 100644 index 0000000..b36c0b7 --- /dev/null +++ b/CVE-2019-3870-2.patch @@ -0,0 +1,120 @@ +From b9ccfe0452524d8fdd5751944662856425599af2 Mon Sep 17 00:00:00 2001 +From: Tim Beale +Date: Fri, 15 Mar 2019 13:52:50 +1300 +Subject: [PATCH 2/5] CVE-2019-3870 tests: Add test to check file-permissions + are correct after provision + +This provisions a new DC and checks there are no world-writable +files in the new DC's private directory. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13834 + +Signed-off-by: Tim Beale +Reviewed-by: Andrew Bartlett +Reviewed-by: Jeremy Allison +--- + selftest/knownfail.d/provision_fileperms | 1 + + source4/selftest/tests.py | 1 + + source4/setup/tests/provision_fileperms.sh | 71 ++++++++++++++++++++++++++++++ + 3 files changed, 73 insertions(+) + create mode 100644 selftest/knownfail.d/provision_fileperms + create mode 100755 source4/setup/tests/provision_fileperms.sh + +diff --git a/selftest/knownfail.d/provision_fileperms b/selftest/knownfail.d/provision_fileperms +new file mode 100644 +index 00000000000..88b1585fd19 +--- /dev/null ++++ b/selftest/knownfail.d/provision_fileperms +@@ -0,0 +1 @@ ++samba4.blackbox.provision_fileperms.provision-fileperms\(none\) +diff --git a/source4/selftest/tests.py b/source4/selftest/tests.py +index 18b2c1162b0..d6fb388dc33 100755 +--- a/source4/selftest/tests.py ++++ b/source4/selftest/tests.py +@@ -904,6 +904,7 @@ plantestsuite_loadlist("samba4.deletetest.python(ad_dc_ntvfs)", "ad_dc_ntvfs", [ + plantestsuite("samba4.blackbox.samba3dump", "none", [os.path.join(samba4srcdir, "selftest/test_samba3dump.sh")]) + plantestsuite("samba4.blackbox.upgrade", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_s3upgrade.sh"), '$PREFIX/provision']) + plantestsuite("samba4.blackbox.provision.py", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/blackbox_provision.sh"), '$PREFIX/provision']) ++plantestsuite("samba4.blackbox.provision_fileperms", "none", ["PYTHON=%s" % python, os.path.join(samba4srcdir, "setup/tests/provision_fileperms.sh"), '$PREFIX/provision']) + plantestsuite("samba4.blackbox.supported_features", "none", + ["PYTHON=%s" % python, + os.path.join(samba4srcdir, +diff --git a/source4/setup/tests/provision_fileperms.sh b/source4/setup/tests/provision_fileperms.sh +new file mode 100755 +index 00000000000..0b3ef0321fb +--- /dev/null ++++ b/source4/setup/tests/provision_fileperms.sh +@@ -0,0 +1,71 @@ ++#!/bin/sh ++ ++if [ $# -lt 1 ]; then ++cat < $SMB_CONF ++ ++# provision a basic DC ++testit "basic-provision" $PYTHON $BINDIR/samba-tool domain provision --server-role="dc" --domain=FOO --realm=foo.example.com --targetdir=$TARGET_DIR --configfile=$SMB_CONF ++ ++# check the file permissions in the 'private' directory really are private ++testit "provision-fileperms" check_private_file_perms $TARGET_DIR ++ ++rm -rf $TARGET_DIR ++ ++umask $ORIG_UMASK ++ ++exit $failed +-- +2.11.0 diff --git a/CVE-2019-3870-3.patch b/CVE-2019-3870-3.patch new file mode 100644 index 0000000..3169e02 --- /dev/null +++ b/CVE-2019-3870-3.patch @@ -0,0 +1,72 @@ +From be504b486d78133fd28ad3d7adfe589a99338846 Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Thu, 21 Mar 2019 17:21:58 +1300 +Subject: [PATCH 3/5] CVE-2019-3870 pysmbd: Include tests to show the outside + umask has no impact + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13834 + +Signed-off-by: Andrew Bartlett +Reviewed-by: Jeremy Allison +--- + python/samba/tests/ntacls_backup.py | 13 +++++++++++++ + python/samba/tests/smbd_base.py | 2 +- + selftest/knownfail.d/pymkdir-umask | 1 + + 3 files changed, 15 insertions(+), 1 deletion(-) + create mode 100644 selftest/knownfail.d/pymkdir-umask + +diff --git a/python/samba/tests/ntacls_backup.py b/python/samba/tests/ntacls_backup.py +index 763804fd63f..b7defd35903 100644 +--- a/python/samba/tests/ntacls_backup.py ++++ b/python/samba/tests/ntacls_backup.py +@@ -112,6 +112,12 @@ class NtaclsBackupRestoreTests(SmbdBaseTests): + + dirpath = os.path.join(self.service_root, 'a-dir') + smbd.mkdir(dirpath, self.service) ++ mode = os.stat(dirpath).st_mode ++ ++ # This works in conjunction with the TEST_UMASK in smbd_base ++ # to ensure that permissions are not related to the umask ++ # but instead the smb.conf settings ++ self.assertEquals(mode & 0o777, 0o755) + self.assertTrue(os.path.isdir(dirpath)) + + def test_smbd_create_file(self): +@@ -123,6 +129,13 @@ class NtaclsBackupRestoreTests(SmbdBaseTests): + smbd.create_file(filepath, self.service) + self.assertTrue(os.path.isfile(filepath)) + ++ mode = os.stat(filepath).st_mode ++ ++ # This works in conjunction with the TEST_UMASK in smbd_base ++ # to ensure that permissions are not related to the umask ++ # but instead the smb.conf settings ++ self.assertEquals(mode & 0o777, 0o644) ++ + # As well as checking that unlink works, this removes the + # fake xattrs from the dev/inode based DB + smbd.unlink(filepath, self.service) +diff --git a/python/samba/tests/smbd_base.py b/python/samba/tests/smbd_base.py +index 4e5c3641e2c..b49bcc0828f 100644 +--- a/python/samba/tests/smbd_base.py ++++ b/python/samba/tests/smbd_base.py +@@ -17,7 +17,7 @@ + from samba.tests import TestCaseInTempDir + import os + +-TEST_UMASK = 0o022 ++TEST_UMASK = 0o042 + + class SmbdBaseTests(TestCaseInTempDir): + +diff --git a/selftest/knownfail.d/pymkdir-umask b/selftest/knownfail.d/pymkdir-umask +new file mode 100644 +index 00000000000..5af01be44e3 +--- /dev/null ++++ b/selftest/knownfail.d/pymkdir-umask +@@ -0,0 +1 @@ ++^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_smbd_mkdir +\ No newline at end of file +-- +2.11.0 + diff --git a/CVE-2019-3870-4.patch b/CVE-2019-3870-4.patch new file mode 100644 index 0000000..25d2995 --- /dev/null +++ b/CVE-2019-3870-4.patch @@ -0,0 +1,169 @@ +From c99f2ab22cc93b5194a3477c6a241600fa0f6758 Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Thu, 14 Mar 2019 18:20:06 +1300 +Subject: [PATCH 4/5] CVE-2019-3870 pysmbd: Move umask manipuations as close as + possible to users + +Umask manipulation was added to pysmbd with e146fe5ef96c1522175a8e81db15d1e8879e5652 in 2012 +and init_files_struct was split out in 747c3f1fb379bb68cc7479501b85741493c05812 in 2018 for +Samba 4.9. (It was added to assist the smbd.create_file() routine used in the backup and +restore tools, which needed to write files with full metadata). + +This in turn avoids leaving init_files_struct() without resetting the umask to +the original, saved, value. + +Per umask(2) this is required before open() and mkdir() system calls (along +side other file-like things such as those for Unix domain socks and FIFOs etc). + +Therefore for safety and clarify the additional 'belt and braces' umask +manipuations elsewhere are removed. + +mkdir() will be protected by a umask() bracket, for correctness, in the next patch. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13834 + +Signed-off-by: Andrew Bartlett + +(This backport to Samba 4.9 by Andrew Bartlett is not a pure +cherry-pick due to merge conflicts) +--- + selftest/knownfail.d/provision_fileperms | 1 - + selftest/knownfail.d/umask-leak | 3 --- + source3/smbd/pysmbd.c | 34 ++++++++++---------------------- + 3 files changed, 10 insertions(+), 28 deletions(-) + delete mode 100644 selftest/knownfail.d/provision_fileperms + delete mode 100644 selftest/knownfail.d/umask-leak + +diff --git a/selftest/knownfail.d/provision_fileperms b/selftest/knownfail.d/provision_fileperms +deleted file mode 100644 +index 88b1585fd19..00000000000 +--- a/selftest/knownfail.d/provision_fileperms ++++ /dev/null +@@ -1 +0,0 @@ +-samba4.blackbox.provision_fileperms.provision-fileperms\(none\) +diff --git a/selftest/knownfail.d/umask-leak b/selftest/knownfail.d/umask-leak +deleted file mode 100644 +index 5580beb4b68..00000000000 +--- a/selftest/knownfail.d/umask-leak ++++ /dev/null +@@ -1,3 +0,0 @@ +-^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_smbd_create_file +-^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_backup_online +-^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_backup_offline +diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysmbd.c +index 1431925efd0..179a1ee2943 100644 +--- a/source3/smbd/pysmbd.c ++++ b/source3/smbd/pysmbd.c +@@ -85,27 +85,19 @@ static int set_sys_acl_conn(const char *fname, + { + int ret; + struct smb_filename *smb_fname = NULL; +- mode_t saved_umask; + + TALLOC_CTX *frame = talloc_stackframe(); + +- /* we want total control over the permissions on created files, +- so set our umask to 0 */ +- saved_umask = umask(0); +- + smb_fname = synthetic_smb_fname_split(frame, + fname, + lp_posix_pathnames()); + if (smb_fname == NULL) { + TALLOC_FREE(frame); +- umask(saved_umask); + return -1; + } + + ret = SMB_VFS_SYS_ACL_SET_FILE( conn, smb_fname, acltype, theacl); + +- umask(saved_umask); +- + TALLOC_FREE(frame); + return ret; + } +@@ -132,22 +124,26 @@ static NTSTATUS init_files_struct(TALLOC_CTX *mem_ctx, + } + fsp->conn = conn; + +- /* we want total control over the permissions on created files, +- so set our umask to 0 */ +- saved_umask = umask(0); +- + smb_fname = synthetic_smb_fname_split(fsp, + fname, + lp_posix_pathnames()); + if (smb_fname == NULL) { +- umask(saved_umask); + return NT_STATUS_NO_MEMORY; + } + + fsp->fsp_name = smb_fname; ++ ++ /* ++ * we want total control over the permissions on created files, ++ * so set our umask to 0 (this matters if flags contains O_CREAT) ++ */ ++ saved_umask = umask(0); ++ + fsp->fh->fd = SMB_VFS_OPEN(conn, smb_fname, fsp, flags, 00644); ++ ++ umask(saved_umask); ++ + if (fsp->fh->fd == -1) { +- umask(saved_umask); + return NT_STATUS_INVALID_PARAMETER; + } + +@@ -157,7 +153,6 @@ static NTSTATUS init_files_struct(TALLOC_CTX *mem_ctx, + DEBUG(0,("Error doing fstat on open file %s (%s)\n", + smb_fname_str_dbg(smb_fname), + strerror(errno) )); +- umask(saved_umask); + return map_nt_error_from_unix(errno); + } + +@@ -444,7 +439,6 @@ static PyObject *py_smbd_chown(PyObject *self, PyObject *args, PyObject *kwargs) + char *fname, *service = NULL; + int uid, gid; + TALLOC_CTX *frame; +- mode_t saved_umask; + struct smb_filename *smb_fname = NULL; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sii|z", +@@ -460,10 +454,6 @@ static PyObject *py_smbd_chown(PyObject *self, PyObject *args, PyObject *kwargs) + return NULL; + } + +- /* we want total control over the permissions on created files, +- so set our umask to 0 */ +- saved_umask = umask(0); +- + smb_fname = synthetic_smb_fname(talloc_tos(), + fname, + NULL, +@@ -471,7 +461,6 @@ static PyObject *py_smbd_chown(PyObject *self, PyObject *args, PyObject *kwargs) + lp_posix_pathnames() ? + SMB_FILENAME_POSIX_PATH : 0); + if (smb_fname == NULL) { +- umask(saved_umask); + TALLOC_FREE(frame); + errno = ENOMEM; + return PyErr_SetFromErrno(PyExc_OSError); +@@ -479,14 +468,11 @@ static PyObject *py_smbd_chown(PyObject *self, PyObject *args, PyObject *kwargs) + + ret = SMB_VFS_CHOWN(conn, smb_fname, uid, gid); + if (ret != 0) { +- umask(saved_umask); + TALLOC_FREE(frame); + errno = ret; + return PyErr_SetFromErrno(PyExc_OSError); + } + +- umask(saved_umask); +- + TALLOC_FREE(frame); + + Py_RETURN_NONE; +-- +2.11.0 diff --git a/CVE-2019-3870-5.patch b/CVE-2019-3870-5.patch new file mode 100644 index 0000000..d7fe40b --- /dev/null +++ b/CVE-2019-3870-5.patch @@ -0,0 +1,59 @@ +From 61414430c6bd6c9c9bfa1512880ecc6adbdbf9b4 Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Thu, 21 Mar 2019 17:24:14 +1300 +Subject: [PATCH 5/5] CVE-2019-3870 pysmbd: Ensure a zero umask is set for + smbd.mkdir() + +mkdir() is the other call that requires a umask of 0 in Samba. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13834 + +Signed-off-by: Andrew Bartlett +Reviewed-by: Jeremy Allison +--- + selftest/knownfail.d/pymkdir-umask | 1 - + source3/smbd/pysmbd.c | 11 ++++++++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + delete mode 100644 selftest/knownfail.d/pymkdir-umask + +diff --git a/selftest/knownfail.d/pymkdir-umask b/selftest/knownfail.d/pymkdir-umask +deleted file mode 100644 +index 5af01be44e3..00000000000 +--- a/selftest/knownfail.d/pymkdir-umask ++++ /dev/null +@@ -1 +0,0 @@ +-^samba.tests.ntacls_backup.samba.tests.ntacls_backup.NtaclsBackupRestoreTests.test_smbd_mkdir +\ No newline at end of file +diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysmbd.c +index 179a1ee2943..845ea25f936 100644 +--- a/source3/smbd/pysmbd.c ++++ b/source3/smbd/pysmbd.c +@@ -739,6 +739,8 @@ static PyObject *py_smbd_mkdir(PyObject *self, PyObject *args, PyObject *kwargs) + TALLOC_CTX *frame = talloc_stackframe(); + struct connection_struct *conn = NULL; + struct smb_filename *smb_fname = NULL; ++ int ret; ++ mode_t saved_umask; + + if (!PyArg_ParseTupleAndKeywords(args, + kwargs, +@@ -769,8 +771,15 @@ static PyObject *py_smbd_mkdir(PyObject *self, PyObject *args, PyObject *kwargs) + return NULL; + } + ++ /* we want total control over the permissions on created files, ++ so set our umask to 0 */ ++ saved_umask = umask(0); ++ ++ ret = SMB_VFS_MKDIR(conn, smb_fname, 00755); + +- if (SMB_VFS_MKDIR(conn, smb_fname, 00755) == -1) { ++ umask(saved_umask); ++ ++ if (ret == -1) { + DBG_ERR("mkdir error=%d (%s)\n", errno, strerror(errno)); + TALLOC_FREE(frame); + return NULL; +-- +2.11.0 + diff --git a/CVE-2019-3880.patch b/CVE-2019-3880.patch new file mode 100644 index 0000000..eded5d9 --- /dev/null +++ b/CVE-2019-3880.patch @@ -0,0 +1,151 @@ +From a803d2524b8c06e2c360db0c686a212ac49f7321 Mon Sep 17 00:00:00 2001 +From: Jeremy Allison +Date: Thu, 21 Mar 2019 14:51:30 -0700 +Subject: [PATCH] CVE-2019-3880 s3: rpc: winreg: Remove implementations of + SaveKey/RestoreKey. + +The were not using VFS backend calls and could only work +locally, and were unsafe against symlink races and other +security issues. + +If the incoming handle is valid, return WERR_BAD_PATHNAME. + +[MS-RRP] states "The format of the file name is implementation-specific" +so ensure we don't allow this. + +As reported by Michael Hanselmann. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13851 + +Signed-off-by: Jeremy Allison +Reviewed-by: Andrew Bartlett +--- + source3/rpc_server/winreg/srv_winreg_nt.c | 92 ++----------------------------- + 1 file changed, 4 insertions(+), 88 deletions(-) + +diff --git a/source3/rpc_server/winreg/srv_winreg_nt.c b/source3/rpc_server/winreg/srv_winreg_nt.c +index d9ee8d0602d..816c6bb2a12 100644 +--- a/source3/rpc_server/winreg/srv_winreg_nt.c ++++ b/source3/rpc_server/winreg/srv_winreg_nt.c +@@ -640,46 +640,6 @@ WERROR _winreg_AbortSystemShutdown(struct pipes_struct *p, + } + + /******************************************************************* +- ********************************************************************/ +- +-static int validate_reg_filename(TALLOC_CTX *ctx, char **pp_fname ) +-{ +- char *p = NULL; +- int num_services = lp_numservices(); +- int snum = -1; +- const char *share_path = NULL; +- char *fname = *pp_fname; +- +- /* convert to a unix path, stripping the C:\ along the way */ +- +- if (!(p = valid_share_pathname(ctx, fname))) { +- return -1; +- } +- +- /* has to exist within a valid file share */ +- +- for (snum=0; snumin.handle ); +- char *fname = NULL; +- int snum = -1; + +- if ( !regkey ) ++ if ( !regkey ) { + return WERR_INVALID_HANDLE; +- +- if ( !r->in.filename || !r->in.filename->name ) +- return WERR_INVALID_PARAMETER; +- +- fname = talloc_strdup(p->mem_ctx, r->in.filename->name); +- if (!fname) { +- return WERR_NOT_ENOUGH_MEMORY; + } +- +- DEBUG(8,("_winreg_RestoreKey: verifying restore of key [%s] from " +- "\"%s\"\n", regkey->key->name, fname)); +- +- if ((snum = validate_reg_filename(p->mem_ctx, &fname)) == -1) +- return WERR_BAD_PATHNAME; +- +- /* user must posses SeRestorePrivilege for this this proceed */ +- +- if ( !security_token_has_privilege(p->session_info->security_token, SEC_PRIV_RESTORE)) { +- return WERR_ACCESS_DENIED; +- } +- +- DEBUG(2,("_winreg_RestoreKey: Restoring [%s] from %s in share %s\n", +- regkey->key->name, fname, lp_servicename(talloc_tos(), snum) )); +- +- return reg_restorekey(regkey, fname); ++ return WERR_BAD_PATHNAME; + } + + /******************************************************************* +@@ -727,30 +662,11 @@ WERROR _winreg_SaveKey(struct pipes_struct *p, + struct winreg_SaveKey *r) + { + struct registry_key *regkey = find_regkey_by_hnd( p, r->in.handle ); +- char *fname = NULL; +- int snum = -1; + +- if ( !regkey ) ++ if ( !regkey ) { + return WERR_INVALID_HANDLE; +- +- if ( !r->in.filename || !r->in.filename->name ) +- return WERR_INVALID_PARAMETER; +- +- fname = talloc_strdup(p->mem_ctx, r->in.filename->name); +- if (!fname) { +- return WERR_NOT_ENOUGH_MEMORY; + } +- +- DEBUG(8,("_winreg_SaveKey: verifying backup of key [%s] to \"%s\"\n", +- regkey->key->name, fname)); +- +- if ((snum = validate_reg_filename(p->mem_ctx, &fname)) == -1 ) +- return WERR_BAD_PATHNAME; +- +- DEBUG(2,("_winreg_SaveKey: Saving [%s] to %s in share %s\n", +- regkey->key->name, fname, lp_servicename(talloc_tos(), snum) )); +- +- return reg_savekey(regkey, fname); ++ return WERR_BAD_PATHNAME; + } + + /******************************************************************* +-- +2.11.0 + diff --git a/README.dc b/README.dc new file mode 100644 index 0000000..d67a556 --- /dev/null +++ b/README.dc @@ -0,0 +1,12 @@ +MIT Kerberos 5 Support +======================= + +Fedora is using MIT Kerberos implementation as its Kerberos infrastructure of +choice. The Samba build in Fedora is using MIT Kerberos implementation in order +to allow system-wide interoperability between both desktop and server +applications running on the same machine. + +In this build the Active Directory support has been disabled. + +In case of further questions do not hesitate to send your inquiries to +samba-owner@fedoraproject.org diff --git a/README.downgrade b/README.downgrade new file mode 100644 index 0000000..5cb0aaa --- /dev/null +++ b/README.downgrade @@ -0,0 +1,29 @@ +Downgrading Samba +================= + +Short version: data-preserving downgrades between Samba versions are not supported + +Long version: +With Samba development there are cases when on-disk database format evolves. +In general, Samba Team attempts to maintain forward compatibility and +automatically upgrade databases during runtime when requires. +However, when downgrade is required Samba will not perform downgrade to +existing databases. It may be impossible if new features that caused database +upgrade are in use. Thus, one needs to consider a downgrade procedure before +actually downgrading Samba setup. + +Please always perform back up prior both upgrading and downgrading across major +version changes. Restoring database files is easiest and simplest way to get to +previously working setup. + +Easiest way to downgrade is to remove all created databases and start from scratch. +This means losing all authentication and domain relationship data, as well as +user databases (in case of tdb storage), printers, registry settings, and winbindd +caches. + +Remove databases in following locations: +/var/lib/samba/*.tdb +/var/lib/samba/private/*.tdb + +In particular, registry settings are known to prevent running downgraded versions +(Samba 4 to Samba 3) as registry format has changed between Samba 3 and Samba 4. diff --git a/gpgkey-52FBC0B86D954B0843324CDC6F33915B6568B7EA.gpg b/gpgkey-52FBC0B86D954B0843324CDC6F33915B6568B7EA.gpg new file mode 100644 index 0000000..a61ebc4 Binary files /dev/null and b/gpgkey-52FBC0B86D954B0843324CDC6F33915B6568B7EA.gpg differ diff --git a/pam_winbind.conf b/pam_winbind.conf new file mode 100644 index 0000000..dd0b112 --- /dev/null +++ b/pam_winbind.conf @@ -0,0 +1,38 @@ +# +# pam_winbind configuration file +# +# /etc/security/pam_winbind.conf +# + +[global] + +# turn on debugging +;debug = no + +# turn on extended PAM state debugging +;debug_state = no + +# request a cached login if possible +# (needs "winbind offline logon = yes" in smb.conf) +;cached_login = no + +# authenticate using kerberos +;krb5_auth = no + +# when using kerberos, request a "FILE" krb5 credential cache type +# (leave empty to just do krb5 authentication but not have a ticket +# afterwards) +;krb5_ccache_type = + +# make successful authentication dependend on membership of one SID +# (can also take a name) +;require_membership_of = + +# password expiry warning period in days +;warn_pwd_expire = 14 + +# omit pam conversations +;silent = no + +# create homedirectory on the fly +;mkhomedir = no diff --git a/samba-4.9.0rc5-stack-protector.patch b/samba-4.9.0rc5-stack-protector.patch new file mode 100644 index 0000000..51bc83a --- /dev/null +++ b/samba-4.9.0rc5-stack-protector.patch @@ -0,0 +1,117 @@ +From e2dd47233f467e2ab80564968be4af6da6505161 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Mon, 3 Sep 2018 10:35:08 +0200 +Subject: [PATCH 1/2] waf: Check for -fstack-protect-strong support + +The -fstack-protector* flags are compiler only flags, don't pass them to +the linker. + +https://developers.redhat.com/blog/2018/03/21/compiler-and-linker-flags-gcc/ + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13601 + +Signed-off-by: Andreas Schneider +Reviewed-by: Andrew Bartlett +(cherry picked from commit 38e97f8b52e85bdfcf2d74a4fb3c848fa46ba371) +--- + buildtools/wafsamba/samba_autoconf.py | 36 ++++++++++++++------------- + 1 file changed, 19 insertions(+), 17 deletions(-) + +diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py +index c4391d0c4dc..bfd6f9710db 100644 +--- a/buildtools/wafsamba/samba_autoconf.py ++++ b/buildtools/wafsamba/samba_autoconf.py +@@ -674,23 +674,25 @@ def SAMBA_CONFIG_H(conf, path=None): + return + + # we need to build real code that can't be optimized away to test +- if conf.check(fragment=''' +- #include +- +- int main(void) +- { +- char t[100000]; +- while (fgets(t, sizeof(t), stdin)); +- return 0; +- } +- ''', +- execute=0, +- ccflags='-fstack-protector', +- ldflags='-fstack-protector', +- mandatory=False, +- msg='Checking if toolchain accepts -fstack-protector'): +- conf.ADD_CFLAGS('-fstack-protector') +- conf.ADD_LDFLAGS('-fstack-protector') ++ stack_protect_list = ['-fstack-protector-strong', '-fstack-protector'] ++ for stack_protect_flag in stack_protect_list: ++ flag_supported = conf.check(fragment=''' ++ #include ++ ++ int main(void) ++ { ++ char t[100000]; ++ while (fgets(t, sizeof(t), stdin)); ++ return 0; ++ } ++ ''', ++ execute=0, ++ ccflags=[ '-Werror', '-Wp,-D_FORTIFY_SOURCE=2', stack_protect_flag], ++ mandatory=False, ++ msg='Checking if compiler accepts %s' % (stack_protect_flag)) ++ if flag_supported: ++ conf.ADD_CFLAGS('-Wp,-D_FORTIFY_SOURCE=2 %s' % (stack_protect_flag)) ++ break + + if Options.options.debug: + conf.ADD_CFLAGS('-g', testflags=True) +-- +2.18.0 + + +From 09f3acb3497efb9ebb8a0d7d199726a8c318e4f8 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Mon, 3 Sep 2018 10:49:52 +0200 +Subject: [PATCH 2/2] waf: Add -fstack-clash-protection + +https://developers.redhat.com/blog/2018/03/21/compiler-and-linker-flags-gcc/ + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13601 + +Signed-off-by: Andreas Schneider +Reviewed-by: Andrew Bartlett +(cherry picked from commit fc4df251c88365142515a81bea1120b2b84cc4a0) +--- + buildtools/wafsamba/samba_autoconf.py | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py +index bfd6f9710db..f2b3ec8db8d 100644 +--- a/buildtools/wafsamba/samba_autoconf.py ++++ b/buildtools/wafsamba/samba_autoconf.py +@@ -694,6 +694,23 @@ def SAMBA_CONFIG_H(conf, path=None): + conf.ADD_CFLAGS('-Wp,-D_FORTIFY_SOURCE=2 %s' % (stack_protect_flag)) + break + ++ flag_supported = conf.check(fragment=''' ++ #include ++ ++ int main(void) ++ { ++ char t[100000]; ++ while (fgets(t, sizeof(t), stdin)); ++ return 0; ++ } ++ ''', ++ execute=0, ++ ccflags=[ '-Werror', '-fstack-clash-protection'], ++ mandatory=False, ++ msg='Checking if compiler accepts -fstack-clash-protection') ++ if flag_supported: ++ conf.ADD_CFLAGS('-fstack-clash-protection') ++ + if Options.options.debug: + conf.ADD_CFLAGS('-g', testflags=True) + +-- +2.18.0 + diff --git a/samba-4.9.1.tar.asc b/samba-4.9.1.tar.asc new file mode 100644 index 0000000..3a95975 --- /dev/null +++ b/samba-4.9.1.tar.asc @@ -0,0 +1,6 @@ +-----BEGIN PGP SIGNATURE----- + +iFwEABECABwFAluomosVHHNhbWJhLWJ1Z3NAc2FtYmEub3JnAAoJEG8zkVtlaLfq +Ef0AoLUiZNu1bqD0YjbzI8KCisfwPF/2AKDGrFuyL4ds6Ege/OiUbg7krCXrOg== +=2NTz +-----END PGP SIGNATURE----- diff --git a/samba-4.9.1.tar.xz b/samba-4.9.1.tar.xz new file mode 100644 index 0000000..878707e Binary files /dev/null and b/samba-4.9.1.tar.xz differ diff --git a/samba.log b/samba.log new file mode 100644 index 0000000..6ccd04d --- /dev/null +++ b/samba.log @@ -0,0 +1,7 @@ +/var/log/samba/* { + notifempty + olddir /var/log/samba/old + missingok + sharedscripts + copytruncate +} diff --git a/samba.pamd b/samba.pamd new file mode 100644 index 0000000..66cd2a9 --- /dev/null +++ b/samba.pamd @@ -0,0 +1,6 @@ +#%PAM-1.0 +auth required pam_nologin.so +auth include password-auth +account include password-auth +session include password-auth +password include password-auth diff --git a/samba.spec b/samba.spec new file mode 100644 index 0000000..aff33f6 --- /dev/null +++ b/samba.spec @@ -0,0 +1,3367 @@ +%bcond_with testsuite +%bcond_without clustering + +%define talloc_version 2.1.14 +%define tdb_version 1.3.16 +%define tevent_version 0.9.37 +%define ldb_version 1.4.2 + +%undefine _strict_symbol_defs_build + +%global with_libsmbclient 1 +%global with_libwbclient 1 +%global with_profiling 1 +%global with_vfs_cephfs 0 + +%global with_vfs_glusterfs 0 +%ifarch x86_64 +%global with_vfs_glusterfs 1 +%endif + +%global with_intel_aes_accel 0 +%ifarch x86_64 +%global with_intel_aes_accel 1 +%endif + +%global libwbc_alternatives_version 0.14 +%global libwbc_alternatives_suffix %nil +%if 0%{?__isa_bits} == 64 +%global libwbc_alternatives_suffix -64 +%endif + +%global with_mitkrb5 1 + +%global with_dc 1 +%if %{with testsuite} +%global with_dc 1 +%endif + +%global required_mit_krb5 1.15.1 + +%global with_clustering_support 0 +%if %{with clustering} +%global with_clustering_support 1 +%endif + +%{!?python2_sitearch: %define python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} + +%global _systemd_extra "Environment=KRB5CCNAME=FILE:/run/samba/krb5cc_samba" +%define samba_depver %{version}-%{release} + +Name: samba +Version: 4.9.1 +Release: 3 +Summary: A suite for Linux to interoperate with Windows +License: GPLv3+ and LGPLv3+ +URL: http://www.samba.org/ +Source0: https://ftp.samba.org/pub/samba/%{name}-%{version}.tar.xz +Source1: https://ftp.samba.org/pub/samba/%{name}-%{version}.tar.asc +Source2: gpgkey-52FBC0B86D954B0843324CDC6F33915B6568B7EA.gpg +Source3: samba.log +Source4: smb.conf.vendor +Source5: smb.conf.example +Source6: pam_winbind.conf +Source7: samba.pamd +Source8: README.dc +Source9: README.downgrade + +Patch6000: samba-4.9.0rc5-stack-protector.patch +Patch6001: CVE-2018-14629.patch +Patch6002: CVE-2018-16851.patch +Patch6003: CVE-2018-16853-1.patch +Patch6004: CVE-2018-16853-2.patch +Patch6005: CVE-2019-3870-1.patch +Patch6006: CVE-2019-3870-2.patch +Patch6007: CVE-2019-3870-3.patch +Patch6008: CVE-2019-3870-4.patch +Patch6009: CVE-2019-3870-5.patch +Patch6010: CVE-2019-3880.patch +Patch6011: CVE-2018-16841-1.patch +Patch6012: CVE-2018-16841-2.patch +Patch6013: CVE-2019-12435-1.patch +Patch6014: CVE-2019-12435-2.patch + +BuildRequires: avahi-devel cups-devel dbus-devel docbook-style-xsl e2fsprogs-devel gawk gnupg2 gpgme-devel +BuildRequires: jansson-devel krb5-devel >= %{required_mit_krb5} libacl-devel libaio-devel libarchive-devel +BuildRequires: libattr-devel libcap-devel libcmocka-devel libnsl2-devel libtirpc-devel libuuid-devel +BuildRequires: libxslt ncurses-devel openldap-devel pam-devel perl-generators perl(Test::More) +BuildRequires: perl(ExtUtils::MakeMaker) perl(Parse::Yapp) popt-devel python2-devel python3-devel +%if %{with_dc} +BuildRequires: python2-dns python2-iso8601 python3-iso8601 +%endif +BuildRequires: quota-devel readline-devel rpcgen rpcsvc-proto-devel sed xfsprogs-devel xz zlib-devel >= 1.2.3 +BuildRequires: pkgconfig(libsystemd) +%if %{with_vfs_glusterfs} +BuildRequires: glusterfs-api-devel >= 3.4.0.16 glusterfs-devel >= 3.4.0.16 +%endif +%if %{with_vfs_cephfs} +BuildRequires: libcephfs-devel +%endif +%if %{with_dc} +BuildRequires: bind gnutls-devel >= 3.4.7 krb5-server >= %{required_mit_krb5} python2-crypto python3-crypto +%endif +BuildRequires: perl(Parse::Yapp) libtalloc-devel >= %{talloc_version} python2-talloc-devel >= %{talloc_version} +BuildRequires: python3-talloc-devel >= %{talloc_version} libtevent-devel >= %{tevent_version} +BuildRequires: python2-tevent >= %{tevent_version} python3-tevent >= %{tevent_version} +BuildRequires: libtdb-devel >= %{tdb_version} python2-tdb >= %{tdb_version} python3-tdb >= %{tdb_version} +BuildRequires: libldb-devel >= %{ldb_version} python2-ldb-devel >= %{ldb_version} +BuildRequires: python3-ldb-devel >= %{ldb_version} +%if %{with testsuite} +BuildRequires: ldb-tools tdb-tools python2-pygpgme python2-markdown python3-pygpgme python3-markdown +%endif +%if %{with_dc} +BuildRequires: krb5-server >= %{required_mit_krb5} bind +%endif + +Requires: systemd shadow-utils pam %{name}-common = %{samba_depver} +Requires: %{name}-common = %{samba_depver} %{name}-common-tools = %{samba_depver} +Requires: %{name}-client = %{samba_depver} +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} +%endif + +Provides: samba4 = %{samba_depver} samba-doc = %{samba_depver} samba-domainjoin-gui = %{samba_depver} +Provides: samba-swat = %{samba_depver} samba4-swat = %{samba_depver} %{name}-libs = %{samba_depver} +Provides: samba4-libs = %{samba_depver} +Obsoletes: samba4 < %{samba_depver} samba-doc < %{samba_depver} samba-domainjoin-gui < %{samba_depver} +Obsoletes: samba-swat < %{samba_depver} samba4-swat < %{samba_depver} %{name}-libs < %{samba_depver} +Obsoletes: samba4-libs < %{samba_depver} + +%description +Samba is a suite of programs for Linux and Unix to interoperate with Windows. + +%package client +Summary: Client package for %{name} +Requires: %{name}-common = %{samba_depver} +Requires: chkconfig krb5-libs >= %{required_mit_krb5} +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} +%endif +%if %with_libsmbclient +Requires: libsmbclient = %{samba_depver} +%endif +Provides: samba4-client = %{samba_depver} %{name}-client-libs +Obsoletes: samba4-client < %{samba_depver} %{name}-client-libs + +%description client +This package includes some files about SMB/CIFS clients to complement +the SMB/CIFS filesystem. + +%package common +Summary: Common package for %{name} client and server +Requires: systemd +Requires: %{name}-client = %{samba_depver} +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} +%endif +Provides: samba4-common = %{samba_depver} %{name}-common-libs +Obsoletes: samba4-common < %{samba_depver} %{name}-common-libs + +%description common +This package contains some common basic files needed by %{name} client +and server. + +%package common-tools +Summary: Tools package for %{name} +Requires: %{name}-common = %{samba_depver} %{name}-client = %{samba_depver} %{name} = %{samba_depver} +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} +%endif + +%description common-tools +This package contains some tools for %{name} server and client. + +%package dc +Summary: Domain Controller package for %{name} +Requires: %{name} = %{samba_depver} %{name}-winbind = %{samba_depver} +Requires: %{name}-common = %{samba_depver} tdb-tools +%if %{with_dc} +Requires: python2 python2-%{name} = %{samba_depver} python2-%{name}-dc = %{samba_depver} +Requires: python2-crypto krb5-server >= %{required_mit_krb5} +# needs libldb and samba version are the same. Otherwise samba-tools +# will not work +%requires_eq libldb +%endif +Provides: samba4-dc = %{samba_depver} %{name}-dc-libs samba4-dc-libs = %{samba_depver} +Obsoletes: samba4-dc < %{samba_depver} %{name}-dc-libs samba4-dc-libs < %{samba_depver} + +%description dc +The samba-dc package provides AD Domain Controller functionality, including some +libraries. + +%if %{with_dc} +%package dc-bind-dlz +Summary: Bind DLZ module for Samba AD +Requires: %{name}-common = %{samba_depver} %{name}-dc = %{samba_depver} bind + +%description dc-bind-dlz +This package contains the library files to manage name server related details of +Samba AD. +%endif + +%package devel +Summary: Development package for %{name} +Requires: %{name} = %{samba_depver} %{name}-client = %{samba_depver} +Provides: samba4-devel = %{samba_depver} +Obsoletes: samba4-devel < %{samba_depver} + +%description devel +This package contains some header files and library files for %{name}. + +%if %{with_vfs_cephfs} +%package vfs-cephfs +Summary: The VFS module for Ceph distributed storage system +Requires: %{name} = %{samba_depver} + +%description vfs-cephfs +This is the samba VFS module for Ceph distributed storage system integration. +%endif + +%if %{with_vfs_glusterfs} +%package vfs-glusterfs +Summary: The VFS module for GlusterFS +Requires: glusterfs-api >= 3.4.0.16 glusterfs >= 3.4.0.16 +Requires: %{name} = %{samba_depver} %{name}-client = %{samba_depver} +Obsoletes: samba-glusterfs < %{samba_depver} +Provides: samba-glusterfs = %{samba_depver} + +%description vfs-glusterfs +This is the samba VFS module for GlusterFS integration. +%endif + +%package krb5-printing +Summary: The samba CUPS backend package for printing with Kerberos +Requires: %{name}-client chkconfig + +%description krb5-printing +This package will allow cups to access the Kerberos credentials cache +of the user issuing the print job. + +%if %with_libsmbclient +%package -n libsmbclient +Summary: The SMB client library package for %{name} +Requires: %{name}-common = %{samba_depver} %{name}-client = %{samba_depver} + +%description -n libsmbclient +This pacakge contains the SMB client library from the Samba suite. + +%package -n libsmbclient-devel +Summary: Development package for the SMB client library +Requires: libsmbclient = %{samba_depver} + +%description -n libsmbclient-devel +This package contains some head files and libraries for libsmbclient package. +%endif + +%if %with_libwbclient +%package -n libwbclient +Summary: The winbind client library for %{name} +Requires: %{name}-client = %{samba_depver} + +%description -n libwbclient +This package contains the winbind client library from the Samba. + +%package -n libwbclient-devel +Summary: The development package for the winbind library +Requires: libwbclient = %{samba_depver} +Provides: samba-winbind-devel = %{samba_depver} +Obsoletes: samba-winbind-devel < %{samba_depver} + +%description -n libwbclient-devel +This package provides developer tools for the wbclient library. +%endif + +%if %{with_dc} +%package -n python2-%{name} +Summary: Python libraries for %{name} +Requires: %{name} = %{samba_depver} %{name}-client = %{samba_depver} %{name}-common = %{samba_depver} +Requires: python2-tevent python2-tdb python2-ldb python2-talloc python2-dns +Provides: samba-python = %{samba_depver} samba4-python = %{samba_depver} +Obsoletes: samba-python < %{samba_depver} samba4-python < %{samba_depver} + +%description -n python2-%{name} +This package contains the Python libraries needed by programs to use SMB, RPC + and other Samba provided protocols in Python programs. + +%package -n python2-samba-test +Summary: Samba Python libraries +Requires: python2-%{name} = %{samba_depver} + +%description -n python2-samba-test +This package contains some python libraries for test package of %{name}. + +%package -n python2-samba-dc +Summary: Python libraries for Samba AD +Requires: python2-%{name} = %{samba_depver} + +%description -n python2-samba-dc +This package contains the Python libraries needed by programs +to manage Samba AD. +%endif + +%package -n python3-%{name} +Summary: Python3 library package for %{name} +Requires: %{name} = %{samba_depver} %{name}-client = %{samba_depver} %{name}-common = %{samba_depver} +Requires: python3-talloc python3-tevent python3-tdb python3-ldb python3-dns + +%description -n python3-%{name} +This package contains the Python 3 libraries needed by programs +that use SMB, RPC and other Samba provided protocols in Python 3 programs. + +%package -n python3-samba-test +Summary: Test package for python3 binding for %{name} +Requires: python3-%{name} = %{samba_depver} + +%description -n python3-samba-test +This package contains the Python libraries used by the test suite of Samba. +If you want to run full set of Samba tests, you need to install this package. + +%if %{with_dc} +%package -n python3-samba-dc +Summary: The Samba Python libraries for Samba AD +Requires: python3-%{name} = %{samba_depver} + +%description -n python3-samba-dc +This contains the Python libraries needed by programs +to manage Samba AD. +%endif + +%package pidl +Summary: Perl IDL compiler package for %{name} +Requires: perl(Parse::Yapp) perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) +BuildArch: noarch +Provides: samba4-pidl = %{samba_depver} +Obsoletes: samba4-pidl < %{samba_depver} + +%description pidl +This package contains the Perl IDL compiler used by Samba +and Wireshark to parse IDL and similar protocols. + +%package test +Summary: Testing tools and libraries for Samba servers and clients +Requires: %{name} = %{samba_depver} %{name}-common = %{samba_depver} %{name}-winbind = %{samba_depver} +Requires: %{name}-client = %{samba_depver} +%if %with_dc +Requires: %{name}-dc = %{samba_depver} +%endif +%if %with_libsmbclient +Requires: libsmbclient = %{samba_depver} +%endif +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} +%endif +Provides: samba4-test = %{samba_depver} %{name}-test-libs %{name}-test-devel = %{samba_depver} +Obsoletes: samba4-test < %{samba_depver} %{name}-test-libs %{name}-test-devel < %{samba_depver} + +%description test +%{name}-test provides testing tools for both the server and client +packages of Samba. + +%package winbind +Summary: The winbind package for %{name} +Requires: %{name}-common = %{samba_depver} %{name}-common-tools = %{samba_depver} +Requires: %{name}-client = %{samba_depver} %{name}-winbind-modules = %{samba_depver} +Provides: samba4-winbind = %{samba_depver} +Obsoletes: samba4-winbind < %{samba_depver} + +%description winbind +This package provides the winbind NSS library, and some client +tools. Winbind enables Linux to be a full member in Windows domains and to use +Windows user and group accounts on Linux. + +%package winbind-clients +Summary: The winbind client package for %{name} +Requires: %{name}-common = %{samba_depver} %{name}-client = %{samba_depver} %{name}-winbind = %{samba_depver} +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} +%endif +Provides: samba4-winbind-clients = %{samba_depver} +Obsoletes: samba4-winbind-clients < %{samba_depver} + +%description winbind-clients +This package contains the wbinfo and ntlm_auth tool. + +%package winbind-krb5-locator +Summary: Winbind krb5 locator package for %{name} +Requires: chkconfig +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} %{name}-winbind = %{samba_depver} +%else +Requires: %{name} = %{samba_depver} +%endif +Provides: samba4-winbind-krb5-locator = %{samba_depver} +Obsoletes: samba4-winbind-krb5-locator < %{samba_depver} + +%description winbind-krb5-locator +This package is a plugin for the system kerberos library to allow +the local kerberos library to use the same KDC as samba and winbind use + +%package winbind-modules +Summary: The winbind modules for %{name} +Requires: %{name}-client = %{samba_depver} %{name} = %{samba_depver} pam +%if %with_libwbclient +Requires: libwbclient = %{samba_depver} +%endif + +%description winbind-modules +This package provides the NSS library and a PAM module +necessary to communicate to the Winbind Daemon + +%if %with_clustering_support +%package -n ctdb +Summary: A Clustered Database package based on Samba's Trivial Database (TDB) +Requires: %{name}-client = %{samba_depver} coreutils psmisc sed tdb-tools gawk +Requires: procps-ng net-tools ethtool iproute iptables util-linux systemd-units + +%description -n ctdb +This package is a cluster implementation of the TDB database used by Samba and other +projects to store temporary data. If an application is already using TDB for +temporary data it is very easy to convert that application to be cluster aware +and use CTDB instead. + +%package -n ctdb-tests +Summary: The test package fors CTDB clustered database +Requires: %{name}-client = %{samba_depver} ctdb = %{samba_depver} +Recommends: nc +Provides: ctdb-devel = %{samba_depver} +Obsoletes: ctdb-devel < %{samba_depver} + +%description -n ctdb-tests +This package contains the test suite for CTDB clustered database. +%endif + +%package help +Summary: Help package for %{name} + +%description help +This package contains some man help files for %{name}. + +%prep +xzcat %{SOURCE0} | gpgv2 --quiet --keyring %{SOURCE2} %{SOURCE1} - +%autosetup -n %{name}-%{version} -p1 + +%build +%global _talloc_lib ,talloc,pytalloc,pytalloc-util +%global _tevent_lib ,tevent,pytevent +%global _tdb_lib ,tdb,pytdb +%global _ldb_lib ,ldb,pyldb,pyldb-util + +%global _talloc_lib ,!talloc,!pytalloc,!pytalloc-util +%global _tevent_lib ,!tevent,!pytevent +%global _tdb_lib ,!tdb,!pytdb +%global _ldb_lib ,!ldb,!pyldb,!pyldb-util + +%global _samba_libraries !zlib,!popt%{_talloc_lib}%{_tevent_lib}%{_tdb_lib}%{_ldb_lib} + +%global _samba_idmap_modules idmap_ad,idmap_rid,idmap_ldap,idmap_hash,idmap_tdb2 +%global _samba_pdb_modules pdb_tdbsam,pdb_ldap,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4 +%global _samba_auth_modules auth_wbc,auth_unix,auth_server,auth_script,auth_samba4 +%global _samba_vfs_modules vfs_dfs_samba4 + +%global _samba_modules %{_samba_idmap_modules},%{_samba_pdb_modules},%{_samba_auth_modules},%{_samba_vfs_modules} + +%global _libsmbclient %nil +%global _libwbclient %nil + +%if ! %with_libsmbclient +%global _libsmbclient smbclient, +%endif + +%if ! %with_libwbclient +%global _libwbclient wbclient, +%endif + +%global _samba_private_libraries %{_libsmbclient}%{_libwbclient} + +export python_LDFLAGS="$(echo %{__global_ldflags} | sed -e 's/-Wl,-z,defs//g')" + +export LDFLAGS="%{__global_ldflags} -fuse-ld=gold" + +pathfix.py -n -p -i %{__python2} buildtools/bin/waf +export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 + +export PYTHON=%{__python2} + +%configure \ + --enable-fhs \ + --with-piddir=/run \ + --with-sockets-dir=/run/samba \ + --with-modulesdir=%{_libdir}/samba \ + --with-pammodulesdir=%{_libdir}/security \ + --with-lockdir=/var/lib/samba/lock \ + --with-statedir=/var/lib/samba \ + --with-cachedir=/var/lib/samba \ + --disable-rpath-install \ + --with-shared-modules=%{_samba_modules} \ + --bundled-libraries=%{_samba_libraries} \ + --with-pam \ + --with-pie \ + --with-relro \ + --without-fam \ +%if (! %with_libsmbclient) || (! %with_libwbclient) + --private-libraries=%{_samba_private_libraries} \ +%endif +%if %with_mitkrb5 + --with-system-mitkrb5 \ + --with-experimental-mit-ad-dc \ +%endif +%if ! %with_dc + --without-ad-dc \ +%endif +%if ! %with_vfs_glusterfs + --disable-glusterfs \ +%endif +%if %with_clustering_support + --with-cluster-support \ +%endif +%if %with_profiling + --with-profiling-data \ +%endif +%if %{with testsuite} + --enable-selftest \ +%endif +%if %with_intel_aes_accel + --accel-aes=intelaesni \ +%endif + --with-systemd \ + --systemd-install-services \ + --with-systemddir=/usr/lib/systemd/system \ + --systemd-smb-extra=%{_systemd_extra} \ + --systemd-nmb-extra=%{_systemd_extra} \ + --systemd-winbind-extra=%{_systemd_extra} \ + --systemd-samba-extra=%{_systemd_extra} \ + --extra-python=%{__python3} + +%make_build + +%install +rm -rf %{buildroot} + +export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 +export PYTHON=%{__python2} + +%make_install + +for i in %{buildroot}%{_bindir} %{buildroot}%{_sbindir} ; do + find $i \ + ! -name '*.pyc' -a \ + ! -name '*.pyo' -a \ + -type f -exec grep -qsm1 '^#!.*\bpython' {} \; \ + -exec sed -i -e '1 s|^#!.*\bpython[^ ]*|#!%{__python2}|' {} \; +done + +filenames=$(echo " + tests/dcerpc/integer.py + tests/dcerpc/unix.py +") +for file in $filenames; do + filename="%{buildroot}/%{python3_sitearch}/samba/$file" + if python3 -c "with open('$filename') as f: compile(f.read(), '$file', 'exec')"; then + echo "python3 compilation of $file succeeded unexpectedly" + exit 1 + else + echo "python3 compilation of $file failed, removing" + rm "$filename" + fi +done + +install -dm755 %{buildroot}/usr/{sbin,bin} +install -dm755 %{buildroot}%{_libdir}/{security,pkgconfig} +install -dm755 %{buildroot}/%{_libdir}/samba/{ldb,wbclient} +install -dm755 %{buildroot}/var/lib/samba/{drivers,lock,private,scripts,sysvol,winbindd_privileged} +install -dm755 %{buildroot}/var/log/samba/old +install -dm755 %{buildroot}/var/spool/samba +install -dm755 %{buildroot}/var/run/{samba,winbindd} + +mv %{buildroot}/%{_libdir}/libwbclient.so* %{buildroot}/%{_libdir}/samba/wbclient +if [ ! -f %{buildroot}/%{_libdir}/samba/wbclient/libwbclient.so.%{libwbc_alternatives_version} ] +then + echo "Expected libwbclient version not found, please check if version has changed." + exit -1 +fi + +touch %{buildroot}%{_libexecdir}/samba/cups_backend_smb + +install -dm755 %{buildroot}%{_sysconfdir}/logrotate.d +install -m644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/samba + +install -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/samba/smb.conf +install -m644 %{SOURCE5} %{buildroot}%{_sysconfdir}/samba/smb.conf.example + +install -dm755 %{buildroot}%{_sysconfdir}/security +install -m644 %{SOURCE6} %{buildroot}%{_sysconfdir}/security/pam_winbind.conf + +install -dm755 %{buildroot}%{_sysconfdir}/pam.d +install -m644 %{SOURCE7} %{buildroot}%{_sysconfdir}/pam.d/samba + +echo 127.0.0.1 localhost > %{buildroot}%{_sysconfdir}/samba/lmhosts + +install -dm755 %{buildroot}%{_sysconfdir}/openldap/schema +install -m644 examples/LDAP/samba.schema %{buildroot}%{_sysconfdir}/openldap/schema/samba.schema + +install -m744 packaging/printing/smbprint %{buildroot}%{_bindir}/smbprint + +install -dm755 %{buildroot}%{_tmpfilesdir} +install -m644 packaging/systemd/samba.conf.tmp %{buildroot}%{_tmpfilesdir}/samba.conf + +echo "d /run/samba 755 root root" >> %{buildroot}%{_tmpfilesdir}/samba.conf +%if %with_clustering_support +echo "d /run/ctdb 755 root root" >> %{buildroot}%{_tmpfilesdir}/ctdb.conf +%endif + +install -dm755 %{buildroot}%{_sysconfdir}/sysconfig +install -m644 packaging/systemd/samba.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/samba +%if %with_clustering_support +cat > %{buildroot}%{_sysconfdir}/sysconfig/ctdb </dev/null || groupadd -r printadmin || : + +%post common +/sbin/ldconfig +%tmpfiles_create %{_tmpfilesdir}/samba.conf +if [ -d /var/cache/samba ]; then + mv /var/cache/samba/netsamlogon_cache.tdb /var/lib/samba/ 2>/dev/null + mv /var/cache/samba/winbindd_cache.tdb /var/lib/samba/ 2>/dev/null + rm -rf /var/cache/samba/ + ln -sf /var/cache/samba /var/lib/samba/ +fi + +%postun common +/sbin/ldconfig + +%post client +/sbin/ldconfig +%{_sbindir}/update-alternatives --install %{_libexecdir}/samba/cups_backend_smb \ + cups_backend_smb \ + %{_bindir}/smbspool 10 + +%postun client +/sbin/ldconfig +if [ $1 -eq 0 ] ; then + %{_sbindir}/update-alternatives --remove cups_backend_smb %{_bindir}/smbspool +fi + +%if %with_dc +%post dc +/sbin/ldconfig +%systemd_post samba.service + +%preun dc +%systemd_preun samba.service + +%postun dc +/sbin/ldconfig +%systemd_postun_with_restart samba.service +%endif + +%post krb5-printing +%{_sbindir}/update-alternatives --install %{_libexecdir}/samba/cups_backend_smb \ + cups_backend_smb \ + %{_libexecdir}/samba/smbspool_krb5_wrapper 50 + +%postun krb5-printing +if [ $1 -eq 0 ] ; then + %{_sbindir}/update-alternatives --remove cups_backend_smb %{_libexecdir}/samba/smbspool_krb5_wrapper +fi + +%if %with_libsmbclient +%post -n libsmbclient -p /sbin/ldconfig + +%postun -n libsmbclient -p /sbin/ldconfig +%endif + +%if %with_libwbclient +%posttrans -n libwbclient +%{_sbindir}/update-alternatives \ + --install \ + %{_libdir}/libwbclient.so.%{libwbc_alternatives_version} \ + libwbclient.so.%{libwbc_alternatives_version}%{libwbc_alternatives_suffix} \ + %{_libdir}/samba/wbclient/libwbclient.so.%{libwbc_alternatives_version} \ + 10 +/sbin/ldconfig + +%preun -n libwbclient +%{_sbindir}/update-alternatives \ + --remove \ + libwbclient.so.%{libwbc_alternatives_version}%{libwbc_alternatives_suffix} \ + %{_libdir}/samba/wbclient/libwbclient.so.%{libwbc_alternatives_version} +/sbin/ldconfig + +%posttrans -n libwbclient-devel +%{_sbindir}/update-alternatives \ + --install %{_libdir}/libwbclient.so \ + libwbclient.so%{libwbc_alternatives_suffix} \ + %{_libdir}/samba/wbclient/libwbclient.so \ + 10 + +%preun -n libwbclient-devel +if [ "`readlink %{_libdir}/libwbclient.so`" == "libwbclient.so.%{libwbc_alternatives_version}" ]; then + /bin/rm -f /etc/alternatives/libwbclient.so%{libwbc_alternatives_suffix} /var/lib/alternatives/libwbclient.so%{libwbc_alternatives_suffix} 2> /dev/null +else + %{_sbindir}/update-alternatives --remove libwbclient.so%{libwbc_alternatives_suffix} %{_libdir}/samba/wbclient/libwbclient.so +fi + +%endif + +%post test -p /sbin/ldconfig + +%postun test -p /sbin/ldconfig + +%pre winbind +/usr/sbin/groupadd -g 88 wbpriv >/dev/null 2>&1 || : + +%post winbind +%systemd_post winbind.service + +%preun winbind +%systemd_preun winbind.service + +%postun winbind +%systemd_postun_with_restart smb.service +%systemd_postun_with_restart nmb.service + +%postun winbind-krb5-locator +if [ "$1" -ge "1" ]; then + if [ "`readlink %{_sysconfdir}/alternatives/winbind_krb5_locator.so`" == "%{_libdir}/samba/krb5/winbind_krb5_locator.so" ]; then + %{_sbindir}/update-alternatives --set winbind_krb5_locator.so %{_libdir}/samba/krb5/winbind_krb5_locator.so + fi +fi + +%post winbind-krb5-locator +%{_sbindir}/update-alternatives --install %{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so \ + winbind_krb5_locator.so %{_libdir}/samba/krb5/winbind_krb5_locator.so 10 + +%preun winbind-krb5-locator +if [ $1 -eq 0 ]; then + %{_sbindir}/update-alternatives --remove winbind_krb5_locator.so %{_libdir}/samba/krb5/winbind_krb5_locator.so +fi + +%post winbind-modules -p /sbin/ldconfig + +%postun winbind-modules -p /sbin/ldconfig + +%if %with_clustering_support +%post -n ctdb +/usr/bin/systemd-tmpfiles --create %{_tmpfilesdir}/ctdb.conf +%systemd_post ctdb.service + +%preun -n ctdb +%systemd_preun ctdb.service + +%postun -n ctdb +%systemd_postun_with_restart ctdb.service +%endif + +%files +%license COPYING +%doc README WHATSNEW.txt +%doc examples/autofs examples/LDAP examples/misc +%doc examples/printer-accounting examples/printing +%doc packaging/README.downgrade +%{_libdir}/libdcerpc-samr.so.* +%{_libdir}/%{name}/libMESSAGING-samba4.so +%{_libdir}/%{name}/libMESSAGING-SEND-samba4.so +%{_libdir}/%{name}/libLIBWBCLIENT-OLD-samba4.so +%{_libdir}/%{name}/libauth4-samba4.so +%{_libdir}/%{name}/libauth-unix-token-samba4.so +%{_libdir}/%{name}/libcluster-samba4.so +%{_libdir}/%{name}/libdcerpc-samba4.so +%{_libdir}/%{name}/libnon-posix-acls-samba4.so +%{_libdir}/%{name}/libshares-samba4.so +%{_libdir}/%{name}/libsmbpasswdparser-samba4.so +%{_libdir}/%{name}/libxattr-tdb-samba4.so +%{_bindir}/smbstatus +%{_sbindir}/eventlogadm +%{_sbindir}/nmbd +%{_sbindir}/smbd +%if %{with_dc} +%{_libdir}/samba/vfs/dfs_samba4.so +%{_libdir}/samba/libdfs-server-ad-samba4.so +%endif +%dir %{_libdir}/%{name}/auth +%dir %{_libdir}/%{name}/vfs +%{_libdir}/%{name}/auth/script.so +%{_libdir}/%{name}/auth/unix.so +%{_libdir}/%{name}/vfs/acl_tdb.so +%{_libdir}/%{name}/vfs/acl_xattr.so +%{_libdir}/%{name}/vfs/aio_fork.so +%{_libdir}/%{name}/vfs/aio_pthread.so +%{_libdir}/%{name}/vfs/audit.so +%{_libdir}/%{name}/vfs/btrfs.so +%{_libdir}/%{name}/vfs/cap.so +%{_libdir}/%{name}/vfs/catia.so +%{_libdir}/%{name}/vfs/commit.so +%{_libdir}/%{name}/vfs/crossrename.so +%{_libdir}/%{name}/vfs/default_quota.so +%{_libdir}/%{name}/vfs/dirsort.so +%{_libdir}/%{name}/vfs/expand_msdfs.so +%{_libdir}/%{name}/vfs/extd_audit.so +%{_libdir}/%{name}/vfs/fake_perms.so +%{_libdir}/%{name}/vfs/fileid.so +%{_libdir}/%{name}/vfs/fruit.so +%{_libdir}/%{name}/vfs/full_audit.so +%{_libdir}/%{name}/vfs/linux_xfs_sgid.so +%{_libdir}/%{name}/vfs/media_harmony.so +%{_libdir}/%{name}/vfs/netatalk.so +%{_libdir}/%{name}/vfs/offline.so +%{_libdir}/%{name}/vfs/preopen.so +%{_libdir}/%{name}/vfs/readahead.so +%{_libdir}/%{name}/vfs/readonly.so +%{_libdir}/%{name}/vfs/recycle.so +%{_libdir}/%{name}/vfs/shadow_copy.so +%{_libdir}/%{name}/vfs/shadow_copy2.so +%{_libdir}/%{name}/vfs/shell_snap.so +%{_libdir}/%{name}/vfs/snapper.so +%{_libdir}/%{name}/vfs/streams_depot.so +%{_libdir}/%{name}/vfs/streams_xattr.so +%{_libdir}/%{name}/vfs/syncops.so +%{_libdir}/%{name}/vfs/time_audit.so +%{_libdir}/%{name}/vfs/unityed_media.so +%{_libdir}/%{name}/vfs/virusfilter.so +%{_libdir}/%{name}/vfs/worm.so +%{_libdir}/%{name}/vfs/xattr_tdb.so +%{_unitdir}/nmb.service +%{_unitdir}/smb.service +%attr(1777,root,root) %dir /var/spool/samba +%dir %{_sysconfdir}/openldap/schema +%config %{_sysconfdir}/openldap/schema/samba.schema +%config(noreplace) %{_sysconfdir}/pam.d/samba + +%if ! %{with_vfs_glusterfs} +%exclude %{_mandir}/man8/vfs_glusterfs.8* +%endif + +%if ! %{with_vfs_cephfs} +%exclude %{_mandir}/man8/vfs_ceph.8* +%endif + +%attr(775,root,printadmin) %dir /var/lib/samba/drivers + +%files client +%{_libdir}/libdcerpc-binding.so.* +%{_libdir}/libndr.so.* +%{_libdir}/libndr-krb5pac.so.* +%{_libdir}/libndr-nbt.so.* +%{_libdir}/libndr-standard.so.* +%{_libdir}/libnetapi.so.* +%{_libdir}/libsamba-credentials.so.* +%{_libdir}/libsamba-errors.so.* +%{_libdir}/libsamba-passdb.so.* +%{_libdir}/libsamba-util.so.* +%{_libdir}/libsamba-hostconfig.so.* +%{_libdir}/libsamdb.so.* +%{_libdir}/libsmbconf.so.* +%{_libdir}/libsmbldap.so.* +%{_libdir}/libtevent-util.so.* +%{_libdir}/libdcerpc.so.* +%{_bindir}/cifsdd +%{_bindir}/dbwrap_tool +%{_bindir}/findsmb +%{_bindir}/mvxattr +%{_bindir}/nmblookup +%{_bindir}/oLschema2ldif +%{_bindir}/regdiff +%{_bindir}/regpatch +%{_bindir}/regshell +%{_bindir}/regtree +%{_bindir}/rpcclient +%{_bindir}/samba-regedit +%{_bindir}/sharesec +%{_bindir}/smbcacls +%{_bindir}/smbclient +%{_bindir}/smbcquotas +%{_bindir}/smbget +%{_bindir}/smbprint +%{_bindir}/smbspool +%{_bindir}/smbtar +%{_bindir}/smbtree +%dir %{_libexecdir}/samba +%ghost %{_libexecdir}/samba/cups_backend_smb + +%dir %{_libdir}/samba +%{_libdir}/%{name}/libCHARSET3-samba4.so +%{_libdir}/%{name}/libaddns-samba4.so +%{_libdir}/%{name}/libads-samba4.so +%{_libdir}/%{name}/libasn1util-samba4.so +%{_libdir}/%{name}/libauth-samba4.so +%{_libdir}/%{name}/libauthkrb5-samba4.so +%{_libdir}/%{name}/libcli-cldap-samba4.so +%{_libdir}/%{name}/libcli-ldap-common-samba4.so +%{_libdir}/%{name}/libcli-ldap-samba4.so +%{_libdir}/%{name}/libcli-nbt-samba4.so +%{_libdir}/%{name}/libcli-smb-common-samba4.so +%{_libdir}/%{name}/libcli-spoolss-samba4.so +%{_libdir}/%{name}/libcliauth-samba4.so +%{_libdir}/%{name}/libcmdline-credentials-samba4.so +%{_libdir}/%{name}/libcommon-auth-samba4.so +%{_libdir}/%{name}/libctdb-event-client-samba4.so +%{_libdir}/%{name}/libdbwrap-samba4.so +%{_libdir}/%{name}/libdcerpc-samba-samba4.so +%{_libdir}/%{name}/libevents-samba4.so +%{_libdir}/%{name}/libflag-mapping-samba4.so +%{_libdir}/%{name}/libgenrand-samba4.so +%{_libdir}/%{name}/libgensec-samba4.so +%{_libdir}/%{name}/libgpext-samba4.so +%{_libdir}/%{name}/libgse-samba4.so +%{_libdir}/%{name}/libhttp-samba4.so +%{_libdir}/%{name}/libinterfaces-samba4.so +%{_libdir}/%{name}/libiov-buf-samba4.so +%{_libdir}/%{name}/libkrb5samba-samba4.so +%{_libdir}/%{name}/libldbsamba-samba4.so +%{_libdir}/%{name}/liblibcli-lsa3-samba4.so +%{_libdir}/%{name}/liblibcli-netlogon3-samba4.so +%{_libdir}/%{name}/liblibsmb-samba4.so +%{_libdir}/%{name}/libmessages-dgm-samba4.so +%{_libdir}/%{name}/libmessages-util-samba4.so +%{_libdir}/%{name}/libmsghdr-samba4.so +%{_libdir}/%{name}/libmsrpc3-samba4.so +%{_libdir}/%{name}/libndr-samba-samba4.so +%{_libdir}/%{name}/libndr-samba4.so +%{_libdir}/%{name}/libnet-keytab-samba4.so +%{_libdir}/%{name}/libnetif-samba4.so +%{_libdir}/%{name}/libnpa-tstream-samba4.so +%{_libdir}/%{name}/libposix-eadb-samba4.so +%{_libdir}/%{name}/libprinting-migrate-samba4.so +%{_libdir}/%{name}/libreplace-samba4.so +%{_libdir}/%{name}/libregistry-samba4.so +%{_libdir}/%{name}/libsamba-cluster-support-samba4.so +%{_libdir}/%{name}/libsamba-debug-samba4.so +%{_libdir}/%{name}/libsamba-modules-samba4.so +%{_libdir}/%{name}/libsamba-security-samba4.so +%{_libdir}/%{name}/libsamba-sockets-samba4.so +%{_libdir}/%{name}/libsamba3-util-samba4.so +%{_libdir}/%{name}/libsamdb-common-samba4.so +%{_libdir}/%{name}/libsecrets3-samba4.so +%{_libdir}/%{name}/libserver-id-db-samba4.so +%{_libdir}/%{name}/libserver-role-samba4.so +%{_libdir}/%{name}/libsmb-transport-samba4.so +%{_libdir}/%{name}/libsmbclient-raw-samba4.so +%{_libdir}/%{name}/libsmbd-base-samba4.so +%{_libdir}/%{name}/libsmbd-conn-samba4.so +%{_libdir}/%{name}/libsmbd-shim-samba4.so +%{_libdir}/%{name}/libsmbldaphelper-samba4.so +%{_libdir}/%{name}/libsys-rw-samba4.so +%{_libdir}/%{name}/libsocket-blocking-samba4.so +%{_libdir}/%{name}/libtalloc-report-samba4.so +%{_libdir}/%{name}/libtdb-wrap-samba4.so +%{_libdir}/%{name}/libtime-basic-samba4.so +%{_libdir}/%{name}/libtorture-samba4.so +%{_libdir}/%{name}/libtrusts-util-samba4.so +%{_libdir}/%{name}/libutil-cmdline-samba4.so +%{_libdir}/%{name}/libutil-reg-samba4.so +%{_libdir}/%{name}/libutil-setid-samba4.so +%{_libdir}/%{name}/libutil-tdb-samba4.so + +%if ! %with_libwbclient +%{_libdir}/samba/libwbclient.so.* +%{_libdir}/samba/libwinbind-client-samba4.so +%endif + +%if ! %with_libsmbclient +%{_libdir}/samba/libsmbclient.so.* +%{_mandir}/man7/libsmbclient.7* +%endif + +%files common +%{_tmpfilesdir}/samba.conf +%dir %{_sysconfdir}/logrotate.d/ +%config(noreplace) %{_sysconfdir}/logrotate.d/samba +%attr(0700,root,root) %dir /var/log/samba +%attr(0700,root,root) %dir /var/log/samba/old +%ghost %dir /var/run/samba +%ghost %dir /var/run/winbindd +%dir /var/lib/samba +%attr(700,root,root) %dir /var/lib/samba/private +%dir /var/lib/samba/lock +%attr(755,root,root) %dir %{_sysconfdir}/samba +%config(noreplace) %{_sysconfdir}/samba/smb.conf +%{_sysconfdir}/samba/smb.conf.example +%config(noreplace) %{_sysconfdir}/samba/lmhosts +%config(noreplace) %{_sysconfdir}/sysconfig/samba +%{_libdir}/samba/libpopt-samba3-samba4.so +%if %{with_intel_aes_accel} +%{_libdir}/samba/libaesni-intel-samba4.so +%endif +%dir %{_libdir}/samba/ldb +%dir %{_libdir}/samba/pdb +%{_libdir}/samba/pdb/ldapsam.so +%{_libdir}/samba/pdb/smbpasswd.so +%{_libdir}/samba/pdb/tdbsam.so + +%files common-tools +%{_bindir}/net +%{_bindir}/pdbedit +%{_bindir}/profiles +%{_bindir}/smbcontrol +%{_bindir}/smbpasswd +%{_bindir}/testparm + +%files dc +%if %with_dc +%{_libdir}/samba/libdb-glue-samba4.so +%{_libdir}/samba/libprocess-model-samba4.so +%{_libdir}/samba/libservice-samba4.so +%dir %{_libdir}/samba/process_model +%{_libdir}/samba/process_model/prefork.so +%{_libdir}/samba/process_model/standard.so +%dir %{_libdir}/samba/service +%{_libdir}/samba/service/cldap.so +%{_libdir}/samba/service/dcerpc.so +%{_libdir}/samba/service/dns.so +%{_libdir}/samba/service/dns_update.so +%{_libdir}/samba/service/drepl.so +%{_libdir}/samba/service/kcc.so +%{_libdir}/samba/service/kdc.so +%{_libdir}/samba/service/ldap.so +%{_libdir}/samba/service/nbtd.so +%{_libdir}/samba/service/ntp_signd.so +%{_libdir}/samba/service/s3fs.so +%{_libdir}/samba/service/web.so +%{_libdir}/samba/service/winbindd.so +%{_libdir}/samba/service/wrepl.so +%{_libdir}/libdcerpc-server.so.* +%{_libdir}/samba/libdnsserver-common-samba4.so +%{_libdir}/samba/libdsdb-module-samba4.so +%{_libdir}/samba/libdsdb-garbage-collect-tombstones-samba4.so +%{_libdir}/samba/libscavenge-dns-records-samba4.so +%else +%doc packaging/README.dc-libs +%endif +%if %with_dc +%{_unitdir}/samba.service +%{_bindir}/samba-tool +%{_sbindir}/samba +%{_sbindir}/samba_kcc +%{_sbindir}/samba_dnsupdate +%{_sbindir}/samba-gpupdate +%{_sbindir}/samba_spnupdate +%{_sbindir}/samba_upgradedns + +%{_libdir}/krb5/plugins/kdb/samba.so + +%{_libdir}/samba/auth/samba4.so +%{_libdir}/samba/libpac-samba4.so +%dir %{_libdir}/samba/gensec +%{_libdir}/%{name}/gensec/krb5.so +%{_libdir}/%{name}/ldb/acl.so +%{_libdir}/%{name}/ldb/aclread.so +%{_libdir}/%{name}/ldb/anr.so +%{_libdir}/%{name}/ldb/audit_log.so +%{_libdir}/%{name}/ldb/descriptor.so +%{_libdir}/%{name}/ldb/dirsync.so +%{_libdir}/%{name}/ldb/dns_notify.so +%{_libdir}/%{name}/ldb/dsdb_notification.so +%{_libdir}/%{name}/ldb/encrypted_secrets.so +%{_libdir}/%{name}/ldb/extended_dn_in.so +%{_libdir}/%{name}/ldb/extended_dn_out.so +%{_libdir}/%{name}/ldb/extended_dn_store.so +%{_libdir}/%{name}/ldb/group_audit_log.so +%{_libdir}/%{name}/ldb/ildap.so +%{_libdir}/%{name}/ldb/instancetype.so +%{_libdir}/%{name}/ldb/lazy_commit.so +%{_libdir}/%{name}/ldb/ldbsamba_extensions.so +%{_libdir}/%{name}/ldb/linked_attributes.so +%{_libdir}/%{name}/ldb/local_password.so +%{_libdir}/%{name}/ldb/new_partition.so +%{_libdir}/%{name}/ldb/objectclass.so +%{_libdir}/%{name}/ldb/objectclass_attrs.so +%{_libdir}/%{name}/ldb/objectguid.so +%{_libdir}/%{name}/ldb/operational.so +%{_libdir}/%{name}/ldb/partition.so +%{_libdir}/%{name}/ldb/password_hash.so +%{_libdir}/%{name}/ldb/ranged_results.so +%{_libdir}/%{name}/ldb/repl_meta_data.so +%{_libdir}/%{name}/ldb/resolve_oids.so +%{_libdir}/%{name}/ldb/rootdse.so +%{_libdir}/%{name}/ldb/samba3sam.so +%{_libdir}/%{name}/ldb/samba3sid.so +%{_libdir}/%{name}/ldb/samba_dsdb.so +%{_libdir}/%{name}/ldb/samba_secrets.so +%{_libdir}/%{name}/ldb/samldb.so +%{_libdir}/%{name}/ldb/schema_data.so +%{_libdir}/%{name}/ldb/schema_load.so +%{_libdir}/%{name}/ldb/secrets_tdb_sync.so +%{_libdir}/%{name}/ldb/show_deleted.so +%{_libdir}/%{name}/ldb/simple_dn.so +%{_libdir}/%{name}/ldb/simple_ldap_map.so +%{_libdir}/%{name}/ldb/subtree_delete.so +%{_libdir}/%{name}/ldb/subtree_rename.so +%{_libdir}/%{name}/ldb/tombstone_reanimate.so +%{_libdir}/%{name}/ldb/unique_object_sids.so +%{_libdir}/%{name}/ldb/update_keytab.so +%{_libdir}/%{name}/ldb/vlv.so +%{_libdir}/%{name}/ldb/wins_ldb.so +%{_libdir}/%{name}/vfs/posix_eadb.so +%dir /var/lib/samba/sysvol +%{_datadir}/samba/setup +%{_mandir}/man8/samba.8* +%{_mandir}/man8/samba-gpupdate.8* +%{_mandir}/man8/samba-tool.8* +%else # with_dc +%doc packaging/README.dc +%endif # with_dc + +%if %with_dc +%files dc-bind-dlz +%attr(770,root,named) %dir /var/lib/samba/bind-dns +%dir %{_libdir}/samba/bind9 +%{_libdir}/%{name}/bind9/dlz_bind9.so +%{_libdir}/%{name}/bind9/dlz_bind9_9.so +%{_libdir}/%{name}/bind9/dlz_bind9_10.so +%{_libdir}/%{name}/bind9/dlz_bind9_11.so +%endif + +%files devel +%{_includedir}/samba-4.0/charset.h +%{_includedir}/samba-4.0/core/doserr.h +%{_includedir}/samba-4.0/core/error.h +%{_includedir}/samba-4.0/core/hresult.h +%{_includedir}/samba-4.0/core/ntstatus.h +%{_includedir}/samba-4.0/core/ntstatus_gen.h +%{_includedir}/samba-4.0/core/werror.h +%{_includedir}/samba-4.0/core/werror_gen.h +%{_includedir}/samba-4.0/credentials.h +%{_includedir}/samba-4.0/dcerpc.h +%{_includedir}/samba-4.0/domain_credentials.h +%{_includedir}/samba-4.0/gen_ndr/atsvc.h +%{_includedir}/samba-4.0/gen_ndr/auth.h +%{_includedir}/samba-4.0/gen_ndr/dcerpc.h +%{_includedir}/samba-4.0/gen_ndr/krb5pac.h +%{_includedir}/samba-4.0/gen_ndr/lsa.h +%{_includedir}/samba-4.0/gen_ndr/misc.h +%{_includedir}/samba-4.0/gen_ndr/nbt.h +%{_includedir}/samba-4.0/gen_ndr/drsblobs.h +%{_includedir}/samba-4.0/gen_ndr/drsuapi.h +%{_includedir}/samba-4.0/gen_ndr/ndr_drsblobs.h +%{_includedir}/samba-4.0/gen_ndr/ndr_drsuapi.h +%{_includedir}/samba-4.0/gen_ndr/ndr_atsvc.h +%{_includedir}/samba-4.0/gen_ndr/ndr_dcerpc.h +%{_includedir}/samba-4.0/gen_ndr/ndr_krb5pac.h +%{_includedir}/samba-4.0/gen_ndr/ndr_misc.h +%{_includedir}/samba-4.0/gen_ndr/ndr_nbt.h +%{_includedir}/samba-4.0/gen_ndr/ndr_samr.h +%{_includedir}/samba-4.0/gen_ndr/ndr_samr_c.h +%{_includedir}/samba-4.0/gen_ndr/ndr_svcctl.h +%{_includedir}/samba-4.0/gen_ndr/ndr_svcctl_c.h +%{_includedir}/samba-4.0/gen_ndr/netlogon.h +%{_includedir}/samba-4.0/gen_ndr/samr.h +%{_includedir}/samba-4.0/gen_ndr/security.h +%{_includedir}/samba-4.0/gen_ndr/server_id.h +%{_includedir}/samba-4.0/gen_ndr/svcctl.h +%{_includedir}/samba-4.0/ldb_wrap.h +%{_includedir}/samba-4.0/lookup_sid.h +%{_includedir}/samba-4.0/machine_sid.h +%{_includedir}/samba-4.0/ndr.h +%dir %{_includedir}/samba-4.0/ndr +%{_includedir}/samba-4.0/ndr/ndr_dcerpc.h +%{_includedir}/samba-4.0/ndr/ndr_drsblobs.h +%{_includedir}/samba-4.0/ndr/ndr_drsuapi.h +%{_includedir}/samba-4.0/ndr/ndr_krb5pac.h +%{_includedir}/samba-4.0/ndr/ndr_svcctl.h +%{_includedir}/samba-4.0/ndr/ndr_nbt.h +%{_includedir}/samba-4.0/netapi.h +%{_includedir}/samba-4.0/param.h +%{_includedir}/samba-4.0/passdb.h +%{_includedir}/samba-4.0/policy.h +%{_includedir}/samba-4.0/rpc_common.h +%{_includedir}/samba-4.0/samba/session.h +%{_includedir}/samba-4.0/samba/version.h +%{_includedir}/samba-4.0/share.h +%{_includedir}/samba-4.0/smb2_lease_struct.h +%{_includedir}/samba-4.0/smbconf.h +%{_includedir}/samba-4.0/smb_ldap.h +%{_includedir}/samba-4.0/smbldap.h +%{_includedir}/samba-4.0/tdr.h +%{_includedir}/samba-4.0/tsocket.h +%{_includedir}/samba-4.0/tsocket_internal.h +%dir %{_includedir}/samba-4.0/util +%{_includedir}/samba-4.0/util/attr.h +%{_includedir}/samba-4.0/util/blocking.h +%{_includedir}/samba-4.0/util/byteorder.h +%{_includedir}/samba-4.0/util/data_blob.h +%{_includedir}/samba-4.0/util/debug.h +%{_includedir}/samba-4.0/util/fault.h +%{_includedir}/samba-4.0/util/genrand.h +%{_includedir}/samba-4.0/util/idtree.h +%{_includedir}/samba-4.0/util/idtree_random.h +%{_includedir}/samba-4.0/util/memory.h +%{_includedir}/samba-4.0/util/safe_string.h +%{_includedir}/samba-4.0/util/signal.h +%{_includedir}/samba-4.0/util/string_wrappers.h +%{_includedir}/samba-4.0/util/substitute.h +%{_includedir}/samba-4.0/util/talloc_stack.h +%{_includedir}/samba-4.0/util/tevent_ntstatus.h +%{_includedir}/samba-4.0/util/tevent_unix.h +%{_includedir}/samba-4.0/util/tevent_werror.h +%{_includedir}/samba-4.0/util/time.h +%{_includedir}/samba-4.0/util/tfork.h +%{_includedir}/samba-4.0/util_ldb.h +%{_libdir}/libdcerpc-binding.so +%{_libdir}/libdcerpc-samr.so +%{_libdir}/libdcerpc.so +%{_libdir}/libndr-krb5pac.so +%{_libdir}/libndr-nbt.so +%{_libdir}/libndr-standard.so +%{_libdir}/libndr.so +%{_libdir}/libnetapi.so +%{_libdir}/libsamba-credentials.so +%{_libdir}/libsamba-errors.so +%{_libdir}/libsamba-hostconfig.so +%{_libdir}/libsamba-util.so +%{_libdir}/libsamdb.so +%{_libdir}/libsmbconf.so +%{_libdir}/libtevent-util.so +%{_libdir}/pkgconfig/dcerpc.pc +%{_libdir}/pkgconfig/dcerpc_samr.pc +%{_libdir}/pkgconfig/ndr.pc +%{_libdir}/pkgconfig/ndr_krb5pac.pc +%{_libdir}/pkgconfig/ndr_nbt.pc +%{_libdir}/pkgconfig/ndr_standard.pc +%{_libdir}/pkgconfig/netapi.pc +%{_libdir}/pkgconfig/samba-credentials.pc +%{_libdir}/pkgconfig/samba-hostconfig.pc +%{_libdir}/pkgconfig/samba-util.pc +%{_libdir}/pkgconfig/samdb.pc +%{_libdir}/libsamba-passdb.so +%{_libdir}/libsmbldap.so + +%if %with_dc +%{_includedir}/samba-4.0/dcerpc_server.h +%{_libdir}/libdcerpc-server.so +%{_libdir}/pkgconfig/dcerpc_server.pc +%{_libdir}/libsamba-policy.so +%{_libdir}/pkgconfig/samba-policy.pc +%endif + +%if ! %with_libsmbclient +%{_includedir}/samba-4.0/libsmbclient.h +%endif + +%if ! %with_libwbclient +%{_includedir}/samba-4.0/wbclient.h +%endif + +%if %{with_vfs_cephfs} +%files vfs-cephfs +%{_libdir}/samba/vfs/ceph.so +%{_mandir}/man8/vfs_ceph.8* +%endif + +%if %{with_vfs_glusterfs} +%files vfs-glusterfs +%{_libdir}/samba/vfs/glusterfs.so +%{_mandir}/man8/vfs_glusterfs.8* +%endif + +%files krb5-printing +%attr(0700,root,root) %{_libexecdir}/samba/smbspool_krb5_wrapper + +%if %with_libsmbclient +%files -n libsmbclient +%{_libdir}/libsmbclient.so.* + +%files -n libsmbclient-devel +%{_includedir}/samba-4.0/libsmbclient.h +%{_libdir}/libsmbclient.so +%{_libdir}/pkgconfig/smbclient.pc +%{_mandir}/man7/libsmbclient.7* +%endif + +%if %with_libwbclient +%files -n libwbclient +%{_libdir}/samba/wbclient/libwbclient.so.* +%{_libdir}/samba/libwinbind-client-samba4.so + +%files -n libwbclient-devel +%{_includedir}/samba-4.0/wbclient.h +%{_libdir}/samba/wbclient/libwbclient.so +%{_libdir}/pkgconfig/wbclient.pc +%endif + +%files pidl +%attr(755,root,root) %{_bindir}/pidl +%dir %{perl_vendorlib}/Parse +%{perl_vendorlib}/Parse/Pidl.pm +%dir %{perl_vendorlib}/Parse/Pidl +%{perl_vendorlib}/Parse/Pidl/CUtil.pm +%{perl_vendorlib}/Parse/Pidl/Samba4.pm +%{perl_vendorlib}/Parse/Pidl/Expr.pm +%{perl_vendorlib}/Parse/Pidl/ODL.pm +%{perl_vendorlib}/Parse/Pidl/Typelist.pm +%{perl_vendorlib}/Parse/Pidl/IDL.pm +%{perl_vendorlib}/Parse/Pidl/Compat.pm +%dir %{perl_vendorlib}/Parse/Pidl/Wireshark +%{perl_vendorlib}/Parse/Pidl/Wireshark/Conformance.pm +%{perl_vendorlib}/Parse/Pidl/Wireshark/NDR.pm +%{perl_vendorlib}/Parse/Pidl/Dump.pm +%dir %{perl_vendorlib}/Parse/Pidl/Samba3 +%{perl_vendorlib}/Parse/Pidl/Samba3/ServerNDR.pm +%{perl_vendorlib}/Parse/Pidl/Samba3/ClientNDR.pm +%dir %{perl_vendorlib}/Parse/Pidl/Samba4 +%{perl_vendorlib}/Parse/Pidl/Samba4/Header.pm +%dir %{perl_vendorlib}/Parse/Pidl/Samba4/COM +%{perl_vendorlib}/Parse/Pidl/Samba4/COM/Header.pm +%{perl_vendorlib}/Parse/Pidl/Samba4/COM/Proxy.pm +%{perl_vendorlib}/Parse/Pidl/Samba4/COM/Stub.pm +%{perl_vendorlib}/Parse/Pidl/Samba4/Python.pm +%{perl_vendorlib}/Parse/Pidl/Samba4/Template.pm +%dir %{perl_vendorlib}/Parse/Pidl/Samba4/NDR +%{perl_vendorlib}/Parse/Pidl/Samba4/NDR/Server.pm +%{perl_vendorlib}/Parse/Pidl/Samba4/NDR/Client.pm +%{perl_vendorlib}/Parse/Pidl/Samba4/NDR/Parser.pm +%{perl_vendorlib}/Parse/Pidl/Samba4/TDR.pm +%{perl_vendorlib}/Parse/Pidl/NDR.pm +%{perl_vendorlib}/Parse/Pidl/Util.pm + +%if %{with_dc} +%files -n python2-%{name} +%{_libdir}/samba/libsamba-python-samba4.so +%{_libdir}/samba/libsamba-net-samba4.so +%{_libdir}/libsamba-policy.so.* + +%dir %{python2_sitearch}/samba +%{python2_sitearch}/%{name}/__init__.py* +%{python2_sitearch}/%{name}/_glue.so +%{python2_sitearch}/%{name}/_ldb.so +%{python2_sitearch}/%{name}/auth.so +%{python2_sitearch}/%{name}/colour.py* +%{python2_sitearch}/%{name}/common.py* +%{python2_sitearch}/%{name}/compat.py* +%{python2_sitearch}/%{name}/credentials.so +%{python2_sitearch}/%{name}/crypto.so +%{python2_sitearch}/%{name}/dbchecker.py* +%{python2_sitearch}/%{name}/descriptor.py* +%{python2_sitearch}/%{name}/drs_utils.py* +%{python2_sitearch}/%{name}/gensec.so +%{python2_sitearch}/%{name}/getopt.py* +%{python2_sitearch}/%{name}/graph.py* +%{python2_sitearch}/%{name}/hostconfig.py* +%{python2_sitearch}/%{name}/idmap.py* +%{python2_sitearch}/%{name}/join.py* +%{python2_sitearch}/%{name}/messaging.so +%{python2_sitearch}/%{name}/ms_display_specifiers.py* +%{python2_sitearch}/%{name}/ms_schema.py* +%{python2_sitearch}/%{name}/ndr.py* +%{python2_sitearch}/%{name}/net.so +%{python2_sitearch}/%{name}/netbios.so +%{python2_sitearch}/%{name}/ntacls.py* +%{python2_sitearch}/%{name}/ntstatus.so +%{python2_sitearch}/%{name}/param.so +%{python2_sitearch}/%{name}/policy.so +%{python2_sitearch}/%{name}/posix_eadb.so +%{python2_sitearch}/%{name}/registry.so +%{python2_sitearch}/%{name}/remove_dc.py* +%{python2_sitearch}/%{name}/sd_utils.py* +%{python2_sitearch}/%{name}/security.so +%{python2_sitearch}/%{name}/sites.py* +%{python2_sitearch}/%{name}/smb.so +%{python2_sitearch}/%{name}/subnets.py* +%{python2_sitearch}/%{name}/upgrade.py* +%{python2_sitearch}/%{name}/upgradehelpers.py* +%{python2_sitearch}/%{name}/werror.so +%{python2_sitearch}/%{name}/xattr.py* +%{python2_sitearch}/%{name}/xattr_native.so +%{python2_sitearch}/%{name}/xattr_tdb.so + +%dir %{python2_sitearch}/samba/dcerpc +%{python2_sitearch}/%{name}/dcerpc/__init__.py* +%{python2_sitearch}/%{name}/dcerpc/atsvc.so +%{python2_sitearch}/%{name}/dcerpc/auth.so +%{python2_sitearch}/%{name}/dcerpc/base.so +%{python2_sitearch}/%{name}/dcerpc/dcerpc.so +%{python2_sitearch}/%{name}/dcerpc/dfs.so +%{python2_sitearch}/%{name}/dcerpc/dns.so +%{python2_sitearch}/%{name}/dcerpc/dnsp.so +%{python2_sitearch}/%{name}/dcerpc/drsblobs.so +%{python2_sitearch}/%{name}/dcerpc/drsuapi.so +%{python2_sitearch}/%{name}/dcerpc/echo.so +%{python2_sitearch}/%{name}/dcerpc/epmapper.so +%{python2_sitearch}/%{name}/dcerpc/idmap.so +%{python2_sitearch}/%{name}/dcerpc/initshutdown.so +%{python2_sitearch}/%{name}/dcerpc/irpc.so +%{python2_sitearch}/%{name}/dcerpc/krb5pac.so +%{python2_sitearch}/%{name}/dcerpc/lsa.so +%{python2_sitearch}/%{name}/dcerpc/messaging.so +%{python2_sitearch}/%{name}/dcerpc/mgmt.so +%{python2_sitearch}/%{name}/dcerpc/misc.so +%{python2_sitearch}/%{name}/dcerpc/nbt.so +%{python2_sitearch}/%{name}/dcerpc/netlogon.so +%{python2_sitearch}/%{name}/dcerpc/ntlmssp.so +%{python2_sitearch}/%{name}/dcerpc/samr.so +%{python2_sitearch}/%{name}/dcerpc/security.so +%{python2_sitearch}/%{name}/dcerpc/server_id.so +%{python2_sitearch}/%{name}/dcerpc/smb_acl.so +%{python2_sitearch}/%{name}/dcerpc/srvsvc.so +%{python2_sitearch}/%{name}/dcerpc/svcctl.so +%{python2_sitearch}/%{name}/dcerpc/unixinfo.so +%{python2_sitearch}/%{name}/dcerpc/winbind.so +%{python2_sitearch}/%{name}/dcerpc/winreg.so +%{python2_sitearch}/%{name}/dcerpc/wkssvc.so +%{python2_sitearch}/%{name}/dcerpc/xattr.so + +%dir %{python2_sitearch}/samba/emulate +%{python2_sitearch}/%{name}/emulate/__init__.py* +%{python2_sitearch}/%{name}/emulate/traffic.py* +%{python2_sitearch}/%{name}/emulate/traffic_packets.py* + +%dir %{python2_sitearch}/samba/netcmd +%{python2_sitearch}/%{name}/netcmd/__init__.py* +%{python2_sitearch}/%{name}/netcmd/common.py* +%{python2_sitearch}/%{name}/netcmd/computer.py* +%{python2_sitearch}/%{name}/netcmd/dbcheck.py* +%{python2_sitearch}/%{name}/netcmd/delegation.py* +%{python2_sitearch}/%{name}/netcmd/dns.py* +%{python2_sitearch}/%{name}/netcmd/domain.py* +%{python2_sitearch}/%{name}/netcmd/domain_backup.py* +%{python2_sitearch}/%{name}/netcmd/drs.py* +%{python2_sitearch}/%{name}/netcmd/dsacl.py* +%{python2_sitearch}/%{name}/netcmd/forest.py* +%{python2_sitearch}/%{name}/netcmd/fsmo.py* +%{python2_sitearch}/%{name}/netcmd/gpo.py* +%{python2_sitearch}/%{name}/netcmd/group.py* +%{python2_sitearch}/%{name}/netcmd/ldapcmp.py* +%{python2_sitearch}/%{name}/netcmd/main.py* +%{python2_sitearch}/%{name}/netcmd/nettime.py* +%{python2_sitearch}/%{name}/netcmd/ntacl.py* +%{python2_sitearch}/%{name}/netcmd/ou.py* +%{python2_sitearch}/%{name}/netcmd/processes.py* +%{python2_sitearch}/%{name}/netcmd/pso.py* +%{python2_sitearch}/%{name}/netcmd/rodc.py* +%{python2_sitearch}/%{name}/netcmd/schema.py* +%{python2_sitearch}/%{name}/netcmd/sites.py* +%{python2_sitearch}/%{name}/netcmd/spn.py* +%{python2_sitearch}/%{name}/netcmd/testparm.py* +%{python2_sitearch}/%{name}/netcmd/user.py* +%{python2_sitearch}/%{name}/netcmd/visualize.py* + +%dir %{python2_sitearch}/samba/samba3 +%{python2_sitearch}/%{name}/samba3/__init__.py* +%{python2_sitearch}/%{name}/samba3/libsmb_samba_internal.so +%{python2_sitearch}/%{name}/samba3/param.so +%{python2_sitearch}/%{name}/samba3/passdb.so +%{python2_sitearch}/%{name}/samba3/smbd.so + +%dir %{python2_sitearch}/samba/subunit +%{python2_sitearch}/%{name}/subunit/__init__.py* +%{python2_sitearch}/%{name}/subunit/run.py* +%{python2_sitearch}/%{name}/tdb_util.py* + +%dir %{python2_sitearch}/samba/third_party +%{python2_sitearch}/samba/third_party/__init__.py* + +%if %{with_dc} +%files -n python2-%{name}-dc +%{python2_sitearch}/%{name}/domain_update.py* +%{python2_sitearch}/%{name}/dckeytab.so +%{python2_sitearch}/%{name}/dsdb.so +%{python2_sitearch}/%{name}/dsdb_dns.so +%{python2_sitearch}/%{name}/dnsserver.py* +%{python2_sitearch}/%{name}/forest_update.py* +%{python2_sitearch}/%{name}/gpclass.py* +%{python2_sitearch}/%{name}/gpo.so +%{python2_sitearch}/%{name}/gp_sec_ext.py* +%{python2_sitearch}/%{name}/mdb_util.py* +%{python2_sitearch}/%{name}/ms_forest_updates_markdown.py* +%{python2_sitearch}/%{name}/ms_schema_markdown.py* +%{python2_sitearch}/%{name}/samdb.py* +%{python2_sitearch}/%{name}/schema.py* + +%{python2_sitearch}/%{name}/dcerpc/dnsserver.so + +%dir %{python2_sitearch}/samba/kcc +%{python2_sitearch}/%{name}/kcc/__init__.py* +%{python2_sitearch}/%{name}/kcc/debug.py* +%{python2_sitearch}/%{name}/kcc/graph.py* +%{python2_sitearch}/%{name}/kcc/graph_utils.py* +%{python2_sitearch}/%{name}/kcc/kcc_utils.py* +%{python2_sitearch}/%{name}/kcc/ldif_import_export.py* + +%dir %{python2_sitearch}/samba/provision +%{python2_sitearch}/%{name}/provision/__init__.py* +%{python2_sitearch}/%{name}/provision/backend.py* +%{python2_sitearch}/%{name}/provision/common.py* +%{python2_sitearch}/%{name}/provision/kerberos.py* +%{python2_sitearch}/%{name}/provision/kerberos_implementation.py* +%{python2_sitearch}/%{name}/provision/sambadns.py* + +%dir %{python2_sitearch}/samba/web_server +%{python2_sitearch}/samba/web_server/__init__.py* +%endif + +%files -n python2-%{name}-test +%dir %{python2_sitearch}/samba/tests +%{python2_sitearch}/%{name}/tests/__init__.py* +%{python2_sitearch}/%{name}/tests/audit_log_base.py* +%{python2_sitearch}/%{name}/tests/audit_log_dsdb.py* +%{python2_sitearch}/%{name}/tests/audit_log_pass_change.py* +%{python2_sitearch}/%{name}/tests/auth.py* +%{python2_sitearch}/%{name}/tests/auth_log.py* +%{python2_sitearch}/%{name}/tests/auth_log_base.py* +%{python2_sitearch}/%{name}/tests/auth_log_ncalrpc.py* +%{python2_sitearch}/%{name}/tests/auth_log_netlogon.py* +%{python2_sitearch}/%{name}/tests/auth_log_netlogon_bad_creds.py* +%{python2_sitearch}/%{name}/tests/auth_log_pass_change.py* +%{python2_sitearch}/%{name}/tests/auth_log_samlogon.py* +%dir %{python2_sitearch}/samba/tests/blackbox +%{python2_sitearch}/%{name}/tests/blackbox/__init__.py* +%{python2_sitearch}/%{name}/tests/blackbox/check_output.py* +%{python2_sitearch}/%{name}/tests/blackbox/ndrdump.py* +%{python2_sitearch}/%{name}/tests/blackbox/samba_dnsupdate.py* +%{python2_sitearch}/%{name}/tests/blackbox/smbcontrol.py* +%{python2_sitearch}/%{name}/tests/blackbox/traffic_learner.py* +%{python2_sitearch}/%{name}/tests/blackbox/traffic_replay.py* +%{python2_sitearch}/%{name}/tests/blackbox/traffic_summary.py* +%{python2_sitearch}/%{name}/tests/common.py* +%{python2_sitearch}/%{name}/tests/core.py* +%{python2_sitearch}/%{name}/tests/credentials.py* +%dir %{python2_sitearch}/samba/tests/dcerpc +%{python2_sitearch}/%{name}/tests/dcerpc/__init__.py* +%{python2_sitearch}/%{name}/tests/dcerpc/array.py* +%{python2_sitearch}/%{name}/tests/dcerpc/bare.py* +%{python2_sitearch}/%{name}/tests/dcerpc/dnsserver.py* +%{python2_sitearch}/%{name}/tests/dcerpc/integer.py* +%{python2_sitearch}/%{name}/tests/dcerpc/misc.py* +%{python2_sitearch}/%{name}/tests/dcerpc/raw_protocol.py* +%{python2_sitearch}/%{name}/tests/dcerpc/raw_testcase.py* +%{python2_sitearch}/%{name}/tests/dcerpc/registry.py* +%{python2_sitearch}/%{name}/tests/dcerpc/rpc_talloc.py* +%{python2_sitearch}/%{name}/tests/dcerpc/rpcecho.py* +%{python2_sitearch}/%{name}/tests/dcerpc/sam.py* +%{python2_sitearch}/%{name}/tests/dcerpc/srvsvc.py* +%{python2_sitearch}/%{name}/tests/dcerpc/string.py* +%{python2_sitearch}/%{name}/tests/dcerpc/testrpc.py* +%{python2_sitearch}/%{name}/tests/dcerpc/unix.py* +%{python2_sitearch}/%{name}/tests/dckeytab.py* +%{python2_sitearch}/%{name}/tests/dns.py* +%{python2_sitearch}/%{name}/tests/dns_base.py* +%{python2_sitearch}/%{name}/tests/dns_forwarder.py* +%{python2_sitearch}/%{name}/tests/dns_invalid.py* +%dir %{python2_sitearch}/samba/tests/dns_forwarder_helpers +%{python2_sitearch}/%{name}/tests/dns_forwarder_helpers/server.py* +%{python2_sitearch}/%{name}/tests/dns_tkey.py* +%{python2_sitearch}/%{name}/tests/dns_wildcard.py* +%{python2_sitearch}/%{name}/tests/docs.py* +%{python2_sitearch}/%{name}/tests/domain_backup.py* +%{python2_sitearch}/%{name}/tests/dsdb.py* +%{python2_sitearch}/%{name}/tests/dsdb_lock.py* +%{python2_sitearch}/%{name}/tests/dsdb_schema_attributes.py* +%dir %{python2_sitearch}/samba/tests/emulate +%{python2_sitearch}/%{name}/tests/emulate/__init__.py* +%{python2_sitearch}/%{name}/tests/emulate/traffic.py* +%{python2_sitearch}/%{name}/tests/emulate/traffic_packet.py* +%{python2_sitearch}/%{name}/tests/encrypted_secrets.py* +%{python2_sitearch}/%{name}/tests/gensec.py* +%{python2_sitearch}/%{name}/tests/getdcname.py* +%{python2_sitearch}/%{name}/tests/get_opt.py* +%{python2_sitearch}/%{name}/tests/glue.py* +%{python2_sitearch}/%{name}/tests/gpo.py* +%{python2_sitearch}/%{name}/tests/graph.py* +%{python2_sitearch}/%{name}/tests/group_audit.py* +%{python2_sitearch}/%{name}/tests/hostconfig.py* +%{python2_sitearch}/%{name}/tests/join.py* +%dir %{python2_sitearch}/samba/tests/kcc +%{python2_sitearch}/%{name}/tests/kcc/__init__.py* +%{python2_sitearch}/%{name}/tests/kcc/graph.py* +%{python2_sitearch}/%{name}/tests/kcc/graph_utils.py* +%{python2_sitearch}/%{name}/tests/kcc/kcc_utils.py* +%{python2_sitearch}/%{name}/tests/kcc/ldif_import_export.py* +%{python2_sitearch}/%{name}/tests/krb5_credentials.py* +%{python2_sitearch}/%{name}/tests/libsmb_samba_internal.py* +%{python2_sitearch}/%{name}/tests/loadparm.py* +%{python2_sitearch}/%{name}/tests/lsa_string.py* +%{python2_sitearch}/%{name}/tests/messaging.py* +%{python2_sitearch}/%{name}/tests/net_join.py* +%{python2_sitearch}/%{name}/tests/net_join_no_spnego.py* +%{python2_sitearch}/%{name}/tests/netbios.py* +%{python2_sitearch}/%{name}/tests/netcmd.py* +%{python2_sitearch}/%{name}/tests/netlogonsvc.py* +%{python2_sitearch}/%{name}/tests/ntacls.py* +%{python2_sitearch}/%{name}/tests/ntacls_backup.py* +%{python2_sitearch}/%{name}/tests/ntlmdisabled.py* +%{python2_sitearch}/%{name}/tests/pam_winbind.py* +%{python2_sitearch}/%{name}/tests/pam_winbind_warn_pwd_expire.py* +%{python2_sitearch}/%{name}/tests/param.py* +%{python2_sitearch}/%{name}/tests/password_hash.py* +%{python2_sitearch}/%{name}/tests/password_hash_fl2003.py* +%{python2_sitearch}/%{name}/tests/password_hash_fl2008.py* +%{python2_sitearch}/%{name}/tests/password_hash_gpgme.py* +%{python2_sitearch}/%{name}/tests/password_hash_ldap.py* +%{python2_sitearch}/%{name}/tests/password_quality.py* +%{python2_sitearch}/%{name}/tests/password_test.py* +%{python2_sitearch}/%{name}/tests/policy.py* +%{python2_sitearch}/%{name}/tests/posixacl.py* +%{python2_sitearch}/%{name}/tests/provision.py* +%{python2_sitearch}/%{name}/tests/pso.py* +%{python2_sitearch}/%{name}/tests/py_credentials.py* +%{python2_sitearch}/%{name}/tests/registry.py* +%{python2_sitearch}/%{name}/tests/s3idmapdb.py* +%{python2_sitearch}/%{name}/tests/s3param.py* +%{python2_sitearch}/%{name}/tests/s3passdb.py* +%{python2_sitearch}/%{name}/tests/s3registry.py* +%{python2_sitearch}/%{name}/tests/s3windb.py* +%{python2_sitearch}/%{name}/tests/samba3sam.py* +%dir %{python2_sitearch}/samba/tests/samba_tool +%{python2_sitearch}/%{name}/tests/samba_tool/__init__.py* +%{python2_sitearch}/%{name}/tests/samba_tool/base.py* +%{python2_sitearch}/%{name}/tests/samba_tool/computer.py* +%{python2_sitearch}/%{name}/tests/samba_tool/demote.py* +%{python2_sitearch}/%{name}/tests/samba_tool/dnscmd.py* +%{python2_sitearch}/%{name}/tests/samba_tool/forest.py* +%{python2_sitearch}/%{name}/tests/samba_tool/fsmo.py* +%{python2_sitearch}/%{name}/tests/samba_tool/gpo.py* +%{python2_sitearch}/%{name}/tests/samba_tool/group.py* +%{python2_sitearch}/%{name}/tests/samba_tool/help.py* +%{python2_sitearch}/%{name}/tests/samba_tool/join.py* +%{python2_sitearch}/%{name}/tests/samba_tool/ntacl.py* +%{python2_sitearch}/%{name}/tests/samba_tool/ou.py* +%{python2_sitearch}/%{name}/tests/samba_tool/passwordsettings.py* +%{python2_sitearch}/%{name}/tests/samba_tool/processes.py* +%{python2_sitearch}/%{name}/tests/samba_tool/provision_password_check.py* +%{python2_sitearch}/%{name}/tests/samba_tool/rodc.py* +%{python2_sitearch}/%{name}/tests/samba_tool/schema.py* +%{python2_sitearch}/%{name}/tests/samba_tool/sites.py* +%{python2_sitearch}/%{name}/tests/samba_tool/timecmd.py* +%{python2_sitearch}/%{name}/tests/samba_tool/user.py* +%{python2_sitearch}/%{name}/tests/samba_tool/user_check_password_script.py* +%{python2_sitearch}/%{name}/tests/samba_tool/user_virtualCryptSHA.py* +%{python2_sitearch}/%{name}/tests/samba_tool/user_wdigest.py* +%{python2_sitearch}/%{name}/tests/samba_tool/visualize.py* +%{python2_sitearch}/%{name}/tests/samba_tool/visualize_drs.py* +%{python2_sitearch}/%{name}/tests/samdb.py* +%{python2_sitearch}/%{name}/tests/samdb_api.py* +%{python2_sitearch}/%{name}/tests/security.py* +%{python2_sitearch}/%{name}/tests/smb.py* +%{python2_sitearch}/%{name}/tests/source.py* +%{python2_sitearch}/%{name}/tests/strings.py* +%{python2_sitearch}/%{name}/tests/subunitrun.py* +%{python2_sitearch}/%{name}/tests/tdb_util.py* +%{python2_sitearch}/%{name}/tests/unicodenames.py* +%{python2_sitearch}/%{name}/tests/upgrade.py* +%{python2_sitearch}/%{name}/tests/upgradeprovision.py* +%{python2_sitearch}/%{name}/tests/upgradeprovisionneeddc.py* +%{python2_sitearch}/%{name}/tests/xattr.py* +%{python2_sitearch}/%{name}/tests/smbd_base.py* +%endif + +%files -n python3-%{name} +%dir %{python3_sitearch}/samba/ +%{python3_sitearch}/samba/__init__.py +%dir %{python3_sitearch}/samba/__pycache__ +%{python3_sitearch}/%{name}/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/__pycache__/colour.*.pyc +%{python3_sitearch}/%{name}/__pycache__/common.*.pyc +%{python3_sitearch}/%{name}/__pycache__/compat.*.pyc +%{python3_sitearch}/%{name}/__pycache__/dbchecker.*.pyc +%{python3_sitearch}/%{name}/__pycache__/descriptor.*.pyc +%{python3_sitearch}/%{name}/__pycache__/drs_utils.*.pyc +%{python3_sitearch}/%{name}/__pycache__/getopt.*.pyc +%{python3_sitearch}/%{name}/__pycache__/gpclass.*.pyc +%{python3_sitearch}/%{name}/__pycache__/gp_sec_ext.*.pyc +%{python3_sitearch}/%{name}/__pycache__/graph.*.pyc +%{python3_sitearch}/%{name}/__pycache__/hostconfig.*.pyc +%{python3_sitearch}/%{name}/__pycache__/idmap.*.pyc +%{python3_sitearch}/%{name}/__pycache__/join.*.pyc +%{python3_sitearch}/%{name}/__pycache__/mdb_util.*.pyc +%{python3_sitearch}/%{name}/__pycache__/ms_display_specifiers.*.pyc +%{python3_sitearch}/%{name}/__pycache__/ms_schema.*.pyc +%{python3_sitearch}/%{name}/__pycache__/ndr.*.pyc +%{python3_sitearch}/%{name}/__pycache__/ntacls.*.pyc +%{python3_sitearch}/%{name}/__pycache__/sd_utils.*.pyc +%{python3_sitearch}/%{name}/__pycache__/sites.*.pyc +%{python3_sitearch}/%{name}/__pycache__/subnets.*.pyc +%{python3_sitearch}/%{name}/__pycache__/tdb_util.*.pyc +%{python3_sitearch}/%{name}/__pycache__/upgrade.*.pyc +%{python3_sitearch}/%{name}/__pycache__/upgradehelpers.*.pyc +%{python3_sitearch}/%{name}/__pycache__/xattr.*.pyc +%{python3_sitearch}/%{name}/_glue.*.so +%{python3_sitearch}/%{name}/_ldb.*.so +%{python3_sitearch}/%{name}/auth.*.so +%{python3_sitearch}/%{name}/dbchecker.py +%{python3_sitearch}/%{name}/colour.py +%{python3_sitearch}/%{name}/common.py +%{python3_sitearch}/%{name}/compat.py +%{python3_sitearch}/%{name}/credentials.*.so +%{python3_sitearch}/%{name}/crypto.*.so +%dir %{python3_sitearch}/samba/dcerpc +%dir %{python3_sitearch}/samba/dcerpc/__pycache__ +%{python3_sitearch}/%{name}/dcerpc/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/dcerpc/__init__.py +%{python3_sitearch}/%{name}/dcerpc/atsvc.*.so +%{python3_sitearch}/%{name}/dcerpc/auth.*.so +%{python3_sitearch}/%{name}/dcerpc/base.*.so +%{python3_sitearch}/%{name}/dcerpc/dcerpc.*.so +%{python3_sitearch}/%{name}/dcerpc/dfs.*.so +%{python3_sitearch}/%{name}/dcerpc/dns.*.so +%{python3_sitearch}/%{name}/dcerpc/dnsp.*.so +%{python3_sitearch}/%{name}/dcerpc/drsblobs.*.so +%{python3_sitearch}/%{name}/dcerpc/drsuapi.*.so +%{python3_sitearch}/%{name}/dcerpc/echo.*.so +%{python3_sitearch}/%{name}/dcerpc/epmapper.*.so +%{python3_sitearch}/%{name}/dcerpc/idmap.*.so +%{python3_sitearch}/%{name}/dcerpc/initshutdown.*.so +%{python3_sitearch}/%{name}/dcerpc/irpc.*.so +%{python3_sitearch}/%{name}/dcerpc/krb5pac.*.so +%{python3_sitearch}/%{name}/dcerpc/lsa.*.so +%{python3_sitearch}/%{name}/dcerpc/messaging.*.so +%{python3_sitearch}/%{name}/dcerpc/mgmt.*.so +%{python3_sitearch}/%{name}/dcerpc/misc.*.so +%{python3_sitearch}/%{name}/dcerpc/nbt.*.so +%{python3_sitearch}/%{name}/dcerpc/netlogon.*.so +%{python3_sitearch}/%{name}/dcerpc/ntlmssp.*.so +%{python3_sitearch}/%{name}/dcerpc/samr.*.so +%{python3_sitearch}/%{name}/dcerpc/security.*.so +%{python3_sitearch}/%{name}/dcerpc/server_id.*.so +%{python3_sitearch}/%{name}/dcerpc/smb_acl.*.so +%{python3_sitearch}/%{name}/dcerpc/srvsvc.*.so +%{python3_sitearch}/%{name}/dcerpc/svcctl.*.so +%{python3_sitearch}/%{name}/dcerpc/unixinfo.*.so +%{python3_sitearch}/%{name}/dcerpc/winbind.*.so +%{python3_sitearch}/%{name}/dcerpc/winreg.*.so +%{python3_sitearch}/%{name}/dcerpc/wkssvc.*.so +%{python3_sitearch}/%{name}/dcerpc/xattr.*.so +%{python3_sitearch}/%{name}/descriptor.py +%{python3_sitearch}/%{name}/drs_utils.py +%{python3_sitearch}/%{name}/gensec.*.so +%{python3_sitearch}/%{name}/getopt.py +%{python3_sitearch}/%{name}/gpclass.py +%{python3_sitearch}/%{name}/gp_sec_ext.py +%{python3_sitearch}/%{name}/gpo.*.so +%{python3_sitearch}/%{name}/graph.py +%{python3_sitearch}/%{name}/hostconfig.py +%{python3_sitearch}/%{name}/idmap.py +%{python3_sitearch}/%{name}/join.py +%{python3_sitearch}/%{name}/messaging.*.so +%{python3_sitearch}/%{name}/ndr.py +%{python3_sitearch}/%{name}/net.*.so +%{python3_sitearch}/%{name}/ntstatus.*.so +%{python3_sitearch}/%{name}/posix_eadb.*.so +%dir %{python3_sitearch}/samba/emulate +%dir %{python3_sitearch}/samba/emulate/__pycache__ +%{python3_sitearch}/%{name}/emulate/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/emulate/__pycache__/traffic.*.pyc +%{python3_sitearch}/%{name}/emulate/__pycache__/traffic_packets.*.pyc +%{python3_sitearch}/%{name}/emulate/__init__.py +%{python3_sitearch}/%{name}/emulate/traffic.py +%{python3_sitearch}/%{name}/emulate/traffic_packets.py +%{python3_sitearch}/%{name}/mdb_util.py +%{python3_sitearch}/%{name}/ms_display_specifiers.py +%{python3_sitearch}/%{name}/ms_schema.py +%{python3_sitearch}/%{name}/netbios.*.so +%dir %{python3_sitearch}/samba/netcmd +%{python3_sitearch}/samba/netcmd/__init__.py +%dir %{python3_sitearch}/samba/netcmd/__pycache__ +%{python3_sitearch}/%{name}/netcmd/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/common.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/computer.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/dbcheck.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/delegation.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/dns.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/domain.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/domain_backup.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/drs.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/dsacl.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/forest.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/fsmo.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/gpo.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/group.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/ldapcmp.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/main.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/nettime.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/ntacl.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/ou.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/processes.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/pso.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/rodc.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/schema.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/sites.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/spn.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/testparm.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/user.*.pyc +%{python3_sitearch}/%{name}/netcmd/__pycache__/visualize.*.pyc +%{python3_sitearch}/%{name}/netcmd/common.py +%{python3_sitearch}/%{name}/netcmd/computer.py +%{python3_sitearch}/%{name}/netcmd/dbcheck.py +%{python3_sitearch}/%{name}/netcmd/delegation.py +%{python3_sitearch}/%{name}/netcmd/dns.py +%{python3_sitearch}/%{name}/netcmd/domain.py +%{python3_sitearch}/%{name}/netcmd/domain_backup.py +%{python3_sitearch}/%{name}/netcmd/drs.py +%{python3_sitearch}/%{name}/netcmd/dsacl.py +%{python3_sitearch}/%{name}/netcmd/forest.py +%{python3_sitearch}/%{name}/netcmd/fsmo.py +%{python3_sitearch}/%{name}/netcmd/gpo.py +%{python3_sitearch}/%{name}/netcmd/group.py +%{python3_sitearch}/%{name}/netcmd/ldapcmp.py +%{python3_sitearch}/%{name}/netcmd/main.py +%{python3_sitearch}/%{name}/netcmd/nettime.py +%{python3_sitearch}/%{name}/netcmd/ntacl.py +%{python3_sitearch}/%{name}/netcmd/ou.py +%{python3_sitearch}/%{name}/netcmd/processes.py +%{python3_sitearch}/%{name}/netcmd/pso.py +%{python3_sitearch}/%{name}/netcmd/rodc.py +%{python3_sitearch}/%{name}/netcmd/schema.py +%{python3_sitearch}/%{name}/netcmd/sites.py +%{python3_sitearch}/%{name}/netcmd/spn.py +%{python3_sitearch}/%{name}/netcmd/testparm.py +%{python3_sitearch}/%{name}/netcmd/user.py +%{python3_sitearch}/%{name}/netcmd/visualize.py +%{python3_sitearch}/%{name}/ntacls.py +%{python3_sitearch}/%{name}/param.*.so +%{python3_sitearch}/%{name}/policy.*.so +%{python3_sitearch}/%{name}/registry.*.so +%{python3_sitearch}/%{name}/security.*.so +%dir %{python3_sitearch}/samba/samba3 +%{python3_sitearch}/samba/samba3/__init__.py +%dir %{python3_sitearch}/samba/samba3/__pycache__ +%{python3_sitearch}/%{name}/samba3/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/samba3/libsmb_samba_internal.*.so +%{python3_sitearch}/%{name}/samba3/param.*.so +%{python3_sitearch}/%{name}/samba3/passdb.*.so +%{python3_sitearch}/%{name}/samba3/smbd.*.so +%{python3_sitearch}/%{name}/sd_utils.py +%{python3_sitearch}/%{name}/sites.py +%{python3_sitearch}/%{name}/smb.*.so +%{python3_sitearch}/%{name}/subnets.py +%dir %{python3_sitearch}/samba/subunit +%{python3_sitearch}/samba/subunit/__init__.py +%dir %{python3_sitearch}/samba/subunit/__pycache__ +%{python3_sitearch}/%{name}/subunit/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/subunit/__pycache__/run.*.pyc +%{python3_sitearch}/%{name}/subunit/run.py +%{python3_sitearch}/%{name}/tdb_util.py +%{python3_sitearch}/%{name}/upgrade.py +%{python3_sitearch}/%{name}/upgradehelpers.py +%{_libdir}/libsamba-policy.*.so* +%{_libdir}/pkgconfig/samba-policy.*.pc +%{_libdir}/samba/libsamba-net.*-samba4.so +%{_libdir}/samba/libsamba-python.*-samba4.so + +%if %{with_dc} +%files -n python3-%{name}-dc +%{python3_sitearch}/%{name}/samdb.py +%{python3_sitearch}/%{name}/schema.py +%{python3_sitearch}/%{name}/__pycache__/domain_update.*.pyc +%{python3_sitearch}/%{name}/__pycache__/dnsserver.*.pyc +%{python3_sitearch}/%{name}/__pycache__/forest_update.*.pyc +%{python3_sitearch}/%{name}/__pycache__/ms_forest_updates_markdown.*.pyc +%{python3_sitearch}/%{name}/__pycache__/ms_schema_markdown.*.pyc +%{python3_sitearch}/%{name}/__pycache__/remove_dc.*.pyc +%{python3_sitearch}/%{name}/__pycache__/samdb.*.pyc +%{python3_sitearch}/%{name}/__pycache__/schema.*.pyc +%{python3_sitearch}/%{name}/dcerpc/dnsserver.*.so +%{python3_sitearch}/%{name}/dckeytab.*.so +%{python3_sitearch}/%{name}/dsdb.*.so +%{python3_sitearch}/%{name}/dsdb_dns.*.so +%{python3_sitearch}/%{name}/domain_update.py +%{python3_sitearch}/%{name}/forest_update.py +%{python3_sitearch}/%{name}/ms_forest_updates_markdown.py +%{python3_sitearch}/%{name}/ms_schema_markdown.py + +%dir %{python3_sitearch}/samba/kcc +%{python3_sitearch}/%{name}/kcc/__init__.py +%{python3_sitearch}/%{name}/kcc/debug.py +%{python3_sitearch}/%{name}/kcc/graph.py +%{python3_sitearch}/%{name}/kcc/graph_utils.py +%{python3_sitearch}/%{name}/kcc/kcc_utils.py +%{python3_sitearch}/%{name}/kcc/ldif_import_export.py +%{python3_sitearch}/%{name}/dnsserver.py + +%dir %{python3_sitearch}/samba/kcc/__pycache__ +%{python3_sitearch}/%{name}/kcc/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/kcc/__pycache__/debug.*.pyc +%{python3_sitearch}/%{name}/kcc/__pycache__/graph.*.pyc +%{python3_sitearch}/%{name}/kcc/__pycache__/graph_utils.*.pyc +%{python3_sitearch}/%{name}/kcc/__pycache__/kcc_utils.*.pyc +%{python3_sitearch}/%{name}/kcc/__pycache__/ldif_import_export.*.pyc + +%dir %{python3_sitearch}/samba/provision +%{python3_sitearch}/%{name}/provision/backend.py +%{python3_sitearch}/%{name}/provision/common.py +%{python3_sitearch}/%{name}/provision/kerberos.py +%{python3_sitearch}/%{name}/provision/kerberos_implementation.py +%{python3_sitearch}/%{name}/provision/sambadns.py + +%dir %{python3_sitearch}/samba/provision/__pycache__ +%{python3_sitearch}/%{name}/provision/__init__.py +%{python3_sitearch}/%{name}/provision/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/provision/__pycache__/backend.*.pyc +%{python3_sitearch}/%{name}/provision/__pycache__/common.*.pyc +%{python3_sitearch}/%{name}/provision/__pycache__/kerberos.*.pyc +%{python3_sitearch}/%{name}/provision/__pycache__/kerberos_implementation.*.pyc +%{python3_sitearch}/%{name}/provision/__pycache__/sambadns.*.pyc + +%{python3_sitearch}/%{name}/remove_dc.py +%endif + +%files -n python3-%{name}-test +%dir %{python3_sitearch}/samba/tests +%{python3_sitearch}/samba/tests/__init__.py +%dir %{python3_sitearch}/samba/tests/__pycache__ +%{python3_sitearch}/%{name}/tests/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/audit_log_base.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/audit_log_dsdb.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/audit_log_pass_change.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth_log.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth_log_base.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth_log_pass_change.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth_log_ncalrpc.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth_log_netlogon.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth_log_netlogon_bad_creds.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/auth_log_samlogon.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/common.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/core.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/credentials.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dckeytab.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dns.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dns_base.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dns_forwarder.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dns_invalid.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dns_tkey.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dns_wildcard.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dsdb.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dsdb_lock.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/dsdb_schema_attributes.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/docs.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/domain_backup.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/encrypted_secrets.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/gensec.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/get_opt.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/getdcname.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/glue.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/gpo.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/graph.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/group_audit.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/hostconfig.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/join.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/krb5_credentials.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/libsmb_samba_internal.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/loadparm.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/lsa_string.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/messaging.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/netbios.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/netcmd.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/net_join_no_spnego.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/net_join.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/netlogonsvc.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/ntacls.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/ntacls_backup.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/ntlmdisabled.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/pam_winbind.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/pam_winbind_warn_pwd_expire.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/param.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/password_hash.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/password_hash_fl2003.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/password_hash_fl2008.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/password_hash_gpgme.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/password_hash_ldap.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/password_quality.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/password_test.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/policy.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/posixacl.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/provision.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/pso.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/py_credentials.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/registry.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/s3idmapdb.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/s3param.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/s3passdb.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/s3registry.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/s3windb.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/samba3sam.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/samdb.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/samdb_api.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/security.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/smb.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/source.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/strings.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/subunitrun.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/tdb_util.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/unicodenames.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/upgrade.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/upgradeprovision.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/upgradeprovisionneeddc.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/xattr.*.pyc +%{python3_sitearch}/%{name}/tests/__pycache__/smbd_base.*.pyc +%{python3_sitearch}/%{name}/tests/audit_log_base.py +%{python3_sitearch}/%{name}/tests/audit_log_dsdb.py +%{python3_sitearch}/%{name}/tests/audit_log_pass_change.py +%{python3_sitearch}/%{name}/tests/auth.py +%{python3_sitearch}/%{name}/tests/auth_log.py +%{python3_sitearch}/%{name}/tests/auth_log_base.py +%{python3_sitearch}/%{name}/tests/auth_log_ncalrpc.py +%{python3_sitearch}/%{name}/tests/auth_log_netlogon_bad_creds.py +%{python3_sitearch}/%{name}/tests/auth_log_netlogon.py +%{python3_sitearch}/%{name}/tests/auth_log_pass_change.py +%{python3_sitearch}/%{name}/tests/auth_log_samlogon.py +%dir %{python3_sitearch}/samba/tests/blackbox +%{python3_sitearch}/samba/tests/blackbox/__init__.py +%dir %{python3_sitearch}/samba/tests/blackbox/__pycache__ +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/check_output.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/ndrdump.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/samba_dnsupdate.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/smbcontrol.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/traffic_learner.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/traffic_replay.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/__pycache__/traffic_summary.*.pyc +%{python3_sitearch}/%{name}/tests/blackbox/check_output.py +%{python3_sitearch}/%{name}/tests/blackbox/ndrdump.py +%{python3_sitearch}/%{name}/tests/blackbox/samba_dnsupdate.py +%{python3_sitearch}/%{name}/tests/blackbox/smbcontrol.py +%{python3_sitearch}/%{name}/tests/blackbox/traffic_learner.py +%{python3_sitearch}/%{name}/tests/blackbox/traffic_replay.py +%{python3_sitearch}/%{name}/tests/blackbox/traffic_summary.py +%{python3_sitearch}/%{name}/tests/common.py +%{python3_sitearch}/%{name}/tests/core.py +%{python3_sitearch}/%{name}/tests/credentials.py +%dir %{python3_sitearch}/samba/tests/dcerpc +%{python3_sitearch}/samba/tests/dcerpc/__init__.py +%dir %{python3_sitearch}/samba/tests/dcerpc/__pycache__ +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/array.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/bare.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/dnsserver.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/misc.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/raw_protocol.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/raw_testcase.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/registry.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/rpc_talloc.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/rpcecho.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/sam.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/srvsvc.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/string.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/__pycache__/testrpc.*.pyc +%{python3_sitearch}/%{name}/tests/dcerpc/array.py +%{python3_sitearch}/%{name}/tests/dcerpc/bare.py +%{python3_sitearch}/%{name}/tests/dcerpc/dnsserver.py +%{python3_sitearch}/%{name}/tests/dcerpc/misc.py +%{python3_sitearch}/%{name}/tests/dcerpc/raw_protocol.py +%{python3_sitearch}/%{name}/tests/dcerpc/raw_testcase.py +%{python3_sitearch}/%{name}/tests/dcerpc/registry.py +%{python3_sitearch}/%{name}/tests/dcerpc/rpc_talloc.py +%{python3_sitearch}/%{name}/tests/dcerpc/rpcecho.py +%{python3_sitearch}/%{name}/tests/dcerpc/sam.py +%{python3_sitearch}/%{name}/tests/dcerpc/srvsvc.py +%{python3_sitearch}/%{name}/tests/dcerpc/string.py +%{python3_sitearch}/%{name}/tests/dcerpc/testrpc.py +%{python3_sitearch}/%{name}/tests/dckeytab.py +%{python3_sitearch}/%{name}/tests/dns.py +%{python3_sitearch}/%{name}/tests/dns_base.py +%{python3_sitearch}/%{name}/tests/dns_forwarder.py +%dir %{python3_sitearch}/samba/tests/dns_forwarder_helpers +%{python3_sitearch}/%{name}/tests/dns_forwarder_helpers/__pycache__/server.*.pyc +%{python3_sitearch}/%{name}/tests/dns_forwarder_helpers/server.py +%{python3_sitearch}/%{name}/tests/dns_invalid.py +%{python3_sitearch}/%{name}/tests/dns_tkey.py +%{python3_sitearch}/%{name}/tests/dns_wildcard.py +%{python3_sitearch}/%{name}/tests/dsdb.py +%{python3_sitearch}/%{name}/tests/dsdb_lock.py +%{python3_sitearch}/%{name}/tests/dsdb_schema_attributes.py +%{python3_sitearch}/%{name}/tests/docs.py +%{python3_sitearch}/%{name}/tests/domain_backup.py +%dir %{python3_sitearch}/samba/tests/emulate +%{python3_sitearch}/samba/tests/emulate/__init__.py +%dir %{python3_sitearch}/samba/tests/emulate/__pycache__ +%{python3_sitearch}/%{name}/tests/emulate/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/tests/emulate/__pycache__/traffic.*.pyc +%{python3_sitearch}/%{name}/tests/emulate/__pycache__/traffic_packet.*.pyc +%{python3_sitearch}/%{name}/tests/emulate/traffic.py +%{python3_sitearch}/%{name}/tests/emulate/traffic_packet.py +%{python3_sitearch}/%{name}/tests/encrypted_secrets.py +%{python3_sitearch}/%{name}/tests/gensec.py +%{python3_sitearch}/%{name}/tests/getdcname.py +%{python3_sitearch}/%{name}/tests/get_opt.py +%{python3_sitearch}/%{name}/tests/glue.py +%{python3_sitearch}/%{name}/tests/gpo.py +%{python3_sitearch}/%{name}/tests/graph.py +%{python3_sitearch}/%{name}/tests/group_audit.py +%{python3_sitearch}/%{name}/tests/hostconfig.py +%{python3_sitearch}/%{name}/tests/join.py +%dir %{python3_sitearch}/samba/tests/kcc +%{python3_sitearch}/samba/tests/kcc/__init__.py +%dir %{python3_sitearch}/samba/tests/kcc/__pycache__ +%{python3_sitearch}/%{name}/tests/kcc/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/tests/kcc/__pycache__/graph.*.pyc +%{python3_sitearch}/%{name}/tests/kcc/__pycache__/graph_utils.*.pyc +%{python3_sitearch}/%{name}/tests/kcc/__pycache__/kcc_utils.*.pyc +%{python3_sitearch}/%{name}/tests/kcc/__pycache__/ldif_import_export.*.pyc +%{python3_sitearch}/%{name}/tests/kcc/graph.py +%{python3_sitearch}/%{name}/tests/kcc/graph_utils.py +%{python3_sitearch}/%{name}/tests/kcc/kcc_utils.py +%{python3_sitearch}/%{name}/tests/kcc/ldif_import_export.py +%{python3_sitearch}/%{name}/tests/krb5_credentials.py +%{python3_sitearch}/%{name}/tests/libsmb_samba_internal.py +%{python3_sitearch}/%{name}/tests/loadparm.py +%{python3_sitearch}/%{name}/tests/lsa_string.py +%{python3_sitearch}/%{name}/tests/messaging.py +%{python3_sitearch}/%{name}/tests/netbios.py +%{python3_sitearch}/%{name}/tests/netcmd.py +%{python3_sitearch}/%{name}/tests/net_join_no_spnego.py +%{python3_sitearch}/%{name}/tests/net_join.py +%{python3_sitearch}/%{name}/tests/netlogonsvc.py +%{python3_sitearch}/%{name}/tests/ntacls.py +%{python3_sitearch}/%{name}/tests/ntacls_backup.py +%{python3_sitearch}/%{name}/tests/ntlmdisabled.py +%{python3_sitearch}/%{name}/tests/pam_winbind.py +%{python3_sitearch}/%{name}/tests/pam_winbind_warn_pwd_expire.py +%{python3_sitearch}/%{name}/tests/param.py +%{python3_sitearch}/%{name}/tests/password_hash.py +%{python3_sitearch}/%{name}/tests/password_hash_fl2003.py +%{python3_sitearch}/%{name}/tests/password_hash_fl2008.py +%{python3_sitearch}/%{name}/tests/password_hash_gpgme.py +%{python3_sitearch}/%{name}/tests/password_hash_ldap.py +%{python3_sitearch}/%{name}/tests/password_quality.py +%{python3_sitearch}/%{name}/tests/password_test.py +%{python3_sitearch}/%{name}/tests/policy.py +%{python3_sitearch}/%{name}/tests/posixacl.py +%{python3_sitearch}/%{name}/tests/provision.py +%{python3_sitearch}/%{name}/tests/pso.py +%{python3_sitearch}/%{name}/tests/py_credentials.py +%{python3_sitearch}/%{name}/tests/registry.py +%{python3_sitearch}/%{name}/tests/s3idmapdb.py +%{python3_sitearch}/%{name}/tests/s3param.py +%{python3_sitearch}/%{name}/tests/s3passdb.py +%{python3_sitearch}/%{name}/tests/s3registry.py +%{python3_sitearch}/%{name}/tests/s3windb.py +%{python3_sitearch}/%{name}/tests/samba3sam.py +%dir %{python3_sitearch}/samba/tests/samba_tool +%{python3_sitearch}/samba/tests/samba_tool/__init__.py +%dir %{python3_sitearch}/samba/tests/samba_tool/__pycache__ +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/base.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/computer.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/demote.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/dnscmd.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/forest.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/fsmo.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/gpo.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/group.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/help.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/join.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/ntacl.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/ou.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/passwordsettings.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/processes.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/provision_password_check.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/rodc.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/schema.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/sites.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/timecmd.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/user.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/user_check_password_script.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/user_virtualCryptSHA.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/user_wdigest.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/visualize.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/__pycache__/visualize_drs.*.pyc +%{python3_sitearch}/%{name}/tests/samba_tool/base.py +%{python3_sitearch}/%{name}/tests/samba_tool/computer.py +%{python3_sitearch}/%{name}/tests/samba_tool/demote.py +%{python3_sitearch}/%{name}/tests/samba_tool/dnscmd.py +%{python3_sitearch}/%{name}/tests/samba_tool/forest.py +%{python3_sitearch}/%{name}/tests/samba_tool/fsmo.py +%{python3_sitearch}/%{name}/tests/samba_tool/gpo.py +%{python3_sitearch}/%{name}/tests/samba_tool/group.py +%{python3_sitearch}/%{name}/tests/samba_tool/help.py +%{python3_sitearch}/%{name}/tests/samba_tool/join.py +%{python3_sitearch}/%{name}/tests/samba_tool/ntacl.py +%{python3_sitearch}/%{name}/tests/samba_tool/ou.py +%{python3_sitearch}/%{name}/tests/samba_tool/passwordsettings.py +%{python3_sitearch}/%{name}/tests/samba_tool/processes.py +%{python3_sitearch}/%{name}/tests/samba_tool/provision_password_check.py +%{python3_sitearch}/%{name}/tests/samba_tool/rodc.py +%{python3_sitearch}/%{name}/tests/samba_tool/schema.py +%{python3_sitearch}/%{name}/tests/samba_tool/sites.py +%{python3_sitearch}/%{name}/tests/samba_tool/timecmd.py +%{python3_sitearch}/%{name}/tests/samba_tool/user.py +%{python3_sitearch}/%{name}/tests/samba_tool/user_check_password_script.py +%{python3_sitearch}/%{name}/tests/samba_tool/user_virtualCryptSHA.py +%{python3_sitearch}/%{name}/tests/samba_tool/user_wdigest.py +%{python3_sitearch}/%{name}/tests/samba_tool/visualize.py +%{python3_sitearch}/%{name}/tests/samba_tool/visualize_drs.py +%{python3_sitearch}/%{name}/tests/samdb.py +%{python3_sitearch}/%{name}/tests/samdb_api.py +%{python3_sitearch}/%{name}/tests/security.py +%{python3_sitearch}/%{name}/tests/smb.py +%{python3_sitearch}/%{name}/tests/source.py +%{python3_sitearch}/%{name}/tests/strings.py +%{python3_sitearch}/%{name}/tests/subunitrun.py +%{python3_sitearch}/%{name}/tests/tdb_util.py +%{python3_sitearch}/%{name}/tests/unicodenames.py +%{python3_sitearch}/%{name}/tests/upgrade.py +%{python3_sitearch}/%{name}/tests/upgradeprovision.py +%{python3_sitearch}/%{name}/tests/upgradeprovisionneeddc.py +%{python3_sitearch}/%{name}/tests/xattr.py +%{python3_sitearch}/%{name}/tests/smbd_base.py +%dir %{python3_sitearch}/samba/web_server +%{python3_sitearch}/samba/web_server/__init__.py +%dir %{python3_sitearch}/samba/web_server/__pycache__ +%{python3_sitearch}/%{name}/web_server/__pycache__/__init__.*.pyc +%{python3_sitearch}/%{name}/werror.*.so +%{python3_sitearch}/%{name}/xattr.py +%{python3_sitearch}/%{name}/xattr_native.*.so +%{python3_sitearch}/%{name}/xattr_tdb.*.so + +%files test +%{_bindir}/gentest +%{_bindir}/locktest +%{_bindir}/masktest +%{_bindir}/ndrdump +%{_bindir}/smbtorture + +%if %{with testsuite} +%{_libdir}/%{name}/libnss-wrapper.so +%{_libdir}/%{name}/libsocket-wrapper.so +%{_libdir}/%{name}/libuid-wrapper.so +%endif +%if %with_dc +%{_libdir}/%{name}/libdlz-bind9-for-torture-samba4.so +%else +%{_libdir}/%{name}/libdsdb-module-samba4.so +%endif + +%files winbind +%{_libdir}/%{name}/idmap +%{_libdir}/%{name}/nss_info +%{_libdir}/%{name}/libnss-info-samba4.so +%{_libdir}/%{name}/libidmap-samba4.so +%{_sbindir}/winbindd +%attr(750,root,wbpriv) %dir /var/lib/samba/winbindd_privileged +%{_unitdir}/winbind.service +%{_sysconfdir}/NetworkManager/dispatcher.d/30-winbind + +%files winbind-clients +%{_bindir}/ntlm_auth +%{_bindir}/wbinfo +%{_libdir}/samba/krb5/winbind_krb5_localauth.so + +%files winbind-krb5-locator +%ghost %{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so +%{_libdir}/samba/krb5/winbind_krb5_locator.so + +%files winbind-modules +%{_libdir}/libnss_winbind.so* +%{_libdir}/libnss_wins.so* +%{_libdir}/security/pam_winbind.so +%config(noreplace) %{_sysconfdir}/security/pam_winbind.conf + +%if %with_clustering_support +%files -n ctdb +%doc ctdb/README +%doc ctdb/doc/examples +%config(noreplace, missingok) %{_sysconfdir}/sysconfig/ctdb + +%dir %{_sysconfdir}/ctdb +%config(noreplace) %{_sysconfdir}/ctdb/ctdb.conf +%config(noreplace) %{_sysconfdir}/ctdb/notify.sh +%config(noreplace) %{_sysconfdir}/ctdb/debug-hung-script.sh +%config(noreplace) %{_sysconfdir}/ctdb/ctdb-crash-cleanup.sh +%config(noreplace) %{_sysconfdir}/ctdb/debug_locks.sh + +%{_sysconfdir}/ctdb/functions +%{_sysconfdir}/ctdb/nfs-linux-kernel-callout +%{_sysconfdir}/ctdb/statd-callout +%config %{_sysconfdir}/sudoers.d/ctdb + +%dir %{_sysconfdir}/ctdb/events +%dir %{_sysconfdir}/ctdb/events/notification +%{_sysconfdir}/ctdb/events/notification/README + +%dir %{_sysconfdir}/ctdb/nfs-checks.d +%{_sysconfdir}/ctdb/nfs-checks.d/README +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/00.portmapper.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/10.status.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/20.nfs.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/30.nlockmgr.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/40.mountd.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/50.rquotad.check + +%{_sbindir}/ctdbd +%{_sbindir}/ctdbd_wrapper +%{_bindir}/ctdb +%{_bindir}/ping_pong +%{_bindir}/ltdbtool +%{_bindir}/ctdb_diagnostics +%{_bindir}/onnode + +%dir %{_libexecdir}/ctdb +%{_libexecdir}/ctdb/ctdb-config +%{_libexecdir}/ctdb/ctdb-event +%{_libexecdir}/ctdb/ctdb-eventd +%{_libexecdir}/ctdb/ctdb_killtcp +%{_libexecdir}/ctdb/ctdb_lock_helper +%{_libexecdir}/ctdb/ctdb_lvs +%{_libexecdir}/ctdb/ctdb_mutex_fcntl_helper +%{_libexecdir}/ctdb/ctdb_natgw +%{_libexecdir}/ctdb/ctdb-path +%{_libexecdir}/ctdb/ctdb_recovery_helper +%{_libexecdir}/ctdb/ctdb_takeover_helper +%{_libexecdir}/ctdb/smnotify + +%dir %{_localstatedir}/lib/ctdb/ + + +%{_tmpfilesdir}/ctdb.conf + +%{_unitdir}/ctdb.service + +%dir %{_datadir}/ctdb +%dir %{_datadir}/ctdb/events +%dir %{_datadir}/ctdb/events/legacy/ +%{_datadir}/ctdb/events/legacy/00.ctdb.script +%{_datadir}/ctdb/events/legacy/01.reclock.script +%{_datadir}/ctdb/events/legacy/05.system.script +%{_datadir}/ctdb/events/legacy/06.nfs.script +%{_datadir}/ctdb/events/legacy/10.interface.script +%{_datadir}/ctdb/events/legacy/11.natgw.script +%{_datadir}/ctdb/events/legacy/11.routing.script +%{_datadir}/ctdb/events/legacy/13.per_ip_routing.script +%{_datadir}/ctdb/events/legacy/20.multipathd.script +%{_datadir}/ctdb/events/legacy/31.clamd.script +%{_datadir}/ctdb/events/legacy/40.vsftpd.script +%{_datadir}/ctdb/events/legacy/41.httpd.script +%{_datadir}/ctdb/events/legacy/49.winbind.script +%{_datadir}/ctdb/events/legacy/50.samba.script +%{_datadir}/ctdb/events/legacy/60.nfs.script +%{_datadir}/ctdb/events/legacy/70.iscsi.script +%{_datadir}/ctdb/events/legacy/91.lvs.script + +%files -n ctdb-tests +%doc ctdb/tests/README +%{_bindir}/ctdb_run_tests +%{_bindir}/ctdb_run_cluster_tests + +%dir %{_libexecdir}/ctdb +%dir %{_libexecdir}/ctdb/tests +%{_libexecdir}/ctdb/tests/cmdline_test +%{_libexecdir}/ctdb/tests/comm_client_test +%{_libexecdir}/ctdb/tests/comm_server_test +%{_libexecdir}/ctdb/tests/comm_test +%{_libexecdir}/ctdb/tests/conf_test +%{_libexecdir}/ctdb/tests/ctdb_packet_parse +%{_libexecdir}/ctdb/tests/ctdb_takeover_tests +%{_libexecdir}/ctdb/tests/db_hash_test +%{_libexecdir}/ctdb/tests/dummy_client +%{_libexecdir}/ctdb/tests/errcode +%{_libexecdir}/ctdb/tests/event_protocol_test +%{_libexecdir}/ctdb/tests/event_script_test +%{_libexecdir}/ctdb/tests/fake_ctdbd +%{_libexecdir}/ctdb/tests/fetch_loop +%{_libexecdir}/ctdb/tests/fetch_loop_key +%{_libexecdir}/ctdb/tests/fetch_readonly +%{_libexecdir}/ctdb/tests/fetch_readonly_loop +%{_libexecdir}/ctdb/tests/fetch_ring +%{_libexecdir}/ctdb/tests/g_lock_loop +%{_libexecdir}/ctdb/tests/hash_count_test +%{_libexecdir}/ctdb/tests/line_test +%{_libexecdir}/ctdb/tests/lock_tdb +%{_libexecdir}/ctdb/tests/message_ring +%{_libexecdir}/ctdb/tests/pidfile_test +%{_libexecdir}/ctdb/tests/pkt_read_test +%{_libexecdir}/ctdb/tests/pkt_write_test +%{_libexecdir}/ctdb/tests/porting_tests +%{_libexecdir}/ctdb/tests/protocol_basic_test +%{_libexecdir}/ctdb/tests/protocol_ctdb_compat_test +%{_libexecdir}/ctdb/tests/protocol_ctdb_test +%{_libexecdir}/ctdb/tests/protocol_types_compat_test +%{_libexecdir}/ctdb/tests/protocol_types_test +%{_libexecdir}/ctdb/tests/protocol_util_test +%{_libexecdir}/ctdb/tests/rb_test +%{_libexecdir}/ctdb/tests/reqid_test +%{_libexecdir}/ctdb/tests/run_event_test +%{_libexecdir}/ctdb/tests/run_proc_test +%{_libexecdir}/ctdb/tests/sigcode +%{_libexecdir}/ctdb/tests/sock_daemon_test +%{_libexecdir}/ctdb/tests/sock_io_test +%{_libexecdir}/ctdb/tests/srvid_test +%{_libexecdir}/ctdb/tests/test_mutex_raw +%{_libexecdir}/ctdb/tests/transaction_loop +%{_libexecdir}/ctdb/tests/tunnel_cmd +%{_libexecdir}/ctdb/tests/tunnel_test +%{_libexecdir}/ctdb/tests/update_record +%{_libexecdir}/ctdb/tests/update_record_persistent + +%dir %{_datadir}/ctdb/tests + +%dir %{_datadir}/ctdb/tests/complex +%{_datadir}/ctdb/tests/complex/README +%{_datadir}/ctdb/tests/complex/00_ctdb_init.sh +%{_datadir}/ctdb/tests/complex/11_ctdb_delip_removes_ip.sh +%{_datadir}/ctdb/tests/complex/18_ctdb_reloadips.sh +%{_datadir}/ctdb/tests/complex/30_nfs_tickle_killtcp.sh +%{_datadir}/ctdb/tests/complex/31_nfs_tickle.sh +%{_datadir}/ctdb/tests/complex/32_cifs_tickle.sh +%{_datadir}/ctdb/tests/complex/33_gratuitous_arp.sh +%{_datadir}/ctdb/tests/complex/34_nfs_tickle_restart.sh +%{_datadir}/ctdb/tests/complex/36_smb_reset_server.sh +%{_datadir}/ctdb/tests/complex/37_nfs_reset_server.sh +%{_datadir}/ctdb/tests/complex/41_failover_ping_discrete.sh +%{_datadir}/ctdb/tests/complex/42_failover_ssh_hostname.sh +%{_datadir}/ctdb/tests/complex/43_failover_nfs_basic.sh +%{_datadir}/ctdb/tests/complex/44_failover_nfs_oneway.sh +%{_datadir}/ctdb/tests/complex/45_failover_nfs_kill.sh +%{_datadir}/ctdb/tests/complex/60_rogueip_releaseip.sh +%{_datadir}/ctdb/tests/complex/61_rogueip_takeip.sh + +%dir %{_datadir}/ctdb/tests/complex/scripts +%{_datadir}/ctdb/tests/complex/scripts/local.bash + +%dir %{_datadir}/ctdb/tests/cunit +%{_datadir}/ctdb/tests/cunit/cmdline_test_001.sh +%{_datadir}/ctdb/tests/cunit/comm_test_001.sh +%{_datadir}/ctdb/tests/cunit/comm_test_002.sh +%{_datadir}/ctdb/tests/cunit/conf_test_001.sh +%{_datadir}/ctdb/tests/cunit/config_test_001.sh +%{_datadir}/ctdb/tests/cunit/config_test_002.sh +%{_datadir}/ctdb/tests/cunit/config_test_003.sh +%{_datadir}/ctdb/tests/cunit/config_test_004.sh +%{_datadir}/ctdb/tests/cunit/config_test_005.sh +%{_datadir}/ctdb/tests/cunit/config_test_006.sh +%{_datadir}/ctdb/tests/cunit/config_test_007.sh +%{_datadir}/ctdb/tests/cunit/db_hash_test_001.sh +%{_datadir}/ctdb/tests/cunit/event_protocol_test_001.sh +%{_datadir}/ctdb/tests/cunit/event_script_test_001.sh +%{_datadir}/ctdb/tests/cunit/hash_count_test_001.sh +%{_datadir}/ctdb/tests/cunit/line_test_001.sh +%{_datadir}/ctdb/tests/cunit/path_tests_001.sh +%{_datadir}/ctdb/tests/cunit/pidfile_test_001.sh +%{_datadir}/ctdb/tests/cunit/pkt_read_001.sh +%{_datadir}/ctdb/tests/cunit/pkt_write_001.sh +%{_datadir}/ctdb/tests/cunit/porting_tests_001.sh +%{_datadir}/ctdb/tests/cunit/protocol_test_001.sh +%{_datadir}/ctdb/tests/cunit/protocol_test_002.sh +%{_datadir}/ctdb/tests/cunit/protocol_test_012.sh +%{_datadir}/ctdb/tests/cunit/protocol_test_101.sh +%{_datadir}/ctdb/tests/cunit/protocol_test_111.sh +%{_datadir}/ctdb/tests/cunit/protocol_test_201.sh +%{_datadir}/ctdb/tests/cunit/rb_test_001.sh +%{_datadir}/ctdb/tests/cunit/reqid_test_001.sh +%{_datadir}/ctdb/tests/cunit/run_event_001.sh +%{_datadir}/ctdb/tests/cunit/run_proc_001.sh +%{_datadir}/ctdb/tests/cunit/sock_daemon_test_001.sh +%{_datadir}/ctdb/tests/cunit/sock_io_test_001.sh +%{_datadir}/ctdb/tests/cunit/srvid_test_001.sh + +%dir %{_datadir}/ctdb/tests/eventd +%{_datadir}/ctdb/tests/eventd/README +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb +%{_datadir}/ctdb/tests/eventd/etc-ctdb/ctdb.conf +%{_datadir}/ctdb/tests/eventd/etc-ctdb/debug-script.sh +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/events +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/events/data +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/data/README +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/data/03.notalink.script +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/events/empty +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/empty/README +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/events/multi +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/multi/01.test.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/multi/02.test.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/multi/03.test.script +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/events/random +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/random/01.disabled.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/random/02.enabled.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/random/README.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/events/random/a.script +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/share +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/ +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/data +%{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/data/01.dummy.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/data/02.disabled.script +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/empty +%{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/empty/README +%dir %{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/random +%{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/random/01.disabled.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/random/02.enabled.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/random/a.script +%{_datadir}/ctdb/tests/eventd/etc-ctdb/share/events/random/README.script +%{_datadir}/ctdb/tests/eventd/eventd_001.sh +%{_datadir}/ctdb/tests/eventd/eventd_002.sh +%{_datadir}/ctdb/tests/eventd/eventd_003.sh +%{_datadir}/ctdb/tests/eventd/eventd_004.sh +%{_datadir}/ctdb/tests/eventd/eventd_005.sh +%{_datadir}/ctdb/tests/eventd/eventd_006.sh +%{_datadir}/ctdb/tests/eventd/eventd_007.sh +%{_datadir}/ctdb/tests/eventd/eventd_008.sh +%{_datadir}/ctdb/tests/eventd/eventd_009.sh +%{_datadir}/ctdb/tests/eventd/eventd_011.sh +%{_datadir}/ctdb/tests/eventd/eventd_012.sh +%{_datadir}/ctdb/tests/eventd/eventd_013.sh +%{_datadir}/ctdb/tests/eventd/eventd_014.sh +%{_datadir}/ctdb/tests/eventd/eventd_021.sh +%{_datadir}/ctdb/tests/eventd/eventd_022.sh +%{_datadir}/ctdb/tests/eventd/eventd_023.sh +%{_datadir}/ctdb/tests/eventd/eventd_024.sh +%{_datadir}/ctdb/tests/eventd/eventd_031.sh +%{_datadir}/ctdb/tests/eventd/eventd_032.sh +%{_datadir}/ctdb/tests/eventd/eventd_033.sh +%{_datadir}/ctdb/tests/eventd/eventd_041.sh +%{_datadir}/ctdb/tests/eventd/eventd_042.sh +%{_datadir}/ctdb/tests/eventd/eventd_043.sh +%{_datadir}/ctdb/tests/eventd/eventd_044.sh +%{_datadir}/ctdb/tests/eventd/eventd_051.sh +%{_datadir}/ctdb/tests/eventd/eventd_052.sh +%dir %{_datadir}/ctdb/tests/eventd/scripts +%{_datadir}/ctdb/tests/eventd/scripts/local.sh + +%dir %{_datadir}/ctdb/tests/eventscripts +%{_datadir}/ctdb/tests/eventscripts/README +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.001.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.002.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.003.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.004.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.005.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.006.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.007.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.008.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.init.009.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.setup.001.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.setup.002.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.setup.003.sh +%{_datadir}/ctdb/tests/eventscripts/00.ctdb.setup.004.sh +%{_datadir}/ctdb/tests/eventscripts/01.reclock.monitor.001.sh +%{_datadir}/ctdb/tests/eventscripts/01.reclock.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/01.reclock.monitor.003.sh +%{_datadir}/ctdb/tests/eventscripts/01.reclock.monitor.004.sh +%{_datadir}/ctdb/tests/eventscripts/01.reclock.monitor.005.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.001.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.003.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.004.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.005.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.006.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.007.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.011.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.012.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.013.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.014.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.015.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.016.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.017.sh +%{_datadir}/ctdb/tests/eventscripts/05.system.monitor.018.sh +%{_datadir}/ctdb/tests/eventscripts/06.nfs.releaseip.001.sh +%{_datadir}/ctdb/tests/eventscripts/06.nfs.releaseip.002.sh +%{_datadir}/ctdb/tests/eventscripts/06.nfs.takeip.001.sh +%{_datadir}/ctdb/tests/eventscripts/06.nfs.takeip.002.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.010.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.011.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.012.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.013.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.init.001.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.init.002.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.init.021.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.init.022.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.init.023.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.001.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.003.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.004.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.005.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.006.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.009.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.010.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.011.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.012.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.013.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.014.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.015.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.016.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.017.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.monitor.018.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.multi.001.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.releaseip.001.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.releaseip.002.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.startup.001.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.startup.002.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.takeip.001.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.takeip.002.sh +%{_datadir}/ctdb/tests/eventscripts/10.interface.takeip.003.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.001.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.002.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.003.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.004.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.011.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.012.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.013.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.014.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.015.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.021.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.022.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.023.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.024.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.025.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.031.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.041.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.042.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.051.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.052.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.053.sh +%{_datadir}/ctdb/tests/eventscripts/11.natgw.054.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.001.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.002.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.003.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.004.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.005.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.006.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.007.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.008.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.009.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.010.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.011.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.012.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.013.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.014.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.015.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.016.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.017.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.018.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.019.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.021.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.022.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.023.sh +%{_datadir}/ctdb/tests/eventscripts/13.per_ip_routing.024.sh +%{_datadir}/ctdb/tests/eventscripts/20.multipathd.monitor.001.sh +%{_datadir}/ctdb/tests/eventscripts/20.multipathd.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/20.multipathd.monitor.003.sh +%{_datadir}/ctdb/tests/eventscripts/20.multipathd.monitor.004.sh +%{_datadir}/ctdb/tests/eventscripts/31.clamd.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/31.clamd.monitor.003.sh +%{_datadir}/ctdb/tests/eventscripts/40.vsftpd.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/40.vsftpd.shutdown.002.sh +%{_datadir}/ctdb/tests/eventscripts/40.vsftpd.startup.002.sh +%{_datadir}/ctdb/tests/eventscripts/41.httpd.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/41.httpd.shutdown.002.sh +%{_datadir}/ctdb/tests/eventscripts/41.httpd.startup.002.sh +%{_datadir}/ctdb/tests/eventscripts/49.winbind.monitor.101.sh +%{_datadir}/ctdb/tests/eventscripts/49.winbind.monitor.102.sh +%{_datadir}/ctdb/tests/eventscripts/49.winbind.shutdown.002.sh +%{_datadir}/ctdb/tests/eventscripts/49.winbind.startup.002.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.101.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.103.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.104.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.105.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.106.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.110.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.111.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.112.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.monitor.113.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.shutdown.001.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.shutdown.002.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.shutdown.011.sh +%{_datadir}/ctdb/tests/eventscripts/50.samba.startup.011.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.101.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.102.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.103.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.104.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.105.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.106.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.107.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.108.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.109.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.111.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.112.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.113.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.114.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.121.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.122.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.131.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.132.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.141.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.142.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.143.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.144.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.151.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.152.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.153.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.161.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.monitor.162.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.multi.001.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.multi.002.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.releaseip.001.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.releaseip.002.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.shutdown.001.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.shutdown.002.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.startup.001.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.startup.002.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.takeip.001.sh +%{_datadir}/ctdb/tests/eventscripts/60.nfs.takeip.002.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.001.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.ipreallocated.011.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.ipreallocated.012.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.ipreallocated.013.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.ipreallocated.014.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.monitor.001.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.monitor.002.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.monitor.003.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.shutdown.001.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.shutdown.002.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.startup.001.sh +%{_datadir}/ctdb/tests/eventscripts/91.lvs.startup.002.sh +%{_datadir}/ctdb/tests/eventscripts/statd-callout.001.sh +%{_datadir}/ctdb/tests/eventscripts/statd-callout.002.sh +%{_datadir}/ctdb/tests/eventscripts/statd-callout.003.sh +%{_datadir}/ctdb/tests/eventscripts/statd-callout.004.sh +%{_datadir}/ctdb/tests/eventscripts/statd-callout.005.sh +%{_datadir}/ctdb/tests/eventscripts/statd-callout.006.sh +%{_datadir}/ctdb/tests/eventscripts/statd-callout.007.sh + +%dir %{_datadir}/ctdb/tests/eventscripts/etc-ctdb +%{_datadir}/ctdb/tests/eventscripts/etc-ctdb/public_addresses +%{_datadir}/ctdb/tests/eventscripts/etc-ctdb/rc.local + +%dir %{_datadir}/ctdb/tests/eventscripts/etc +%dir %{_datadir}/ctdb/tests/eventscripts/etc/init.d +%{_datadir}/ctdb/tests/eventscripts/etc/init.d/nfs +%{_datadir}/ctdb/tests/eventscripts/etc/init.d/nfslock + +%dir %{_datadir}/ctdb/tests/eventscripts/etc/samba +%{_datadir}/ctdb/tests/eventscripts/etc/samba/smb.conf + +%dir %{_datadir}/ctdb/tests/eventscripts/etc/sysconfig +%{_datadir}/ctdb/tests/eventscripts/etc/sysconfig/nfs + +%dir %{_datadir}/ctdb/tests/eventscripts/scripts +%{_datadir}/ctdb/tests/eventscripts/scripts/local.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/00.ctdb.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/01.reclock.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/05.system.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/06.nfs.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/10.interface.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/11.natgw.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/13.per_ip_routing.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/20.multipathd.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/31.clamd.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/40.vsftpd.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/41.httpd.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/49.winbind.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/50.samba.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/60.nfs.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/91.lvs.sh +%{_datadir}/ctdb/tests/eventscripts/scripts/statd-callout.sh + +%dir %{_datadir}/ctdb/tests/eventscripts/stubs +%{_datadir}/ctdb/tests/eventscripts/stubs/ctdb +%{_datadir}/ctdb/tests/eventscripts/stubs/ctdb-config +%{_datadir}/ctdb/tests/eventscripts/stubs/ctdb_killtcp +%{_datadir}/ctdb/tests/eventscripts/stubs/ctdb_lvs +%{_datadir}/ctdb/tests/eventscripts/stubs/ctdb_natgw +%{_datadir}/ctdb/tests/eventscripts/stubs/date +%{_datadir}/ctdb/tests/eventscripts/stubs/df +%{_datadir}/ctdb/tests/eventscripts/stubs/ethtool +%{_datadir}/ctdb/tests/eventscripts/stubs/exportfs +%{_datadir}/ctdb/tests/eventscripts/stubs/id +%{_datadir}/ctdb/tests/eventscripts/stubs/ip +%{_datadir}/ctdb/tests/eventscripts/stubs/ip6tables +%{_datadir}/ctdb/tests/eventscripts/stubs/iptables +%{_datadir}/ctdb/tests/eventscripts/stubs/ipvsadm +%{_datadir}/ctdb/tests/eventscripts/stubs/kill +%{_datadir}/ctdb/tests/eventscripts/stubs/killall +%{_datadir}/ctdb/tests/eventscripts/stubs/multipath +%{_datadir}/ctdb/tests/eventscripts/stubs/net +%{_datadir}/ctdb/tests/eventscripts/stubs/pidof +%{_datadir}/ctdb/tests/eventscripts/stubs/pkill +%{_datadir}/ctdb/tests/eventscripts/stubs/ps +%{_datadir}/ctdb/tests/eventscripts/stubs/rm +%{_datadir}/ctdb/tests/eventscripts/stubs/rpc.lockd +%{_datadir}/ctdb/tests/eventscripts/stubs/rpc.mountd +%{_datadir}/ctdb/tests/eventscripts/stubs/rpc.rquotad +%{_datadir}/ctdb/tests/eventscripts/stubs/rpc.statd +%{_datadir}/ctdb/tests/eventscripts/stubs/rpcinfo +%{_datadir}/ctdb/tests/eventscripts/stubs/service +%{_datadir}/ctdb/tests/eventscripts/stubs/sleep +%{_datadir}/ctdb/tests/eventscripts/stubs/smnotify +%{_datadir}/ctdb/tests/eventscripts/stubs/ss +%{_datadir}/ctdb/tests/eventscripts/stubs/tdbdump +%{_datadir}/ctdb/tests/eventscripts/stubs/tdbtool +%{_datadir}/ctdb/tests/eventscripts/stubs/testparm +%{_datadir}/ctdb/tests/eventscripts/stubs/timeout +%{_datadir}/ctdb/tests/eventscripts/stubs/wbinfo + +%dir %{_datadir}/ctdb/tests/onnode +%{_datadir}/ctdb/tests/onnode/0001.sh +%{_datadir}/ctdb/tests/onnode/0002.sh +%{_datadir}/ctdb/tests/onnode/0003.sh +%{_datadir}/ctdb/tests/onnode/0004.sh +%{_datadir}/ctdb/tests/onnode/0005.sh +%{_datadir}/ctdb/tests/onnode/0006.sh +%{_datadir}/ctdb/tests/onnode/0070.sh +%{_datadir}/ctdb/tests/onnode/0071.sh +%{_datadir}/ctdb/tests/onnode/0072.sh +%{_datadir}/ctdb/tests/onnode/0075.sh + +%dir %{_datadir}/ctdb/tests/onnode/etc-ctdb +%{_datadir}/ctdb/tests/onnode/etc-ctdb/nodes + +%dir %{_datadir}/ctdb/tests/onnode/scripts +%{_datadir}/ctdb/tests/onnode/scripts/local.sh + +%dir %{_datadir}/ctdb/tests/onnode/stubs +%{_datadir}/ctdb/tests/onnode/stubs/ctdb +%{_datadir}/ctdb/tests/onnode/stubs/ssh + +%dir %{_datadir}/ctdb/tests/scripts +%{_datadir}/ctdb/tests/scripts/common.sh +%{_datadir}/ctdb/tests/scripts/integration.bash +%{_datadir}/ctdb/tests/scripts/script_install_paths.sh +%{_datadir}/ctdb/tests/scripts/test_wrap +%{_datadir}/ctdb/tests/scripts/unit.sh + +%dir %{_datadir}/ctdb/tests/shellcheck +%{_datadir}/ctdb/tests/shellcheck/base_scripts.sh +%{_datadir}/ctdb/tests/shellcheck/ctdb_helpers.sh +%{_datadir}/ctdb/tests/shellcheck/ctdbd_wrapper.sh +%{_datadir}/ctdb/tests/shellcheck/event_scripts.sh +%{_datadir}/ctdb/tests/shellcheck/functions.sh +%{_datadir}/ctdb/tests/shellcheck/init_script.sh +%{_datadir}/ctdb/tests/shellcheck/tools.sh + +%dir %{_datadir}/ctdb/tests/shellcheck/scripts +%{_datadir}/ctdb/tests/shellcheck/scripts/local.sh + +%dir %{_datadir}/ctdb/tests/simple +%{_datadir}/ctdb/tests/simple/README +%{_datadir}/ctdb/tests/simple/00_ctdb_init.sh +%{_datadir}/ctdb/tests/simple/00_ctdb_onnode.sh +%{_datadir}/ctdb/tests/simple/01_ctdb_version.sh +%{_datadir}/ctdb/tests/simple/02_ctdb_listvars.sh +%{_datadir}/ctdb/tests/simple/03_ctdb_getvar.sh +%{_datadir}/ctdb/tests/simple/04_ctdb_setvar.sh +%{_datadir}/ctdb/tests/simple/05_ctdb_listnodes.sh +%{_datadir}/ctdb/tests/simple/06_ctdb_getpid.sh +%{_datadir}/ctdb/tests/simple/07_ctdb_process_exists.sh +%{_datadir}/ctdb/tests/simple/08_ctdb_isnotrecmaster.sh +%{_datadir}/ctdb/tests/simple/09_ctdb_ping.sh +%{_datadir}/ctdb/tests/simple/11_ctdb_ip.sh +%{_datadir}/ctdb/tests/simple/12_ctdb_getdebug.sh +%{_datadir}/ctdb/tests/simple/13_ctdb_setdebug.sh +%{_datadir}/ctdb/tests/simple/14_ctdb_statistics.sh +%{_datadir}/ctdb/tests/simple/15_ctdb_statisticsreset.sh +%{_datadir}/ctdb/tests/simple/16_ctdb_config_add_ip.sh +%{_datadir}/ctdb/tests/simple/17_ctdb_config_delete_ip.sh +%{_datadir}/ctdb/tests/simple/18_ctdb_reloadips.sh +%{_datadir}/ctdb/tests/simple/19_ip_takeover_noop.sh +%{_datadir}/ctdb/tests/simple/20_delip_iface_gc.sh +%{_datadir}/ctdb/tests/simple/21_ctdb_attach.sh +%{_datadir}/ctdb/tests/simple/23_ctdb_moveip.sh +%{_datadir}/ctdb/tests/simple/24_ctdb_getdbmap.sh +%{_datadir}/ctdb/tests/simple/25_dumpmemory.sh +%{_datadir}/ctdb/tests/simple/26_ctdb_config_check_error_on_unreachable_ctdb.sh +%{_datadir}/ctdb/tests/simple/27_ctdb_detach.sh +%{_datadir}/ctdb/tests/simple/28_zero_eventscripts.sh +%{_datadir}/ctdb/tests/simple/31_ctdb_disable.sh +%{_datadir}/ctdb/tests/simple/32_ctdb_enable.sh +%{_datadir}/ctdb/tests/simple/35_ctdb_getreclock.sh +%{_datadir}/ctdb/tests/simple/41_ctdb_stop.sh +%{_datadir}/ctdb/tests/simple/42_ctdb_continue.sh +%{_datadir}/ctdb/tests/simple/43_stop_recmaster_yield.sh +%{_datadir}/ctdb/tests/simple/51_message_ring.sh +%{_datadir}/ctdb/tests/simple/52_fetch_ring.sh +%{_datadir}/ctdb/tests/simple/53_transaction_loop.sh +%{_datadir}/ctdb/tests/simple/54_transaction_loop_recovery.sh +%{_datadir}/ctdb/tests/simple/55_ctdb_ptrans.sh +%{_datadir}/ctdb/tests/simple/56_replicated_transaction_recovery.sh +%{_datadir}/ctdb/tests/simple/58_ctdb_restoredb.sh +%{_datadir}/ctdb/tests/simple/60_recoverd_missing_ip.sh +%{_datadir}/ctdb/tests/simple/70_recoverpdbbyseqnum.sh +%{_datadir}/ctdb/tests/simple/71_ctdb_wipedb.sh +%{_datadir}/ctdb/tests/simple/72_update_record_persistent.sh +%{_datadir}/ctdb/tests/simple/73_tunable_NoIPTakeover.sh +%{_datadir}/ctdb/tests/simple/75_readonly_records_basic.sh +%{_datadir}/ctdb/tests/simple/76_ctdb_pdb_recovery.sh +%{_datadir}/ctdb/tests/simple/77_ctdb_db_recovery.sh +%{_datadir}/ctdb/tests/simple/78_ctdb_large_db_recovery.sh +%{_datadir}/ctdb/tests/simple/79_volatile_db_traverse.sh +%{_datadir}/ctdb/tests/simple/80_ctdb_traverse.sh +%{_datadir}/ctdb/tests/simple/81_tunnel_ring.sh +%{_datadir}/ctdb/tests/simple/90_debug_hung_script.sh +%{_datadir}/ctdb/tests/simple/99_daemons_shutdown.sh + +%dir %{_datadir}/ctdb/tests/simple/etc-ctdb +%dir %{_datadir}/ctdb/tests/simple/etc-ctdb/events +%dir %{_datadir}/ctdb/tests/simple/etc-ctdb/events/legacy +%{_datadir}/ctdb/tests/simple/etc-ctdb/events/legacy/00.test.script + +%dir %{_datadir}/ctdb/tests/simple/scripts +%{_datadir}/ctdb/tests/simple/scripts/local.bash +%{_datadir}/ctdb/tests/simple/scripts/local_daemons.bash +%{_datadir}/ctdb/tests/simple/scripts/ssh_local_daemons.sh + +%dir %{_datadir}/ctdb/tests/takeover +%{_datadir}/ctdb/tests/takeover/README +%{_datadir}/ctdb/tests/takeover/det.001.sh +%{_datadir}/ctdb/tests/takeover/det.002.sh +%{_datadir}/ctdb/tests/takeover/det.003.sh +%{_datadir}/ctdb/tests/takeover/lcp2.001.sh +%{_datadir}/ctdb/tests/takeover/lcp2.002.sh +%{_datadir}/ctdb/tests/takeover/lcp2.003.sh +%{_datadir}/ctdb/tests/takeover/lcp2.004.sh +%{_datadir}/ctdb/tests/takeover/lcp2.005.sh +%{_datadir}/ctdb/tests/takeover/lcp2.006.sh +%{_datadir}/ctdb/tests/takeover/lcp2.007.sh +%{_datadir}/ctdb/tests/takeover/lcp2.008.sh +%{_datadir}/ctdb/tests/takeover/lcp2.009.sh +%{_datadir}/ctdb/tests/takeover/lcp2.010.sh +%{_datadir}/ctdb/tests/takeover/lcp2.011.sh +%{_datadir}/ctdb/tests/takeover/lcp2.012.sh +%{_datadir}/ctdb/tests/takeover/lcp2.013.sh +%{_datadir}/ctdb/tests/takeover/lcp2.014.sh +%{_datadir}/ctdb/tests/takeover/lcp2.015.sh +%{_datadir}/ctdb/tests/takeover/lcp2.016.sh +%{_datadir}/ctdb/tests/takeover/lcp2.024.sh +%{_datadir}/ctdb/tests/takeover/lcp2.025.sh +%{_datadir}/ctdb/tests/takeover/lcp2.027.sh +%{_datadir}/ctdb/tests/takeover/lcp2.028.sh +%{_datadir}/ctdb/tests/takeover/lcp2.029.sh +%{_datadir}/ctdb/tests/takeover/lcp2.030.sh +%{_datadir}/ctdb/tests/takeover/lcp2.031.sh +%{_datadir}/ctdb/tests/takeover/lcp2.032.sh +%{_datadir}/ctdb/tests/takeover/lcp2.033.sh +%{_datadir}/ctdb/tests/takeover/lcp2.034.sh +%{_datadir}/ctdb/tests/takeover/lcp2.035.sh +%{_datadir}/ctdb/tests/takeover/nondet.001.sh +%{_datadir}/ctdb/tests/takeover/nondet.002.sh +%{_datadir}/ctdb/tests/takeover/nondet.003.sh + +%dir %{_datadir}/ctdb/tests/takeover/scripts +%{_datadir}/ctdb/tests/takeover/scripts/local.sh + +%dir %{_datadir}/ctdb/tests/takeover_helper +%{_datadir}/ctdb/tests/takeover_helper/000.sh +%{_datadir}/ctdb/tests/takeover_helper/010.sh +%{_datadir}/ctdb/tests/takeover_helper/011.sh +%{_datadir}/ctdb/tests/takeover_helper/012.sh +%{_datadir}/ctdb/tests/takeover_helper/013.sh +%{_datadir}/ctdb/tests/takeover_helper/014.sh +%{_datadir}/ctdb/tests/takeover_helper/016.sh +%{_datadir}/ctdb/tests/takeover_helper/017.sh +%{_datadir}/ctdb/tests/takeover_helper/018.sh +%{_datadir}/ctdb/tests/takeover_helper/019.sh +%{_datadir}/ctdb/tests/takeover_helper/021.sh +%{_datadir}/ctdb/tests/takeover_helper/022.sh +%{_datadir}/ctdb/tests/takeover_helper/023.sh +%{_datadir}/ctdb/tests/takeover_helper/024.sh +%{_datadir}/ctdb/tests/takeover_helper/025.sh +%{_datadir}/ctdb/tests/takeover_helper/026.sh +%{_datadir}/ctdb/tests/takeover_helper/027.sh +%{_datadir}/ctdb/tests/takeover_helper/028.sh +%{_datadir}/ctdb/tests/takeover_helper/030.sh +%{_datadir}/ctdb/tests/takeover_helper/031.sh +%{_datadir}/ctdb/tests/takeover_helper/110.sh +%{_datadir}/ctdb/tests/takeover_helper/111.sh +%{_datadir}/ctdb/tests/takeover_helper/120.sh +%{_datadir}/ctdb/tests/takeover_helper/121.sh +%{_datadir}/ctdb/tests/takeover_helper/122.sh +%{_datadir}/ctdb/tests/takeover_helper/130.sh +%{_datadir}/ctdb/tests/takeover_helper/131.sh +%{_datadir}/ctdb/tests/takeover_helper/132.sh +%{_datadir}/ctdb/tests/takeover_helper/140.sh +%{_datadir}/ctdb/tests/takeover_helper/150.sh +%{_datadir}/ctdb/tests/takeover_helper/160.sh +%{_datadir}/ctdb/tests/takeover_helper/210.sh +%{_datadir}/ctdb/tests/takeover_helper/211.sh +%{_datadir}/ctdb/tests/takeover_helper/220.sh +%{_datadir}/ctdb/tests/takeover_helper/230.sh +%{_datadir}/ctdb/tests/takeover_helper/240.sh +%{_datadir}/ctdb/tests/takeover_helper/250.sh +%{_datadir}/ctdb/tests/takeover_helper/260.sh + +%dir %{_datadir}/ctdb/tests/takeover_helper/scripts +%{_datadir}/ctdb/tests/takeover_helper/scripts/local.sh + +%dir %{_datadir}/ctdb/tests/tool +%{_datadir}/ctdb/tests/tool/README +%{_datadir}/ctdb/tests/tool/ctdb.attach.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.attach.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.attach.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.ban.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.ban.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.ban.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.catdb.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.catdb.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.cattdb.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.cattdb.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.continue.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.continue.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.continue.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.deletekey.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.disable.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.disable.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.disable.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.disable.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.enable.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.enable.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.enable.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.getcapabilities.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.getcapabilities.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.getcapabilities.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.getcapabilities.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.getdbmap.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.getdbseqnum.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.getdbseqnum.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.getdbstatus.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.getdbstatus.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.getpid.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.getreclock.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.getreclock.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.getvar.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.getvar.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.ifaces.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.ip.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.ip.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.ip.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.ip.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.ip.005.sh +%{_datadir}/ctdb/tests/tool/ctdb.ip.006.sh +%{_datadir}/ctdb/tests/tool/ctdb.ip.007.sh +%{_datadir}/ctdb/tests/tool/ctdb.ipinfo.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.ipinfo.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.ipinfo.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.listnodes.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.listnodes.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.listvars.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.005.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.006.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.007.sh +%{_datadir}/ctdb/tests/tool/ctdb.lvs.008.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.005.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.006.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.007.sh +%{_datadir}/ctdb/tests/tool/ctdb.natgw.008.sh +%{_datadir}/ctdb/tests/tool/ctdb.nodestatus.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.nodestatus.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.nodestatus.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.nodestatus.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.nodestatus.005.sh +%{_datadir}/ctdb/tests/tool/ctdb.nodestatus.006.sh +%{_datadir}/ctdb/tests/tool/ctdb.pdelete.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.ping.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.pnn.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.process-exists.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.process-exists.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.process-exists.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.pstore.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.ptrans.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.readkey.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.recmaster.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.recmaster.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.recover.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.011.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.012.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.013.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.014.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.015.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.016.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.017.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.018.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.019.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.020.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.021.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.023.sh +%{_datadir}/ctdb/tests/tool/ctdb.reloadnodes.024.sh +%{_datadir}/ctdb/tests/tool/ctdb.runstate.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.runstate.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.runstate.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.runstate.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.runstate.005.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbreadonly.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbreadonly.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbreadonly.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbreadonly.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbreadonly.005.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbsticky.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbsticky.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbsticky.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbsticky.004.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdbsticky.005.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdebug.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdebug.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.setdebug.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.setifacelink.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.setifacelink.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.setvar.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.setvar.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.status.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.status.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.stop.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.stop.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.stop.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.unban.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.unban.002.sh +%{_datadir}/ctdb/tests/tool/ctdb.unban.003.sh +%{_datadir}/ctdb/tests/tool/ctdb.uptime.001.sh +%{_datadir}/ctdb/tests/tool/ctdb.writekey.001.sh + +%dir %{_datadir}/ctdb/tests/tool/scripts +%{_datadir}/ctdb/tests/tool/scripts/local.sh + +%endif + +%files help +%{_mandir}/man1/ctdb.1.gz +%{_mandir}/man1/ctdb_diagnostics.1.gz +%{_mandir}/man1/ctdbd.1.gz +%{_mandir}/man1/onnode.1.gz +%{_mandir}/man1/ltdbtool.1.gz +%{_mandir}/man1/ping_pong.1.gz +%{_mandir}/man1/ctdbd_wrapper.1.gz +%{_mandir}/man1/gentest.1* +%{_mandir}/man1/locktest.1* +%{_mandir}/man1/masktest.1* +%{_mandir}/man1/ndrdump.1* +%{_mandir}/man1/smbtorture.1* +%{_mandir}/man1/vfstest.1* +%{_mandir}/man1/ntlm_auth.1.gz +%{_mandir}/man1/wbinfo.1* +%{_mandir}/man1/pidl* +%{_mandir}/man1/dbwrap_tool.1* +%{_mandir}/man1/nmblookup.1* +%{_mandir}/man1/oLschema2ldif.1* +%{_mandir}/man1/regdiff.1* +%{_mandir}/man1/regpatch.1* +%{_mandir}/man1/regshell.1* +%{_mandir}/man1/regtree.1* +%{_mandir}/man1/findsmb.1* +%{_mandir}/man1/log2pcap.1* +%{_mandir}/man1/mvxattr.1* +%{_mandir}/man1/rpcclient.1* +%{_mandir}/man1/sharesec.1* +%{_mandir}/man1/smbcacls.1* +%{_mandir}/man1/smbclient.1* +%{_mandir}/man1/smbcquotas.1* +%{_mandir}/man1/smbget.1* +%{_mandir}/man1/smbtar.1* +%{_mandir}/man1/smbtree.1* +%{_mandir}/man1/smbstatus.1* +%{_mandir}/man1/profiles.1* +%{_mandir}/man1/smbcontrol.1* +%{_mandir}/man1/testparm.1* +%{_mandir}/man3/Parse::Pidl* +%{_mandir}/man5/ctdb.conf.5.gz +%{_mandir}/man5/ctdb-script.options.5.gz +%{_mandir}/man5/ctdb.sysconfig.5.gz +%{_mandir}/man5/smbgetrc.5* +%{_mandir}/man5/pam_winbind.conf.5* +%{_mandir}/man5/lmhosts.5* +%{_mandir}/man5/smb.conf.5* +%{_mandir}/man5/smbpasswd.5* +%{_mandir}/man7/ctdb.7.gz +%{_mandir}/man7/ctdb-tunables.7.gz +%{_mandir}/man7/ctdb-statistics.7.gz +%{_mandir}/man7/traffic_learner.7.* +%{_mandir}/man7/traffic_replay.7.* +%{_mandir}/man7/samba.7* +%{_mandir}/man8/winbindd.8* +%{_mandir}/man8/idmap_*.8* +%{_mandir}/man8/winbind_krb5_localauth.8* +%{_mandir}/man8/winbind_krb5_locator.8* +%{_mandir}/man8/pam_winbind.8* +%{_mandir}/man8/smbspool_krb5_wrapper.8* +%{_mandir}/man8/cifsdd.8.* +%{_mandir}/man8/samba-regedit.8* +%{_mandir}/man8/smbspool.8* +%{_mandir}/man8/eventlogadm.8* +%{_mandir}/man8/smbd.8* +%{_mandir}/man8/nmbd.8* +%{_mandir}/man8/vfs_acl_tdb.8* +%{_mandir}/man8/vfs_acl_xattr.8* +%{_mandir}/man8/vfs_aio_fork.8* +%{_mandir}/man8/vfs_aio_pthread.8* +%{_mandir}/man8/vfs_audit.8* +%{_mandir}/man8/vfs_btrfs.8* +%{_mandir}/man8/vfs_cacheprime.8* +%{_mandir}/man8/vfs_cap.8* +%{_mandir}/man8/vfs_catia.8* +%{_mandir}/man8/vfs_commit.8* +%{_mandir}/man8/vfs_crossrename.8* +%{_mandir}/man8/vfs_default_quota.8* +%{_mandir}/man8/vfs_dirsort.8* +%{_mandir}/man8/vfs_extd_audit.8* +%{_mandir}/man8/vfs_fake_perms.8* +%{_mandir}/man8/vfs_fileid.8* +%{_mandir}/man8/vfs_fruit.8* +%{_mandir}/man8/vfs_full_audit.8* +%{_mandir}/man8/vfs_gpfs.8* +%{_mandir}/man8/vfs_linux_xfs_sgid.8* +%{_mandir}/man8/vfs_media_harmony.8* +%{_mandir}/man8/vfs_netatalk.8* +%{_mandir}/man8/vfs_nfs4acl_xattr.8* +%{_mandir}/man8/vfs_offline.8* +%{_mandir}/man8/vfs_prealloc.8* +%{_mandir}/man8/vfs_preopen.8* +%{_mandir}/man8/vfs_readahead.8* +%{_mandir}/man8/vfs_readonly.8* +%{_mandir}/man8/vfs_recycle.8* +%{_mandir}/man8/vfs_shadow_copy.8* +%{_mandir}/man8/vfs_shadow_copy2.8* +%{_mandir}/man8/vfs_shell_snap.8* +%{_mandir}/man8/vfs_snapper.8* +%{_mandir}/man8/vfs_streams_depot.8* +%{_mandir}/man8/vfs_streams_xattr.8* +%{_mandir}/man8/vfs_syncops.8* +%{_mandir}/man8/vfs_time_audit.8* +%{_mandir}/man8/vfs_tsmsm.8* +%{_mandir}/man8/vfs_unityed_media.8* +%{_mandir}/man8/vfs_virusfilter.8* +%{_mandir}/man8/vfs_worm.8* +%{_mandir}/man8/vfs_xattr_tdb.8* +%{_mandir}/man8/net.8* +%{_mandir}/man8/pdbedit.8* +%{_mandir}/man8/smbpasswd.8* + +%changelog +* Mon Sep 23 2019 huzhiyu - 4.9.1-3 +- Package init diff --git a/smb.conf.example b/smb.conf.example new file mode 100644 index 0000000..e672ce9 --- /dev/null +++ b/smb.conf.example @@ -0,0 +1,313 @@ +# This is the main Samba configuration file. For detailed information about the +# options listed here, refer to the smb.conf(5) manual page. Samba has a huge +# number of configurable options, most of which are not shown in this example. +# +# The Samba Wiki contains a lot of step-by-step guides installing, configuring, +# and using Samba: +# https://wiki.samba.org/index.php/User_Documentation +# +# In this file, lines starting with a semicolon (;) or a hash (#) are +# comments and are ignored. This file uses hashes to denote commentary and +# semicolons for parts of the file you may wish to configure. +# +# NOTE: Run the "testparm" command after modifying this file to check for basic +# syntax errors. +# +#--------------- +# Security-Enhanced Linux (SELinux) Notes: +# +# Turn the samba_domain_controller Boolean on to allow a Samba PDC to use the +# useradd and groupadd family of binaries. Run the following command as the +# root user to turn this Boolean on: +# setsebool -P samba_domain_controller on +# +# Turn the samba_enable_home_dirs Boolean on if you want to share home +# directories via Samba. Run the following command as the root user to turn this +# Boolean on: +# setsebool -P samba_enable_home_dirs on +# +# If you create a new directory, such as a new top-level directory, label it +# with samba_share_t so that SELinux allows Samba to read and write to it. Do +# not label system directories, such as /etc/ and /home/, with samba_share_t, as +# such directories should already have an SELinux label. +# +# Run the "ls -ldZ /path/to/directory" command to view the current SELinux +# label for a given directory. +# +# Set SELinux labels only on files and directories you have created. Use the +# chcon command to temporarily change a label: +# chcon -t samba_share_t /path/to/directory +# +# Changes made via chcon are lost when the file system is relabeled or commands +# such as restorecon are run. +# +# Use the samba_export_all_ro or samba_export_all_rw Boolean to share system +# directories. To share such directories and only allow read-only permissions: +# setsebool -P samba_export_all_ro on +# To share such directories and allow read and write permissions: +# setsebool -P samba_export_all_rw on +# +# To run scripts (preexec/root prexec/print command/...), copy them to the +# /var/lib/samba/scripts/ directory so that SELinux will allow smbd to run them. +# Note that if you move the scripts to /var/lib/samba/scripts/, they retain +# their existing SELinux labels, which may be labels that SELinux does not allow +# smbd to run. Copying the scripts will result in the correct SELinux labels. +# Run the "restorecon -R -v /var/lib/samba/scripts" command as the root user to +# apply the correct SELinux labels to these files. +# +#-------------- +# +#======================= Global Settings ===================================== + +[global] + +# ----------------------- Network-Related Options ------------------------- +# +# workgroup = the Windows NT domain name or workgroup name, for example, MYGROUP. +# +# server string = the equivalent of the Windows NT Description field. +# +# netbios name = used to specify a server name that is not tied to the hostname, +# maximum is 15 characters. +# +# interfaces = used to configure Samba to listen on multiple network interfaces. +# If you have multiple interfaces, you can use the "interfaces =" option to +# configure which of those interfaces Samba listens on. Never omit the localhost +# interface (lo). +# +# hosts allow = the hosts allowed to connect. This option can also be used on a +# per-share basis. +# +# hosts deny = the hosts not allowed to connect. This option can also be used on +# a per-share basis. +# + workgroup = MYGROUP + server string = Samba Server Version %v + +; netbios name = MYSERVER + +; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 +; hosts allow = 127. 192.168.12. 192.168.13. + +# --------------------------- Logging Options ----------------------------- +# +# log file = specify where log files are written to and how they are split. +# +# max log size = specify the maximum size log files are allowed to reach. Log +# files are rotated when they reach the size specified with "max log size". +# + + # log files split per-machine: + log file = /var/log/samba/log.%m + # maximum size of 50KB per log file, then rotate: + max log size = 50 + +# ----------------------- Standalone Server Options ------------------------ +# +# security = the mode Samba runs in. This can be set to user, share +# (deprecated), or server (deprecated). +# +# passdb backend = the backend used to store user information in. New +# installations should use either tdbsam or ldapsam. No additional configuration +# is required for tdbsam. The "smbpasswd" utility is available for backwards +# compatibility. +# + + security = user + passdb backend = tdbsam + + +# ----------------------- Domain Members Options ------------------------ +# +# security = must be set to domain or ads. +# +# passdb backend = the backend used to store user information in. New +# installations should use either tdbsam or ldapsam. No additional configuration +# is required for tdbsam. The "smbpasswd" utility is available for backwards +# compatibility. +# +# realm = only use the realm option when the "security = ads" option is set. +# The realm option specifies the Active Directory realm the host is a part of. +# +# password server = only use this option when the "security = server" +# option is set, or if you cannot use DNS to locate a Domain Controller. The +# argument list can include My_PDC_Name, [My_BDC_Name], and [My_Next_BDC_Name]: +# +# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name] +# +# Use "password server = *" to automatically locate Domain Controllers. + +; security = domain +; passdb backend = tdbsam +; realm = MY_REALM + +; password server = + +# ----------------------- Domain Controller Options ------------------------ +# +# security = must be set to user for domain controllers. +# +# passdb backend = the backend used to store user information in. New +# installations should use either tdbsam or ldapsam. No additional configuration +# is required for tdbsam. The "smbpasswd" utility is available for backwards +# compatibility. +# +# domain master = specifies Samba to be the Domain Master Browser, allowing +# Samba to collate browse lists between subnets. Do not use the "domain master" +# option if you already have a Windows NT domain controller performing this task. +# +# domain logons = allows Samba to provide a network logon service for Windows +# workstations. +# +# logon script = specifies a script to run at login time on the client. These +# scripts must be provided in a share named NETLOGON. +# +# logon path = specifies (with a UNC path) where user profiles are stored. +# +# +; security = user +; passdb backend = tdbsam + +; domain master = yes +; domain logons = yes + + # the following login script name is determined by the machine name + # (%m): +; logon script = %m.bat + # the following login script name is determined by the UNIX user used: +; logon script = %u.bat +; logon path = \\%L\Profiles\%u + # use an empty path to disable profile support: +; logon path = + + # various scripts can be used on a domain controller or a stand-alone + # machine to add or delete corresponding UNIX accounts: + +; add user script = /usr/sbin/useradd "%u" -n -g users +; add group script = /usr/sbin/groupadd "%g" +; add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u" +; delete user script = /usr/sbin/userdel "%u" +; delete user from group script = /usr/sbin/userdel "%u" "%g" +; delete group script = /usr/sbin/groupdel "%g" + + +# ----------------------- Browser Control Options ---------------------------- +# +# local master = when set to no, Samba does not become the master browser on +# your network. When set to yes, normal election rules apply. +# +# os level = determines the precedence the server has in master browser +# elections. The default value should be reasonable. +# +# preferred master = when set to yes, Samba forces a local browser election at +# start up (and gives itself a slightly higher chance of winning the election). +# +; local master = no +; os level = 33 +; preferred master = yes + +#----------------------------- Name Resolution ------------------------------- +# +# This section details the support for the Windows Internet Name Service (WINS). +# +# Note: Samba can be either a WINS server or a WINS client, but not both. +# +# wins support = when set to yes, the NMBD component of Samba enables its WINS +# server. +# +# wins server = tells the NMBD component of Samba to be a WINS client. +# +# wins proxy = when set to yes, Samba answers name resolution queries on behalf +# of a non WINS capable client. For this to work, there must be at least one +# WINS server on the network. The default is no. +# +# dns proxy = when set to yes, Samba attempts to resolve NetBIOS names via DNS +# nslookups. + +; wins support = yes +; wins server = w.x.y.z +; wins proxy = yes + +; dns proxy = yes + +# --------------------------- Printing Options ----------------------------- +# +# The options in this section allow you to configure a non-default printing +# system. +# +# load printers = when set you yes, the list of printers is automatically +# loaded, rather than setting them up individually. +# +# cups options = allows you to pass options to the CUPS library. Setting this +# option to raw, for example, allows you to use drivers on your Windows clients. +# +# printcap name = used to specify an alternative printcap file. +# + + load printers = yes + cups options = raw + +; printcap name = /etc/printcap + # obtain a list of printers automatically on UNIX System V systems: +; printcap name = lpstat +; printing = cups + +# --------------------------- File System Options --------------------------- +# +# The options in this section can be un-commented if the file system supports +# extended attributes, and those attributes are enabled (usually via the +# "user_xattr" mount option). These options allow the administrator to specify +# that DOS attributes are stored in extended attributes and also make sure that +# Samba does not change the permission bits. +# +# Note: These options can be used on a per-share basis. Setting them globally +# (in the [global] section) makes them the default for all shares. + +; map archive = no +; map hidden = no +; map read only = no +; map system = no +; store dos attributes = yes + + +#============================ Share Definitions ============================== + +[homes] + comment = Home Directories + browseable = no + writable = yes +; valid users = %S +; valid users = MYDOMAIN\%S + +[printers] + comment = All Printers + path = /var/spool/samba + browseable = no + guest ok = no + writable = no + printable = yes + +# Un-comment the following and create the netlogon directory for Domain Logons: +; [netlogon] +; comment = Network Logon Service +; path = /var/lib/samba/netlogon +; guest ok = yes +; writable = no +; share modes = no + +# Un-comment the following to provide a specific roaming profile share. +# The default is to use the user's home directory: +; [Profiles] +; path = /var/lib/samba/profiles +; browseable = no +; guest ok = yes + +# A publicly accessible directory that is read only, except for users in the +# "staff" group (which have write permissions): +; [public] +; comment = Public Stuff +; path = /home/samba +; public = yes +; writable = no +; printable = no +; write list = +staff diff --git a/smb.conf.vendor b/smb.conf.vendor new file mode 100644 index 0000000..fe3f806 --- /dev/null +++ b/smb.conf.vendor @@ -0,0 +1,37 @@ +# See smb.conf.example for a more detailed config file or +# read the smb.conf manpage. +# Run 'testparm' to verify the config is correct after +# you modified it. + +[global] + workgroup = SAMBA + security = user + + passdb backend = tdbsam + + printing = cups + printcap name = cups + load printers = yes + cups options = raw + +[homes] + comment = Home Directories + valid users = %S, %D%w%S + browseable = No + read only = No + inherit acls = Yes + +[printers] + comment = All Printers + path = /var/tmp + printable = Yes + create mask = 0600 + browseable = No + +[print$] + comment = Printer Drivers + path = /var/lib/samba/drivers + write list = @printadmin root + force group = @printadmin + create mask = 0664 + directory mask = 0775