Giv kunderne magten tilbage, Sudo adgang til trivielle opgaver

Tit og ofte har du en kunde som bliver ved med at crashe sin egen database, eller hvis Apache server fra tid til anden bliver overbelastet fordi de deployer utestet kode eller lign.

Den slags support opgaver er belastende for både dig og kunden, derfor har jeg for længe siden tillagt mig den vane at give kunden adgang til selv at fikse det.

Første skridt er at installere sudo:

apt-get install sudo

Herefter opretter jeg flg. linie i min /etc/sudoers

www-data        ALL = (root) NOPASSWD: /etc/init.d/mysql restart

Og som du kan se har jeg sat www-data brugeren ind … hvis dín kunde har SSH Adgang kan du selvfølgelig nøjes med at angive kundens brugernavn her og så er du færdig – det er dog ikke alle kunder der har det, så jeg laver et hurtigt webinterface.

Først en webserver:

apt-get install apache2 libapache2-mod-php5

Så skal vi have sat et lille password på for god ordens skyld:

vim /etc/apache2/sites-enabled/000-default

og ret AllowOverride til i Directoy blokken for /var/www:

<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride AuthConfig
                Order allow,deny
                allow from all
        </Directory>

Genstart Apache:

root@mysql:~# /etc/init.d/apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

Opret /var/www/.htaccess og indsæt flg:

AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /var/www-passwd
Require valid-user

Og opret herefter /var/www-passwd med et brugernavn og et password i til kunden:

htpasswd -c /var/www-passwd kunde
New password: <kode>
Re-type new password: <kode gentaget> 
Adding password for user kunde

Så kaster vi lige et par liniers php kode sammen i /var/www/index.php:

<h1>Kontrolpanel</h2>
<a href="?genstart=mysql" onclick="return confirm('Dette vil genstarte MySQL\nEr du sikker?');">Genstart MySQL</a>
<?
if ($_REQUEST["genstart"] == "mysql")
{
print "<div style='clear: both;'></div><div style='background-color: black; float: left; padding: 25px; color: #93fe40;'><pre>";
system("sudo /etc/init.d/mysql restart");
print "</pre></div>";
}
?>

Resultat:

Jeg plejer lige et smide et mail statement ind så jeg også får en mail når kunden gør det … bare så jeg har lidt styr på hvad der sker, i tilfælde af at de ringer til mig bagefter og skal have hjælp, indsæt den her mellem linie 5 og 6:

mail("mikkel@mikjaer.com","MySQL Restartet by customer on ".exec("hostname -f")." from ".$_SERVER["REMOTE_ADDR"],"");

Du kan selvfølgelig selv udvide den med alle de knapper du, og dine kunder, måtte ønske dig 🙂

Dette indlæg blev udgivet i Knowledge Base, Linux, Old Base. Bogmærk permalinket.

Skriv et svar