summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-04-05 14:15:56 -0700
committerKarolin Seeger <kseeger@samba.org>2011-06-14 12:56:47 +0200
commit320ae41ff34856a8837be88a4a99366b18e2d172 (patch)
tree5171bb6555075be8ef1f16a52f507808b842f5cb
parentb9f9be3effb16382d081f37bba6fc6ae016a74f3 (diff)
downloadsamba-320ae41ff34856a8837be88a4a99366b18e2d172.tar.gz
Fix bug #7080 - Quota only shown when logged as root.
Ensure we also check conn->admin_user when rejecting non-root access. (cherry picked from commit 6d360c9e5db64fbd96d353013b7836d771935b6d)
-rw-r--r--source3/smbd/fake_file.c2
-rw-r--r--source3/smbd/nttrans.c4
-rw-r--r--source3/smbd/trans2.c5
3 files changed, 6 insertions, 5 deletions
diff --git a/source3/smbd/fake_file.c b/source3/smbd/fake_file.c
index 6898793d29e..e0256f2286b 100644
--- a/source3/smbd/fake_file.c
+++ b/source3/smbd/fake_file.c
@@ -126,7 +126,7 @@ NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn,
NTSTATUS status;
/* access check */
- if (conn->server_info->utok.uid != 0) {
+ if (conn->server_info->utok.uid != 0 && !conn->admin_user) {
DEBUG(3, ("open_fake_file_shared: access_denied to "
"service[%s] file[%s] user[%s]\n",
lp_servicename(SNUM(conn)),
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index 3ff192bae33..f82820c71bf 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -2310,7 +2310,7 @@ static void call_nt_transact_get_user_quota(connection_struct *conn,
ZERO_STRUCT(qt);
/* access check */
- if (conn->server_info->utok.uid != 0) {
+ if (conn->server_info->utok.uid != 0 && !conn->admin_user) {
DEBUG(1,("get_user_quota: access_denied service [%s] user "
"[%s]\n", lp_servicename(SNUM(conn)),
conn->server_info->unix_name));
@@ -2580,7 +2580,7 @@ static void call_nt_transact_set_user_quota(connection_struct *conn,
ZERO_STRUCT(qt);
/* access check */
- if (conn->server_info->utok.uid != 0) {
+ if (conn->server_info->utok.uid != 0 && !conn->admin_user) {
DEBUG(1,("set_user_quota: access_denied service [%s] user "
"[%s]\n", lp_servicename(SNUM(conn)),
conn->server_info->unix_name));
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 84139daa0e1..1a171d84d1d 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -3156,7 +3156,8 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
fsp.fnum = -1;
/* access check */
- if (conn->server_info->utok.uid != sec_initial_uid()) {
+ if (conn->server_info->utok.uid != sec_initial_uid() &&
+ !conn->admin_user) {
DEBUG(0,("set_user_quota: access_denied "
"service [%s] user [%s]\n",
lp_servicename(SNUM(conn)),
@@ -3643,7 +3644,7 @@ cap_low = 0x%x, cap_high = 0x%x\n",
ZERO_STRUCT(quotas);
/* access check */
- if ((conn->server_info->utok.uid != sec_initial_uid())
+ if (((conn->server_info->utok.uid != sec_initial_uid()) && !conn->admin_user)
||!CAN_WRITE(conn)) {
DEBUG(0,("set_user_quota: access_denied service [%s] user [%s]\n",
lp_servicename(SNUM(conn)),