diff options
author | Gerald Combs <gerald@wireshark.org> | 2007-08-30 04:16:11 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2007-08-30 04:16:11 +0000 |
commit | c63446af5152f79f202beeac0e88f15d1bbb753d (patch) | |
tree | a10e940127c6cc9d338bbc53f6ec8226f190a484 /tools/setuid-root.pl.in | |
parent | b2ba352ae47bad702d93770b656fdc9d2ebd4df0 (diff) |
Add the setuid script missing from my last checkin.
svn path=/trunk/; revision=22736
Diffstat (limited to 'tools/setuid-root.pl.in')
-rwxr-xr-x | tools/setuid-root.pl.in | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tools/setuid-root.pl.in b/tools/setuid-root.pl.in new file mode 100755 index 0000000000..7efcf5762e --- /dev/null +++ b/tools/setuid-root.pl.in @@ -0,0 +1,80 @@ +#!/usr/bin/perl -w +# +# setuid-root - Enable/disable setuid for tshark and dumpcap. +# +# $Id$ +# +# Copyright 2007, Luis Ontanon and Gerald Combs +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# 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 2 +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +sub usage() { + die <<FIN +Usage: $0 {enable|disable} [revert owner] + +Examples: + $0 enable # Changes owner to root and enables setuid + $0 disable # Changes owner to \$SUDO_USER and disables setuid + $0 disable kurtv # Changes owner to kurtv and disables setuid +FIN +} + +$< == 0 or die "only root can run this script"; + +$bin_prefix = "@BIN_PREFIX@"; + +if ($#ARGV < 0) { usage(); } + +$command = shift; +$command =~ tr/A-Z/a-z/; + +$tshark_bin = "@TSHARK_BIN@"; +$dumpcap_bin = "@DUMPCAP_BIN@"; + +die "Don't know prefix path" if length($bin_prefix) < 1; +die "Don't know tshark binary name" if length($tshark_bin) < 1; +die "Don't know dumpcap binary name" if length($dumpcap_bin) < 1; + +$revert_owner = ""; +if ($#ARGV >= 0) { + $revert_owner = shift; +} + +if (length($revert_owner) < 1 && length($ENV{SUDO_USER}) > 0) { + $revert_owner = $ENV{SUDO_USER}; +} + +if ($command eq "enable") { + system("chown root $bin_prefix/$tshark_bin"); + system("chown root $bin_prefix/$dumpcap_bin"); + system("chmod ug+s $bin_prefix/$tshark_bin"); + system("chmod ug+s $bin_prefix/$dumpcap_bin"); + exit 0; +} + +if ($command eq "disable"){ + system("chmod ug-s $bin_prefix/$tshark_bin"); + system("chmod ug-s $bin_prefix/$dumpcap_bin"); + die "Can't revert owner" if length($revert_owner) < 1; + system("chown $revert_owner $bin_prefix/$tshark_bin"); + system("chown $revert_owner $bin_prefix/$dumpcap_bin"); + exit(0); +} + +usage(); |