-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hinko Kocevar wrote:
> Hi,
>
> I'm trying to touch a file in /sbin during boot time
> and would like to do that with a normal user by running
> SUIDed shell script.
> I have following script:
> hin...@alala /tmp $ cat test.sh
> #!/bin/sh
>
> touch /sbin/foo.bar
> exit $?
>
> hin...@alala /tmp $ sudo chmod +x test.sh
> hin...@alala /tmp $ sudo chown root:root test.sh
> hin...@alala /tmp $ sudo chmod +s test.sh
> hin...@alala /tmp $ ls -l test.sh
> -rwsr-sr-x 1 root root 32 Mar 2 09:27 test.sh
> hin...@alala /tmp $ sh -x test.sh
> + touch /sbin/foo.bar
> touch: cannot touch `/sbin/foo.bar': Permission denied
>
> Can somebody help me with that?
>
> Thank you!
>
> Best regards,
> Hinko
Linux does not support s[ug]id scripts, however, you can emulate the
effect of it using sudo - in your shell script, do the following:
#!/bin/sh
[ $(id -u) -ne 0 ] && exec sudo "$0" "$@"
# put the rest of the script here
and add a line to /etc/sudoers that reads:
ALL ALL=NOPASSWD: /path/to/script
This will allow any user (the first "ALL") from any host (the second
"ALL") to run /path/to/script as root:root without any authentication,
by simply calling /path/to/script (or just "script", if it happens to be
in the $PATH).
NB - I havn't actually tried this recently, so I might be wrong on some
of the specifics, but the general idea should hold.
Also, if you want to restrict *who* can run the script, you can change
the first "ALL" to something else, see sudoers(5) for details - also you
can restrict *where* it can be run by changing the second "ALL".
If you want to make the user enter *their own* password, remove the
"NOPASSWD:". If you want to make the user enter *root's* password, read
the man page - I don't remember the option, but I know there is one.
- --
ABCD
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAkmrneIACgkQOypDUo0oQOqhCwCgqspw4mIaGhDdkjyFkYbUnmMF
DgAAn0rG+V5ZFmwp8GWPPUc80cyB0EGB
=NE1x
-----END PGP SIGNATURE-----