set user-id

Ryan Thompson ryan at sasknow.com
Mon Jul 21 21:31:45 PDT 2003


Gerald S. Stoller wrote to freebsd-questions at freebsd.org:

> FreeBSD  4.3-RELEASE FreeBSD 4.3-RELEASE #0: Sat Apr 21 10:54:49 GMT
> 2001 jkh at narf.osd.bsdi.com:/usr/src/sys/compile/GENERIC  i386
>
>              As root, I made a text file (named  t ) that did
>              something like
>                         echo  $USER   |   tee  xx

Please give complete examples. As posted, your example wouldn't run
without invoking sh(1) first. I'm assuming it was something like:

    #!/bin/sh
    echo $USER | tee xx

> and then had it set user-id (I did 'chmod  4755  t').  As a plain
> user, I made a directory that only  root  can write my current
> directory and then invoked  t  (by giving a path-name to it).  It
> reported that the  USER   was the plain user and couldn't write into
> the directory.  It appears that the set user-id didn't work, but I
> also checked  t  with  ls -l  and the permissions were   rwsr-xr-x ,
> exactly like that of  passwd  and  xterm  (except maybe for the write
> permission of the owner).
>             How do I get set user-id to work?

Your permissions are fine, but you're hitting a more subtle problem:
S*id bits don't work for interpreted scripts (denoted by the shebang,
#!), by design. If you'd compiled the equivalent example to a binary,
I'd expect it to work as you intended.

- Ryan

-- 
  Ryan Thompson <ryan at sasknow.com>

  SaskNow Technologies - http://www.sasknow.com
  901-1st Avenue North - Saskatoon, SK - S7K 1Y4

        Tel: 306-664-3600   Fax: 306-244-7037   Saskatoon
  Toll-Free: 877-727-5669     (877-SASKNOW)     North America



More information about the freebsd-questions mailing list