# Jailkit MySQL Zugang



## bon (16. Dez. 2013)

Hallo,
mein System ist ein Debian7, 64bit,
ich möchte einen SSH-User Zugang auf MySQL-Befehle geben und habe folgendes in die /etc/jailkit/jk_init.ini eingetragen:

```
[mysql_client]
comment = mysql client
executables = /usr/bin/mysql
paths = /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0 , /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18, /usr/lib/x86_64-linux-gnu/libstdc++.so.6,/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17,/lib/x86_64-linux-gnu/libgcc_s.so.1
```
In der Serverkonfiguration/Jailkit habe ich unter:
"Jailkit Chroot Anwendungsbereiche" mysql_client

als letztes eingetragen. Leider wird nach dem anlegen eines SSH-Users nichts vom MySQL-Eintrag übernommen. 

Hat jemand eine Tipp diesbezüglich? Besten Dank.


----------



## Till (16. Dez. 2013)

Hast Du es mit einer neuen oder alten webseite getestet? Das jail wird ja nur einmalig beim anlegen des ersten ssh users einer seite erstellt.


----------



## bon (17. Dez. 2013)

Hi Till,
der User (web1) hat bereits existiert, ich hatte auch bereits einen SSH-User angelegt, anschließend Jailkit angepasst. Meinst Du ich müsste den User (web1) erst wieder löschen? 
Oder kann ich den Neuaufbau des Chroots manuell nachträglich anstoßen (jk_update ?), es sind nämlich bereits ~10GB Daten im Web drin :-/

Ach und was mir auch aufgefallen ist, wenn ich den SSH-User wieder lösche belässt ispconfig die Chroot-Struktur inkl. Binarys, Libs etc. Sollte das nicht besser entfernt werden?


----------



## Till (17. Dez. 2013)

> Hi Till,
> der User (web1) hat bereits existiert, ich hatte auch bereits einen SSH-User angelegt, anschließend Jailkit angepasst. Meinst Du ich müsste den User (web1) erst wieder löschen?
> Oder kann ich den Neuaufbau des Chroots manuell nachträglich anstoßen (jk_update ?), es sind nämlich bereits ~10GB Daten im Web drin :-/


Ja, das sollte wahrscheilich mit jk_update gehen. Oder Du fügst einfach nur die notwendigen mysql dateien mit jk_add hinzu. Aber in beiden fällen müsstest Du es manuell auf der shell machen, da ispconfig das halt nur einmalig beim anlegen des jails macht.



> Ach und was mir auch aufgefallen ist, wenn ich den SSH-User wieder lösche belässt ispconfig die Chroot-Struktur inkl. Binarys, Libs etc. Sollte das nicht besser entfernt werden?


Nein, das ist so gewollt da ispconfig nicht wissen kann ob es irgendwelche Scripte in der webseite gibt die eine der Dateien benötigen.


----------



## bon (17. Dez. 2013)

Ok nun ist alles klar 

Für alle die eine flexible Chrooted Shell anbieten möchten, hier eine Zusammenfassung.

Für MySQL-Server sollte bzw. kann wegen dem sock Problem der [client] Abschnitt in der /etc/mysql/my.cnf erweitert werden (falls man den Hostnamen nicht immer angeben möchte):

```
[client]
host            = 127.0.0.1
protocol        = TCP
port            = 3306
#socket         = /var/run/mysqld/mysqld.sock
```
Wichtig! Bei 64bit Installationen zuerst alle bestehenden Pfade zu den Libs in der /etc/jailkit/jk_init.ini prüfen und ggf. anpassen.

In der jk_init.ini trägst du alles ein was Du haben willst. Sofern du das bei zukünftigen Jails über ispconfig nutzen willst, trage die neuen Sektionen auch in Serverkonfiguration/Jailkit ein.

Beispiel: Mein Jail heisst "/var/www/customer/client1/web1"

Befehl um nachträglich Änderungen vorzunehmen:
jk_init -j /var/www/customer/client1/web1 mysql_client

am Ende die zu ändernde Sektion aus der ini Datei --^^^


Befehl um ein Jail zu prüfen:
jk_update -c /var/www/customer/client1/web1

Dazu die Datei jk_update.ini um dein zu prüfendes Jail erweitern.

```
[/var/www/customer/client1/web1]
skips = /opt
hardlinks = 0
```
Hier meine auf Debian 7 - 64bit angepasste jk_init.ini

