summaryrefslogtreecommitdiff
path: root/methods
diff options
context:
space:
mode:
authorMichael Vogt <mvo@ubuntu.com>2014-09-24 16:22:05 +0200
committerMichael Vogt <mvo@ubuntu.com>2014-09-24 16:22:05 +0200
commit3927c6da48c206b6b251661f44680d9883b4f6b4 (patch)
tree695aea2c55eb2358a07b9403c28a57a3ca0e585d /methods
parenta1380a5c52062b25c9ed260b721239ed57929503 (diff)
Drop Privileges to "Debian-apt" in most acquire methods
Add a new "Debian-apt" user that owns the /var/lib/apt/lists and /var/cache/apt/archive directories. The methods http, https, ftp, gpgv, gzip switch to this user when they start. Thanks to Julian and "ioerror" and tors "switch_id()" code.
Diffstat (limited to 'methods')
-rw-r--r--methods/copy.cc2
-rw-r--r--methods/ftp.cc3
-rw-r--r--methods/gpgv.cc3
-rw-r--r--methods/gzip.cc2
-rw-r--r--methods/http_main.cc4
-rw-r--r--methods/https.cc2
6 files changed, 15 insertions, 1 deletions
diff --git a/methods/copy.cc b/methods/copy.cc
index b78053d36..18d70e153 100644
--- a/methods/copy.cc
+++ b/methods/copy.cc
@@ -118,6 +118,8 @@ int main()
{
setlocale(LC_ALL, "");
+ DropPrivs();
+
CopyMethod Mth;
return Mth.Run();
}
diff --git a/methods/ftp.cc b/methods/ftp.cc
index 66787a7be..9d58aa3b9 100644
--- a/methods/ftp.cc
+++ b/methods/ftp.cc
@@ -1107,6 +1107,9 @@ int main(int, const char *argv[])
{
setlocale(LC_ALL, "");
+ // no more active ftp, sorry
+ DropPrivs();
+
/* See if we should be come the http client - we do this for http
proxy urls */
if (getenv("ftp_proxy") != 0)
diff --git a/methods/gpgv.cc b/methods/gpgv.cc
index ae521a2ed..159417883 100644
--- a/methods/gpgv.cc
+++ b/methods/gpgv.cc
@@ -5,6 +5,7 @@
#include <apt-pkg/error.h>
#include <apt-pkg/gpgv.h>
#include <apt-pkg/strutl.h>
+#include <apt-pkg/fileutl.h>
#include <ctype.h>
#include <errno.h>
@@ -262,6 +263,8 @@ int main()
{
setlocale(LC_ALL, "");
+ DropPrivs();
+
GPGVMethod Mth;
return Mth.Run();
diff --git a/methods/gzip.cc b/methods/gzip.cc
index df3f8828f..518e58f82 100644
--- a/methods/gzip.cc
+++ b/methods/gzip.cc
@@ -135,6 +135,8 @@ int main(int, char *argv[])
{
setlocale(LC_ALL, "");
+ DropPrivs();
+
Prog = strrchr(argv[0],'/');
++Prog;
diff --git a/methods/http_main.cc b/methods/http_main.cc
index 3b346a514..788582632 100644
--- a/methods/http_main.cc
+++ b/methods/http_main.cc
@@ -1,5 +1,5 @@
#include <config.h>
-
+#include <apt-pkg/fileutl.h>
#include <signal.h>
#include "http.h"
@@ -12,6 +12,8 @@ int main()
// closes the connection (this is dealt with via ServerDie())
signal(SIGPIPE, SIG_IGN);
+ DropPrivs();
+
HttpMethod Mth;
return Mth.Loop();
}
diff --git a/methods/https.cc b/methods/https.cc
index 0499af0c5..a40f37710 100644
--- a/methods/https.cc
+++ b/methods/https.cc
@@ -443,6 +443,8 @@ int main()
{
setlocale(LC_ALL, "");
+ DropPrivs();
+
HttpsMethod Mth;
curl_global_init(CURL_GLOBAL_SSL) ;