Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Oct 2008 12:19:35 -0400
From:      John Almberg <jalmberg@identry.com>
To:        John Almberg <jalmberg@identry.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: mysql connection through ssl tunnel
Message-ID:  <65233E01-1617-4C93-91ED-394330F31AA4@identry.com>
In-Reply-To: <33DD5BC0-7D57-4530-BB59-46E2D7A43F1A@identry.com>
References:  <8B945891-5F96-4FBF-8175-15F67F03DD92@identry.com>	<48D8F881.1010000@unsane.co.uk>	<912A74FB-0292-4A53-B480-34FE69D9C465@identry.com>	<20081020212103.GA13334@icarus.home.lan> <007ABF71-6D85-4849-A9E7-933D18236EE8@identry.com> <48FD8876.5090805@infracaninophile.co.uk> <51D1673D-4689-4F9A-8217-CFC5C58A1145@identry.com> <33DD5BC0-7D57-4530-BB59-46E2D7A43F1A@identry.com>

next in thread | previous in thread | raw e-mail | index | archive | help
>> Now I just need to figure out how to start it on reboot, but that  
>> is something I've been meaning to learn, anyway, so I don't mind.
>
> I hope you guys will bear with me just a little more... I have  
> spent the day trying to figure out how to create an rc script for  
> autossh. Very cool, and not as hard as I'd anticipated. It is  
> attached below.
>
> The script works perfectly *iff* I run it from the command line as  
> a non-root user, like so:
>
> /usr/local/etc/rc.d/autossh start
>
> However, it does NOT work when executed by root. Instead, I get the  
> following error message in /var/log/messages
>
>   messages:Oct 21 19:01:38 on autossh[89267]: ssh exited  
> prematurely with status 255; autossh exiting
>
> So (my understanding), autossh is starting, and tries to create the  
> tunnel, but the tunnel creation fails with the unhelpful 255 error  
> message.
>
> But only when executed by root. That's the puzzling part.
>
> I don't allow root logins on this server, but don't see how that  
> could cause this problem....
>
> I'm stumped. Any hints, much appreciated.
>
> -- John
>
> ----------------------
>
> #!/bin/sh
> # PROVIDE: autossh
> # REQUIRE: LOGIN
> # KEYWORD: shutdown
>
> . /etc/rc.subr
>
> name="autossh"
> rcvar=`set_rcvar`
> start_cmd="${name}_start"
> stop_cmd=":"
>
> load_rc_config $name
> eval "${rcvar}=\${${rcvar}:='NO'}"
>
> command="/usr/local/bin/autossh"
> command_args="-M 20000 -fNg -L 33006:127.0.0.1:3306 admin@example.com"
> #pidfile="/var/run/autossh.pid"
> #AUTOSSH_PIDFILE="$pidfile"; export AUTOSSH_PIDFILE
>
> autossh_start()
> {
>   ${command} ${command_args}
>   echo "started autossh"
> }
>
> run_rc_command "$1"
>

Answering my own question (probably the best way)...

I solved this problem by figuring out how to execute the command  
inside the rc script as a non-root user. Like so:

autossh_start()
{
   echo "${command} ${command_args}"
   su admin -c "${command} ${command_args}"
   echo "started autossh"
}


This works beautifully, so I almost hesitate to ask, but is there  
anything wrong with this approach?

-- John




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?65233E01-1617-4C93-91ED-394330F31AA4>