On 2005-08-02 14:05, Vasil Dimov <[EMAIL PROTECTED]> wrote: >On Tue, Aug 02, 2005 at 12:33:48PM +0300, Giorgos Keramidas wrote: >>On 2005-08-02 09:29, Vasil Dimov <[EMAIL PROTECTED]> wrote: >>>> *) >>>> - if (/bin/mkdir -p /tmp/.diskless 2> /dev/null); then >>>> - rmdir /tmp/.diskless >>>> + if ( > /tmp/.diskless 2> /dev/null); then >>>> + rm /tmp/.diskless >>>> else >>>> if [ -h /tmp ]; then >>>> echo "*** /tmp is a symlink to a non-writable >>>> area!" >>> >>> The thing you suggest is bloody insecure. Just imagine some baduser >>> doing ln -s /etc/passwd /tmp/.diskless before rc.d/tmp gets executed. >>> I guess this is the reason why directory creation is used instead of >>> file creation. >>> >>> I just wonder why a new shell is forked for this test. Simply if >>> /bin/mkdir -p /tmp/.diskless 2> /dev/null ; then would do the same >>> thing without forking a new shell that only executes /bin/mkdir >> >> I think it's because the current shell is allowed to exit if a command >> fails while a conditional test like this is run: >> >> if mkdir /tmp/foo; then >> echo foo >> rmdir /tmp/foo >> fi >> >> and mkdir may fail. > > What do you mean by "allowed to exit"? > sh -e?
You're right, of course. I forgot the script I was looking at had the -e option enabled. _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"