Jailkit MySQL Zugang

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von bon, 16. Dez. 2013.

  1. bon

    bon Member

    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:
    Code:
    [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.
     
  2. Till

    Till Administrator

    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.
     
  3. bon

    bon Member

    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?
     
    Zuletzt bearbeitet: 17. Dez. 2013
  4. Till

    Till Administrator

    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.

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

    bon Member

    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):
    Code:
    [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.
    Code:
    [/var/www/customer/client1/web1]
    skips = /opt
    hardlinks = 0
    Hier meine auf Debian 7 - 64bit angepasste jk_init.ini
    Code:
    [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
     
  6. Till

    Till Administrator

    Vielen dank für Deine Anleitung!
     
  7. Hirbod

    Hirbod Member

    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!
     

Diese Seite empfehlen