Package init
This commit is contained in:
commit
a8e3dc883a
92
CVE-2018-14629.patch
Normal file
92
CVE-2018-14629.patch
Normal file
@ -0,0 +1,92 @@
|
||||
From bf596c14c2462b9a15ea738ef4f32b3abb8b63d1 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Haslett <aaronhaslett@catalyst.net.nz>
|
||||
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 <aaronhaslett@catalyst.net.nz>
|
||||
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
||||
Reviewed-by: Garming Sam <garming@catalyst.net.nz>
|
||||
---
|
||||
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
|
||||
41
CVE-2018-16841-1.patch
Normal file
41
CVE-2018-16841-1.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From b38900c353ca92365f144734c99d156cc39611d4 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Bartlett <abartlet@samba.org>
|
||||
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 <abartlet@samba.org>
|
||||
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
|
||||
---
|
||||
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
|
||||
|
||||
40
CVE-2018-16841-2.patch
Normal file
40
CVE-2018-16841-2.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 58733073f6eb78e8b157ee55493e92ffa361b73c Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Bartlett <abartlet@samba.org>
|
||||
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 <abartlet@samba.org>
|
||||
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
|
||||
---
|
||||
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
|
||||
|
||||
|
||||
43
CVE-2018-16851.patch
Normal file
43
CVE-2018-16851.patch
Normal file
@ -0,0 +1,43 @@
|
||||
From f33f52c366f7cf140f470de44579dcb7eb832629 Mon Sep 17 00:00:00 2001
|
||||
From: Garming Sam <garming@catalyst.net.nz>
|
||||
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 <garming@catalyst.net.nz>
|
||||
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
||||
---
|
||||
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
|
||||
246
CVE-2018-16853-1.patch
Normal file
246
CVE-2018-16853-1.patch
Normal file
@ -0,0 +1,246 @@
|
||||
From 403c007b2309fe7ff264240cd3d07eb8a94a63f9 Mon Sep 17 00:00:00 2001
|
||||
From: Isaac Boukris <iboukris@gmail.com>
|
||||
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 <iboukris@gmail.com>
|
||||
Reviewed-by: Andreas Schneider <asn@samba.org>
|
||||
Reviewed-by: Stefan Metzmacher <metze@samba.org>
|
||||
---
|
||||
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 <iboukris@gmail.com>
|
||||
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 <iboukris@gmail.com>
|
||||
Reviewed-by: Andreas Schneider <asn@samba.org>
|
||||
Reviewed-by: Stefan Metzmacher <metze@samba.org>
|
||||
---
|
||||
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 <iboukris@gmail.com>
|
||||
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 <iboukris@gmail.com>
|
||||
Reviewed-by: Andreas Schneider <asn@samba.org>
|
||||
Reviewed-by: Stefan Metzmacher <metze@samba.org>
|
||||
---
|
||||
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 <asn@samba.org>
|
||||
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 <asn@samba.org>
|
||||
Reviewed-by: Stefan Metzmacher <metze@samba.org>
|
||||
---
|
||||
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: <unknown client> for <unknown server>, 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: <unknown client> for <unknown server>, 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 <iboukris@gmail.com>
|
||||
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 <iboukris@gmail.com>
|
||||
Reviewed-by: Andreas Schneider <asn@samba.org>
|
||||
Reviewed-by: Stefan Metzmacher <metze@samba.org>
|
||||
---
|
||||
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
|
||||
|
||||
54
CVE-2018-16853-2.patch
Normal file
54
CVE-2018-16853-2.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From 4aabfecd290cd2769376abf7f170e832becc4112 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Bartlett <abartlet@samba.org>
|
||||
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 <abartlet@samba.org>
|
||||
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
|
||||
---
|
||||
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
|
||||
59
CVE-2019-12435-1.patch
Normal file
59
CVE-2019-12435-1.patch
Normal file
@ -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;
|
||||
}
|
||||
|
||||
53
CVE-2019-12435-2.patch
Normal file
53
CVE-2019-12435-2.patch
Normal file
@ -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;
|
||||
}
|
||||
|
||||
140
CVE-2019-3870-1.patch
Normal file
140
CVE-2019-3870-1.patch
Normal file
@ -0,0 +1,140 @@
|
||||
From c25348e1f2a7fd0801e06918d67c469f1912f311 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Beale <timbeale@catalyst.net.nz>
|
||||
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 <timbeale@catalyst.net.nz>
|
||||
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
||||
|
||||
(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 <http://www.gnu.org/licenses/>.
|
||||
+#
|
||||
+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
|
||||
120
CVE-2019-3870-2.patch
Normal file
120
CVE-2019-3870-2.patch
Normal file
@ -0,0 +1,120 @@
|
||||
From b9ccfe0452524d8fdd5751944662856425599af2 Mon Sep 17 00:00:00 2001
|
||||
From: Tim Beale <timbeale@catalyst.net.nz>
|
||||
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 <timbeale@catalyst.net.nz>
|
||||
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
||||
Reviewed-by: Jeremy Allison <jra@samba.org>
|
||||
---
|
||||
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 <<EOF
|
||||
+Usage: $0 PREFIX
|
||||
+EOF
|
||||
+exit 1;
|
||||
+fi
|
||||
+
|
||||
+PREFIX="$1"
|
||||
+shift 1
|
||||
+
|
||||
+. `dirname $0`/../../../testprogs/blackbox/subunit.sh
|
||||
+
|
||||
+# selftest sets the umask to zero. Explicitly set it to 022 here,
|
||||
+# which should mean files should never be writable for anyone else
|
||||
+ORIG_UMASK=`umask`
|
||||
+umask 0022
|
||||
+
|
||||
+# checks that the files in the 'private' directory created are not
|
||||
+# world-writable
|
||||
+check_private_file_perms()
|
||||
+{
|
||||
+ target_dir="$1/private"
|
||||
+ result=0
|
||||
+
|
||||
+ for file in `ls $target_dir/`
|
||||
+ do
|
||||
+ filepath="$target_dir/$file"
|
||||
+
|
||||
+ # skip directories/sockets for now
|
||||
+ if [ ! -f $filepath ] ; then
|
||||
+ continue;
|
||||
+ fi
|
||||
+
|
||||
+ # use stat to get the file permissions, i.e. -rw-------
|
||||
+ file_perm=`stat -c "%A" $filepath`
|
||||
+
|
||||
+ # then use cut to drop the first 4 chars containing the file type
|
||||
+ # and owner permissions. What's left is the group and other users
|
||||
+ global_perm=`echo $file_perm | cut -c4-`
|
||||
+
|
||||
+ # check the remainder doesn't have write permissions set
|
||||
+ if [ -z "${global_perm##*w*}" ] ; then
|
||||
+ echo "Error: $file has $file_perm permissions"
|
||||
+ result=1
|
||||
+ fi
|
||||
+ done
|
||||
+ return $result
|
||||
+}
|
||||
+
|
||||
+TARGET_DIR=$PREFIX/basic-dc
|
||||
+rm -rf $TARGET_DIR
|
||||
+
|
||||
+# create a dummy smb.conf - we need to use fake ACLs for the file system here
|
||||
+# (but passing --option args with spaces in it proved too difficult in bash)
|
||||
+SMB_CONF=$TARGET_DIR/tmp/smb.conf
|
||||
+mkdir -p `dirname $SMB_CONF`
|
||||
+echo "vfs objects = fake_acls xattr_tdb" > $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
|
||||
72
CVE-2019-3870-3.patch
Normal file
72
CVE-2019-3870-3.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From be504b486d78133fd28ad3d7adfe589a99338846 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Bartlett <abartlet@samba.org>
|
||||
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 <abartlet@samba.org>
|
||||
Reviewed-by: Jeremy Allison <jra@samba.org>
|
||||
---
|
||||
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
|
||||
|
||||
169
CVE-2019-3870-4.patch
Normal file
169
CVE-2019-3870-4.patch
Normal file
@ -0,0 +1,169 @@
|
||||
From c99f2ab22cc93b5194a3477c6a241600fa0f6758 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Bartlett <abartlet@samba.org>
|
||||
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 <abartlet@samba.org>
|
||||
|
||||
(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
|
||||
59
CVE-2019-3870-5.patch
Normal file
59
CVE-2019-3870-5.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 61414430c6bd6c9c9bfa1512880ecc6adbdbf9b4 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Bartlett <abartlet@samba.org>
|
||||
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 <abartlet@samba.org>
|
||||
Reviewed-by: Jeremy Allison <jra@samba.org>
|
||||
---
|
||||
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
|
||||
|
||||
151
CVE-2019-3880.patch
Normal file
151
CVE-2019-3880.patch
Normal file
@ -0,0 +1,151 @@
|
||||
From a803d2524b8c06e2c360db0c686a212ac49f7321 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Allison <jra@samba.org>
|
||||
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 <jra@samba.org>
|
||||
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
||||
---
|
||||
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; snum<num_services; snum++) {
|
||||
- if (!lp_snum_ok(snum) || lp_printable(snum)) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- share_path = lp_path(talloc_tos(), snum);
|
||||
-
|
||||
- /* make sure we have a path (e.g. [homes] ) */
|
||||
- if (strlen(share_path) == 0) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- if (strncmp(share_path, p, strlen(share_path)) == 0) {
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- *pp_fname = p;
|
||||
- return (snum < num_services) ? snum : -1;
|
||||
-}
|
||||
-
|
||||
-/*******************************************************************
|
||||
_winreg_RestoreKey
|
||||
********************************************************************/
|
||||
|
||||
@@ -687,36 +647,11 @@ WERROR _winreg_RestoreKey(struct pipes_struct *p,
|
||||
struct winreg_RestoreKey *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_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
|
||||
|
||||
12
README.dc
Normal file
12
README.dc
Normal file
@ -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
|
||||
29
README.downgrade
Normal file
29
README.downgrade
Normal file
@ -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.
|
||||
BIN
gpgkey-52FBC0B86D954B0843324CDC6F33915B6568B7EA.gpg
Normal file
BIN
gpgkey-52FBC0B86D954B0843324CDC6F33915B6568B7EA.gpg
Normal file
Binary file not shown.
38
pam_winbind.conf
Normal file
38
pam_winbind.conf
Normal file
@ -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
|
||||
117
samba-4.9.0rc5-stack-protector.patch
Normal file
117
samba-4.9.0rc5-stack-protector.patch
Normal file
@ -0,0 +1,117 @@
|
||||
From e2dd47233f467e2ab80564968be4af6da6505161 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schneider <asn@samba.org>
|
||||
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 <asn@samba.org>
|
||||
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
||||
(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 <stdio.h>
|
||||
-
|
||||
- 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 <stdio.h>
|
||||
+
|
||||
+ 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 <asn@samba.org>
|
||||
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 <asn@samba.org>
|
||||
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
|
||||
(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 <stdio.h>
|
||||
+
|
||||
+ 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
|
||||
|
||||
6
samba-4.9.1.tar.asc
Normal file
6
samba-4.9.1.tar.asc
Normal file
@ -0,0 +1,6 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iFwEABECABwFAluomosVHHNhbWJhLWJ1Z3NAc2FtYmEub3JnAAoJEG8zkVtlaLfq
|
||||
Ef0AoLUiZNu1bqD0YjbzI8KCisfwPF/2AKDGrFuyL4ds6Ege/OiUbg7krCXrOg==
|
||||
=2NTz
|
||||
-----END PGP SIGNATURE-----
|
||||
BIN
samba-4.9.1.tar.xz
Normal file
BIN
samba-4.9.1.tar.xz
Normal file
Binary file not shown.
7
samba.log
Normal file
7
samba.log
Normal file
@ -0,0 +1,7 @@
|
||||
/var/log/samba/* {
|
||||
notifempty
|
||||
olddir /var/log/samba/old
|
||||
missingok
|
||||
sharedscripts
|
||||
copytruncate
|
||||
}
|
||||
6
samba.pamd
Normal file
6
samba.pamd
Normal file
@ -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
|
||||
3367
samba.spec
Normal file
3367
samba.spec
Normal file
File diff suppressed because it is too large
Load Diff
313
smb.conf.example
Normal file
313
smb.conf.example
Normal file
@ -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 = <NT-Server-Name>
|
||||
|
||||
# ----------------------- 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
|
||||
37
smb.conf.vendor
Normal file
37
smb.conf.vendor
Normal file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user