Date: Fri, 28 Apr 2000 11:42:44 -0600 (CST) From: Ryan Thompson <ryan@sasknow.com> To: Philippe Charron <garry@stella-net.fr> Cc: hardware@FreeBSD.ORG Subject: Re: someone has an idea ? Message-ID: <Pine.BSF.4.21.0004281117000.60643-100000@ren.sasknow.com> In-Reply-To: <3909B215.CAC1563D@stella-net.fr>
next in thread | previous in thread | raw e-mail | index | archive | help
Philippe Charron wrote to hardware@FreeBSD.ORG: > Hello, > > Im a trying to do a FreeBSD box without any keyboard (this machine will > be a Squid, HTTP and FTP serveur for non specialist person that can't > handle with a Unix system). > > As the user can't shutdown properly the computer, he has to press the > power button to switch off the box. > This leads to problems with fsck and inode lost in the system. > > Does anyone have an idea to solve this problem ? Assuming the user isn't experienced enough to handle a full root login, what about the following: create another user with uid '0', gid '0', different password, name = halt, shell = /sbin/halt. Be sure to add /sbin/halt to /etc/shells and remake the password database if you don't use vipw. Note I haven't actually 'tried' this. :-) Then, all that must be done is--with an ssh client and root logins enabled--put a login icon on their desktop. At the prompts, they have to remember 'halt' and a password. Not rocket science. Of course, this is kind of a kludge. You could accomplish the same with a cgi web form (if Apache is running) that inputs a password for the 'halt' user. Then, that password is passed along to a cgi script (probably using expect(1)) that runs 'su halt -c /sbin/halt'... and make sure that you added /sbin/halt to /etc/shells! Then, rebooting the system is as easy as clicking on a hyperlink and entering a password. OR... The other option that I see is the following. Create a root run shell script that can be detached (&) that sleep(1)s for 20 or 30 seconds and looks for a flagfile. The flag file directory can be owned by a normal user (say, with ftp access) and when halt.flag is created, reboot the system. Below is a shell script that we use for things like restarting daemons, etc. I've modified it for you so that it will halt a system when /var/db/sysflags/halt is created. #!/bin/sh # # $Id: sysflagd,v 1.1 2000/01/18 17:33:11 ryan Exp ryan $ # # Synopsis: # Monitors for the existence of predetermined flag files and executes # commands as root. # # (C)2000 SaskNow Technologies # All Rights Reserved if [ ! -e /var/log/sysflagd.log ] ; then touch /var/log/sysflagd.log logger -i -p local0.info New log started fi logger -i -p local0.info Started on `date`, `hostname` while true ; do if [ -f /var/db/sysflags/halt ] ; then logger -ip local0.info System shutdown initiated rm /var/db/sysflags/halt /sbin/halt fi # Default sleep interval of 30 seconds sleep 30 done simply run the 'sysflagd' shell script as root like: # ./sysflagd & or add a script to /usr/local/etc/rc.d/ to start it at bootup. Then, creating that flagfile is as simple as creating the directory, chmod 755 to a regular user of choice, and make a batch file in windows that invokes microsoft's stock ``ftp'' program with a name and password and uploads that file. Create a shortcut to that, and anyone with that batch file can remote shutdown the machine. :-) You will probably want to tweak /etc/login.access to allow logins only from a specific host for the user. -- Ryan Thompson <ryan@sasknow.com> Systems Administrator, Accounts Phone: +1 (306) 664-1161 SaskNow Technologies http://www.sasknow.com #106-380 3120 8th St E Saskatoon, SK S7H 0W2 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hardware" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0004281117000.60643-100000>