[clue-tech] suid
    Jason S. Friedman 
    jason at powerpull.net
       
    Thu Feb 12 07:05:06 MST 2009
    
    
  
I have an executable X owned by root that can do A, B and C, depending 
on the command-line switches used when invoking X.  I want to grant 
ordinary users the privilege to do A and B, but not C.  So, I considered 
a wrapper script that verifies the user is not attempting to do C and 
then calls X.  I started with:
powerpull at goldenrule ~ $ wc < /etc/passwd
   45   65 2166
root at goldenrule ~ $ chmod 750 /usr/bin/wc
powerpull at goldenrule ~ $ wc < /etc/passwd
bash: /usr/bin/wc: Permission denied
root at goldenrule ~ $ cat > /usr/bin/wrapped_wc <<EOF
 > #!/bin/sh
 > /usr/bin/wc
 > EOF
# wrapped_wc would be re-written to verify that the user is not
# attempting to perform C
root at goldenrule ~ $ chmod 755 /usr/bin/wc /usr/bin/wrapped_wc
powerpull at goldenrule ~ $ wrapped_wc < /etc/passwd
   45   65 2166
root at goldenrule ~ $ chmod 750 /usr/bin/wc
powerpull at goldenrule ~ $ wrapped_wc < /etc/passwd
/usr/bin/wrapped_wc: 2: /usr/bin/wc: Permission denied
Now, I would expect this to help:
root at goldenrule ~ $ chmod u+s /usr/bin/wrapped_wc
root at goldenrule ~ $ ll /usr/bin/wrapped_wc
-rwsr-xr-x 1 root root 22 2009-02-12 13:58 /usr/bin/wrapped_wc
But it does not:
powerpull at goldenrule ~ $ wrapped_wc < /etc/passwd
/usr/bin/wrapped_wc: 2: /usr/bin/wc: Permission denied
    
    
More information about the clue-tech
mailing list