```
[uidbasics]
# this section probably needs adjustment on 64bit systems
# or non-Linux systems
comment = common files for all jails that need user/group information
libraries = /lib/x86_64-linux-gnu/libnsl.so.1, /lib/x86_64-linux-gnu/libnsl.so.1, /lib/x86_64-linux-gnu/libnss*.so.2, /lib/x86_64-linux-gnu/libnss*.so.2
regularfiles = /etc/nsswitch.conf, /etc/ld.so.conf

[netbasics]
comment = common files for all jails that need any internet connectivity
libraries = /lib/x86_64-linux-gnu/libnss_dns.so.2, /lib/x86_64-linux-gnu/libnss_dns.so.2
regularfiles = /etc/resolv.conf, /etc/host.conf, /etc/hosts, /etc/protocols

[logbasics]
comment = timezone information
regularfiles = /etc/localtime
need_logsocket = 1

[jk_lsh]
comment = Jailkit limited shell
executables = /usr/sbin/jk_lsh
regularfiles = /etc/jailkit/jk_lsh.ini
users = root
groups = root
need_logsocket = 1
includesections = uidbasics

[limitedshell]
comment = alias for jk_lsh
includesections = jk_lsh

[cvs]
comment = Concurrent Versions System
executables = /usr/bin/cvs
devices = /dev/null

[git]
comment = Fast Version Control System
executables = /usr/bin/git*
directories = /usr/share/git-core
includesections = editors

[scp]
comment = ssh secure copy
executables = /usr/bin/scp
includesections = netbasics, uidbasics
devices = /dev/urandom

[sftp]
comment = ssh secure ftp
executables = /usr/lib/sftp-server, /usr/libexec/openssh/sftp-server, /usr/lib/misc/sftp-server, /usr/libexec/sftp-server
includesections = netbasics, uidbasics
devices = /dev/urandom, /dev/null

[ssh]
comment = ssh secure shell
executables = /usr/bin/ssh
includesections = netbasics, uidbasics
devices = /dev/urandom, /dev/tty

[rsync]
executables = /usr/bin/rsync
includesections = netbasics, uidbasics

[procmail]
comment = procmail mail delivery
executables = /usr/bin/procmail, /bin/sh
devices = /dev/null

[basicshell]
comment = bash based shell with several basic utilities
executables = /bin/sh, /bin/bash, /bin/ls, /bin/cat, /bin/chmod, /bin/mkdir, /bin/cp, /bin/cpio, /bin/date, /bin/dd, /bin/echo, /bin/egrep, /bin/false, /bin/fgrep, /bin/grep, /bin/gunzip, /bin/gzip, /bin/ln, /bin/ls, /bin/mkdir, /bin/mktemp, /bin/more, /bin/mv, /bin/pwd, /bin/rm, /bin/rmdir, /bin/sed, /bin/sh, /bin/sleep, /bin/sync, /bin/tar, /bin/touch, /bin/true, /bin/uncompress, /bin/zcat
regularfiles = /etc/motd, /etc/issue, /etc/bash.bashrc, /etc/bashrc, /etc/profile
directories = /usr/lib/locale/en_US.utf8
users = root
groups = root
includesections = uidbasics

[midnightcommander]
comment = Midnight Commander
executables = /usr/bin/mc, /usr/bin/mcedit, /usr/bin/mcview
directories = /etc/terminfo, /usr/share/terminfo, /usr/share/mc, /usr/lib/mc/extfs.d, /etc/mc
includesections = basicshell

[extendedshell]
comment = bash shell including things like awk, bzip, tail, less
executables = /usr/bin/free, /usr/bin/awk, /usr/bin/bzip2, /usr/bin/bunzip2, /usr/bin/ldd, /usr/bin/less, /usr/bin/clear, /usr/bin/cut, /usr/bin/du, /usr/bin/find, /usr/bin/head, /usr/bin/less, /usr/bin/md5sum, /usr/bin/nice, /usr/bin/sort, /usr/bin/tac, /usr/bin/tail, /usr/bin/tr, /usr/bin/sort, /usr/bin/wc, /usr/bin/watch, /usr/bin/whoami
includesections = basicshell, midnightcommander, editors

[editors]
comment = vim, joe and nano
executables = /usr/bin/joe, /usr/bin/nano, /usr/bin/vi, /usr/bin/vim, /usr/bin/pico
regularfiles = /etc/vimrc
directories = /etc/joe, /etc/terminfo, /usr/share/vim, /usr/share/terminfo, /lib/terminfo

[netutils]
comment = several internet utilities like wget, ftp, rsync, scp, ssh
executables = /usr/bin/wget, /usr/bin/lynx, /usr/bin/ftp, /usr/bin/host, /usr/bin/rsync, /usr/bin/smbclient
includesections = netbasics, ssh, sftp, scp

[apacheutils]
comment = htpasswd utility
executables = /usr/bin/htpasswd

[extshellplusnet]
comment = alias for extendedshell + netutils + apacheutils
includesections = extendedshell, netutils, apacheutils

[openvpn]
comment = jail for the openvpn daemon
executables = /usr/sbin/openvpn
users = root,nobody
groups = root,nogroup
includesections = netbasics
devices = /dev/urandom, /dev/random, /dev/net/tun
includesections = netbasics, uidbasics
need_logsocket = 1

[apache]
comment = the apache webserver, very basic setup, probably too limited for you
executables = /usr/sbin/apache
users = root, www-data
groups = root, www-data
includesections = netbasics, uidbasics

[perl]
comment = the perl interpreter and libraries
executables = /usr/bin/perl
directories = /usr/lib/perl, /usr/lib/perl5, /usr/share/perl, /usr/share/perl5

[xauth]
comment = getting X authentication to work
executables = /usr/bin/X11/xauth
regularfiles = /usr/X11R6/lib/X11/rgb.txt, /etc/ld.so.conf

[xclients]
comment = minimal files for X clients
regularfiles = /usr/X11R6/lib/X11/rgb.txt
includesections = xauth

[vncserver]
comment = the VNC server program
executables = /usr/bin/Xvnc, /usr/bin/Xrealvnc
directories = /usr/X11R6/lib/X11/fonts/
includesections = xclients


#[xterm]
#comment = xterm
#executables = /usr/bin/X11/xterm
#directories = /usr/share/terminfo, /etc/terminfo
#devices = /dev/pts/0, /dev/pts/1, /dev/pts/2, /dev/pts/3, /dev/pts/4, /dev/ptyb4, /dev/ptya4, /dev/tty, /dev/tty0, /dev/tty4

[mysql_client]
comment = mysql client
executables = /usr/bin/mysql, /usr/bin/mysqladmin, /usr/bin/mysqlcheck, /usr/bin/mysqldump, /usr/bin/mysqlhotcopy, /usr/bin/mysqlshow, /usr/bin/mysqltest
paths = /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0, /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18, /usr/lib/x86_64-linux-gnu/libstdc++.so.6,/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17,/lib/x86_64-linux-gnu/libgcc_s.so.1
regularfiles = /etc/mysql/my.cnf
```


