]> err.no Git - dpkg/commitdiff
add new --import option to import settings from /etc/suid.conf
authorWichert Akkerman <wakkerma@debian.org>
Thu, 30 Nov 2000 01:53:35 +0000 (01:53 +0000)
committerWichert Akkerman <wakkerma@debian.org>
Thu, 30 Nov 2000 01:53:35 +0000 (01:53 +0000)
ChangeLog
TODO
debian/changelog
scripts/dpkg-statoverride.8
scripts/dpkg-statoverride.pl

index c2252adba4e866cdf9ae36e495df8ed44593b287..37fd8e9c1afa82113e4646e27f0566230c4199c5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Nov 30 02:45:42 CET 2000 Wichert Akkerman <wakkerma@debian.org>
+
+  * scripts/dpkg-statoverride.{pl,8}: add new --import option to
+    import settings from /etc/suid.conf
+
 Tue 28 Nov 18:48:52 CET 2000 peter karlsson <peterk@debian.org>
 
   * po/sv.po: Terminology changes
diff --git a/TODO b/TODO
index dd81151ab2398041af85d4eec7c8c93530a720a5..83df5adbd3980acc265eb46dfc80ebbef9553a1b 100644 (file)
--- a/TODO
+++ b/TODO
@@ -17,6 +17,12 @@ dpkg
 * try to remove directories again after removing conffiles
 * verify Enhances works (ie don't trigger some assertion)
 
+Fix:
+<joeyh_> package a conflicted with old versions of package b. package b
+      conficted with old versions of package a. I had the old versions of both
+      installed, and told dpkg to install the new versions of a and b
+      simulantaneously. It refused.
+
 dselect:
 * support Enhances (GNU/FSF)
 * toggle for searching through descriptions
index 513580436af2fb3cbb6871c0b1e8d885052887c4..13f826fb50b66607fc1186065e4de3f10c7c6b60 100644 (file)
@@ -3,6 +3,8 @@ dpkg (1.8.0) unstable; urgency=low
   * Fix two memory leaks. Closes: Bug#74259
   * Fix some things perl5.6 complains about. Closes: Bug#77337
   * Fix referenes to dpkg-deb manpage. Closes: Bug#77855
+  * Add new --import option to dpkg-statoverride to make it easy to
+    import suidmanager settings.
 
  -- Wichert Akkerman <wakkerma@debian.org>  UNRELEASED
 
index bc2d7020aeb18d3ddf99148af12ca0ed5189e445..28794450fb7c8a4c7723a417e6c29350dc04a96d 100644 (file)
@@ -1,4 +1,4 @@
-.TH DPKG-STATOVERRIDE 8 "June 2000" "Debian project" "dpkg utililties"
+.TH DPKG-STATOVERRIDE 8 "November 2000" "Debian project" "dpkg utililties"
 .SH NAME
 dpkg-statoverride -- override ownership and mode of files
 .SH SYNOPSIS
@@ -6,6 +6,8 @@ dpkg-statoverride -- override ownership and mode of files
 .br
 \fBdpkg-statoverride\fR [options] --remove \fI<file>\fR
 .br
+\fBdpkg-statoverride\fR [options] --import \fI<package>\fR \fI<file>\fR
+.br
 \fBdpkg-statoverride\fR [options] --list \fI[<glob-pattern>]\fR
 .SH DESCRIPTION
 `\fBstat overrides\fR' are a way to tell dpkg to use a different owner
@@ -30,6 +32,13 @@ groups can be specified by their name (for example \fBroot\fR or
 .I --remove <file>
 Remove an override for \fB<file>\fR.
 .TP
+.TP
+.I --import <package> <file>
+Import the override for file \fB<file>\fR as provided by package
+\fB<package>\fR. If the user has not made an override nothing is
+done and the default permissions are used. If an override is present
+it is removed from \fI/etc/suid.conf\fR and added to the statoverride
+database.
 .I --list [<glob-pattern>]
 List all overrides. If a glob pattern is specified restrict the output
 to overrides which match the glob.
index 89ad080f5fe949141e976898fae3cf74ec46c56c..0d49fbe387da9e4b11ef0542c15ab5143075dedf 100755 (executable)
@@ -19,6 +19,7 @@ for copying conditions.  There is NO warranty.
 Usage:
 
   dpkg-statoverride [options] --add <owner> <group> <mode> <file>
+  dpkg-statoverride [options] --import <package> <file>
   dpkg-statoverride [options] --remove <file>
   dpkg-statoverride [options] --list [<glob-pattern>]
 
@@ -61,6 +62,9 @@ while (@ARGV) {
        } elsif (m/^--list$/) {
                &CheckModeConflict;
                $mode= 'list';
+       } elsif (m/^--import$/) {
+               &CheckModeConflict;
+               $mode= 'import';
        } else {
                &badusage("unknown option \`$_'");
        }
@@ -118,7 +122,7 @@ if ($mode eq "add") {
            }
        }
 } elsif ($mode eq "remove") {
-       @ARGV==1 || &badusage("--remove needs four arguments");
+       @ARGV==1 || &badusage("--remove needs one arguments");
        $file=$ARGV[0];
        if (not defined $user{$file}) {
                print "No override present.";
@@ -129,6 +133,37 @@ if ($mode eq "add") {
        delete $mode{$file};
        $dowrite=1;
        print STDERR "warning: --update is useless for --remove\n" if ($doupdate);
+} elsif ($mode eq "import") {
+       @ARGV==2 || &badusage("--import needs two arguments");
+       $pkg=$ARGV[0];
+       $file=$ARGV[1];
+       if (defined $user{$file}) {
+               print STDERR "An override for \"$file\" already exists, ";
+               if ($doforce) {
+                       print STDERR "but --force specified so lets ignore it.\n";
+               } else {
+                       print STDERR "aborting\n";
+                       exit(3);
+               }
+               SUIDCONF=open("/etc/suid.conf") || &quit("error opening /etc/suid.conf");
+               while (<SUIDCONF>) {
+                       chomp;
+                       ($sm_pkg,$sm_file,$sm_user,$sm_group)=split;
+                       next ($sm_file != $pkg) next;
+                       last if ($sm_pkg==$pkg);
+                       $sm_user="#$sm_user") if ($sm_user =~ m/^\d*$/);
+                       $sm_group="#$sm_group") if ($sm_group =~ m/^\d*$/);
+                       $user{$fm_file}=$sm_user;
+                       $group{$fm_file}=$sm_group;
+                       if { -x /usr/sbin/suidunregister) {
+                               @args = ("suidunregister", "$file");
+                               system(@args) == 0 || &quit("system @args failed: $?");
+                       }
+                       $dowrite=1;
+                       last;
+               }
+               close(SUIDCONF);
+       }
 } elsif ($mode eq "list") {
        my (@list,@ilist,$pattern,$file);