Annotation of doc/loncapafiles/wrap_setuid.piml, revision 1.2
1.1 albertel 1: <!DOCTYPE piml PUBLIC "-//TUX/DTD piml 1.0 Final//EN"
2: "http://lpml.sourceforge.net/DTD/piml.dtd">
3: <!-- wrap_setuid.piml -->
4: <!-- Guy Albertelli -->
5:
1.2 ! raeburn 6: <!-- $Id: wrap_setuid.piml,v 1.1 2005/07/08 01:31:08 albertel Exp $ -->
1.1 albertel 7:
8: <!--
9:
10: This file is part of the LearningOnline Network with CAPA (LON-CAPA).
11:
12: LON-CAPA is free software; you can redistribute it and/or modify
13: it under the terms of the GNU General Public License as published by
14: the Free Software Foundation; either version 2 of the License, or
15: (at your option) any later version.
16:
17: LON-CAPA is distributed in the hope that it will be useful,
18: but WITHOUT ANY WARRANTY; without even the implied warranty of
19: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20: GNU General Public License for more details.
21:
22: You should have received a copy of the GNU General Public License
23: along with LON-CAPA; if not, write to the Free Software
24: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25:
26: /home/httpd/html/adm/gpl.txt
27:
28: http://www.lon-capa.org/
29:
30: -->
31:
32: <piml>
33: <targetroot>/</targetroot>
34: <files>
35: <file>
36: <target dist="default">/home/httpd/perl</target>
37: <perlscript mode="fg" dist="default">
38: print("Not wrapping setuid scripts\n");
39: </perlscript>
1.2 ! raeburn 40: <perlscript mode="fg" dist="suse9.2 suse9.3 sles9">
1.1 albertel 41:
42: $fslist='<TARGET />';
43: open(FIND, "find <TARGET /> -xdev -type f \\( -perm -04000 -o -perm -02000 \\) -print|");
44: while (<FIND>) {
45: chop;
46: next unless -T;
47: print("Fixing ", $_, "\n");
48: ($dir,$file) = m|(.*)/(.*)|;
49: chdir $dir || die "Can't chdir to $dir";
50: ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)
51: = stat($file);
52: die("Can't stat $_") unless $ino;
53: rename($file,".$file");
54: chmod(($mode & 01777), ".$file");# wipe out set[ug]id bits
55: open(C,">.tmp$$.c") || die("Can't write C program for $_");
56: $real = "$dir/.$file";
57: print C '
58: main(argc,argv)
59: int argc;
60: char **argv;
61: {
62: execv("' . $real . '",argv);
63: }
64: ';
65: close C;
66: system('/usr/bin/cc', ".tmp$$.c", '-o', $file);
67: die("Can't compile new $_") if $?;
68: chown($uid, $gid, $file);
69: chmod($mode, $file);
70:
71: unlink(".tmp$$.c");
72: chdir('/');
73: }
74:
75: </perlscript>
76: </file>
77: </files>
78: </piml>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>