----------



## Till (17. Dez. 2013)

Vielen dank für Deine Anleitung!


----------



## Hirbod (14. Nov. 2016)

Herzlichen Dank für die Anleitung. Nach ewigem hin und her habe ich es hinbekommen. (Teilweise selbstverschuldet, da ich nen Typo im Pfad hatte)

Anschließend hatte ich den Fehler, das mysql meckerte  /etc/mysql/conf.d würde nicht gelesen werden können. Auf Stack-Overflow kam dann die einfache Lösung. Einfach innerhalb des Jails mit root diesen Ordner anlegen.

Also mkdir mkdir /var/www/clients/client7/web190/etc/mysql/conf.d - danach hat alles funktioniert. Mal schauen wie es sich verhält, wenn neue User angelegt werden.

@bon ich weiss ich grabe hier einen ziemlich alten Beitrag aus, aber es war der einzig vernünftige zu dem Thema. Hat es irgendwelche Auswirkungen @Till, wenn der mysql-sock auskommentiert wird und der host durch 127.0.0.1 ersetzt wird?

Des Weiteren: gibt es eine Möglichkeit, den /etc/mysql/conf.d Ordner automatisch anlegen zu lassen? Irgend eine Option die in in jk_init muss? Ich hab es nicht getestet, aber ich bin mir ziemlich sicher, das jeder neu angelegte Jail meckern wird, das dieses Verzeichnis innerhalb des chroot fehlt! 

Danke!


----------



## gpi (12. Juli 2017)

Zitat von bon:


> Hallo,
> mein System ist ein Debian7, 64bit, .....
> ich möchte einen SSH-User Zugang auf MySQL-Befehle geben und habe folgendes in die /etc/jailkit/jk_init.ini eingetragen:
> 
> ...


Hallo Bon,
Ist das bei Debian 9 und MariaDB auch so?
welche Pfade muss man da angeben?

Gruß

Günter


----------



## logifech (12. Juli 2017)

Kann man diese Anleitung nicht direkt als Howoto veröffentlichen? Finde Sie sehr sehr praktisch


----------



## logifech (3. Mai 2021)

Auch wenn der Beitrag jetzt schon älter ist, kann man den so übernehmen oder ist es mitleerweile so Standard mit ISPCONFIG 2.4?


----------

