September 13, 20169 yr Hy, ich experimentiere aktuell mit froxlor rum, da ich den Umstieg plane. Aktuelle Hürde war es, dass nach der Installation als php-fpm user und group 'froxlorlocal' eingetragen war. In dieser Konfiguration können Kunden aber ihre Domains nicht bearbeiten, da die Verzeichnisse ja nur 750 Rechte haben und froxlorlocal nicht in den Kundengruppen aufgenommen wird. Wenn ich aber als php-fpm user/group www-data eintrage funktioniert das ganze. Nun die Frage ist das so im Sinne des Erfinders oder eher the dirty way? Danke vorab für konstruktive Beiträge und Grüße aus dem schönen Potsdam
September 13, 20169 yr Author ist eingerichtet "id www-data" zeigt ja auch, dass der Webserver Mitglied in den Kundengruppen ist, sry wenn ich das nicht deutlich rübergebracht habe. froxlorlocal bekommt davon aber nichts ab welche Konfigurationstemplates? Stehe diesbezüglich gerade auf dem Schlauch Danke aber schon mal für deine schnelle Rückmeldung!
September 14, 20169 yr Der User froxlorlocal sollte genau wie der Webserver User via libnss-mysql den kunden-gruppen zugeordnet werden. Mit Konfigurations-Templates meine ich die Schritte zur Konfiguration die bei "Konfiguration" nach Wahl der distro und des dienstes angezeigt werden im Froxlor panel.
September 14, 20169 yr Author Okay, dass mit den Templates habe ich komplett umgesetzt. Komisch, dass www-data die Rechte bekommt, froxlorlocal aber nicht. root@d1:~# id www-data uid=33(www-data) gid=33(www-data) Gruppen=33(www-data),9999(froxlorlocal),10000(test1),10001(test2) root@d1:~# id froxlorlocal uid=9999(froxlorlocal) gid=9999(froxlorlocal) Gruppen=9999(froxlorlocal) System ist ein Debian 8 mit nginx und php-fpm hier noch die /etc/libnss-mysql.cfg getpwnam SELECT username,'x',uid,gid,'Froxlor Customer',homedir,shell \ FROM ftp_users \ WHERE username='%1$s' \ AND login_enabled = 'Y' \ ORDER BY LENGTH(username) \ LIMIT 1 getpwuid SELECT username,'x',uid,gid,'Froxlor Customer',homedir,shell \ FROM ftp_users \ WHERE uid='%1$u' \ AND login_enabled = 'Y' \ ORDER BY LENGTH(username) \ LIMIT 1 getspnam SELECT username,password,FLOOR(UNIX_TIMESTAMP()/86400-1),'1','99999','7','-1','-1','0' \ FROM ftp_users \ WHERE username='%1$s' \ AND login_enabled = 'Y' \ ORDER BY LENGTH(username) \ LIMIT 1 getpwent SELECT username,'x',uid,gid,'Froxlor Customer',homedir,shell \ FROM ftp_users getspent SELECT username,password,FLOOR(UNIX_TIMESTAMP()/86400-1),'1','99999','7','-1','-1','0' \ FROM ftp_users getgrnam SELECT groupname,'x',gid \ FROM ftp_groups \ WHERE groupname='%1$s' \ LIMIT 1 getgrgid SELECT groupname,'x',gid \ FROM ftp_groups \ WHERE gid='%1$u' \ LIMIT 1 getgrent SELECT groupname,'x',gid \ FROM ftp_groups memsbygid SELECT members \ FROM ftp_groups \ WHERE gid='%1$u' gidsbymem SELECT CONCAT_WS(',', gid) as gid \ FROM ftp_groups \ WHERE FIND_IN_SET('%1$s', members) Ich hoffe gab jetzt keine copy'past Fehler, ging gerade nur via Handy, Danke noch mal für deine Mühe!Grüße
September 15, 20169 yr Author So, ich habe noch etwas rumprobiert.... in der Tabelle "ftp_groups" steht im Feld "members" test1,www-data,www-data test2,www-data,www-data also 2 mal www-data ändere ich das in test1,www-data,froxlorlocal test2,www-data,froxlorlocal und führe php froxlor_master_cronjob.php --force nscd -i group läuft alles id froxlorlocal uid=9999(froxlorlocal) gid=9999(froxlorlocal) Gruppen=10000(test1),10001(test1),9999(froxlorlocal) id www-data uid=33(www-data) gid=33(www-data) Gruppen=33(www-data),9999(froxlorlocal),10000(tnaumann),10001(kmueller) Ergo wäre nun die frage, von wo wird die tabelle "ftp_groups" befüllt da scheint ja der Hund begraben zu sein zumindest ist das aktuell meine Vermutung Grüße
September 15, 20169 yr Froxlor befüllt die eigentlich auf Grund der Einstellungen. Vllt stand irgendwo als User mal www-data statt froxlorlocal (Wechsel von mod_php zu fpm oder so)...
September 15, 20169 yr Author habe noch etwas rumgespielt habe mal www-data als vhost_httpuser und froxlorlocal als vhost_httpgroup in den php-fpm settings eingetragen die ftp_group Tabelle sieht dann wie folgt aus +----+-----------+-------+-------------------------+------------+ | id | groupname | gid | members | customerid | +----+-----------+-------+-------------------------+------------+ | 1 | test1 | 10000 | test1,www-data,www-data | 1 | | 2 | test2 | 10001 | test2,www-data,www-data | 2 | +----+-----------+-------+-------------------------+------------+ Ich habe zur Probe auch mal beides getauscht (froxlorlocal als vhost_httpuser und www-data als vhost_httpgroup) um zu sehen, ob er wirklich die daten aus dem Feld vhost_httpuser nimmt und ja, tut er +----+-----------+-------+---------------------------------+------------+ | id | groupname | gid | members | customerid | +----+-----------+-------+---------------------------------+------------+ | 1 | test1 | 10000 | test1,froxlorlocal,froxlorlocal | 1 | | 2 | test2 | 10001 | test2,froxlorlocal,froxlorlocal | 2 | +----+-----------+-------+---------------------------------+------------+ Mischt da auch nscd mit?
September 15, 20169 yr 100% weiss ich es gerade nicht auswendig, aber ich meine die Settings gelten nur für neue Benutzer die angelegt werden. Deswegen sollte man bestimmte Einstellungen am Anfang festlegen und nicht mehr unbedingt anfassen.
September 15, 20169 yr Author Ich installiere den kompletten Server jedes mal neu um genau solche dinge auszumerzen (preseed sei dank ) so kann ich auch ausschließen, dass ich mich vertippe/-klicke und habe alles für mich nachhaltig dokumentiert... zumal ich so fehlerhafte clusternodes fix neu aufsetzen kann... aber das nur am rande^^ Darum, was ich in meinem vorherigem Post meinte mit "zur Probe habe ich die Einstellungen mal umgedreht" bedeutet, ich habe es im Script geändert und dann den Server neu installieren lassen. Dadurch waren die beiden Test-User auch quasi "neue" Nutzer
September 15, 20169 yr K.a. was da bei dir schiefläuft, funktionierte bei den zig Installationen die ich bisher gemacht habe immer wunderbar
September 15, 20169 yr Author evtl sei noch zu erwähnen, dass ich Froxlor via deb "http://debian.froxlor.org/ jessie main" repo installiere echo 'deb http://debian.froxlor.org/ jessie main' > /etc/apt/sources.list.d/froxlor.list apt-key adv --keyserver pool.sks-keyservers.net --recv-key FD88018B6F2D5390D051343FF6B4A8704F9E9BBC &> /dev/null apt-get update &> /dev/null && apt-get -y upgrade &> /dev/null DEBIAN_FRONTEND=noninteractive apt-get -y install froxlor nginx mariadb-server mariadb-client php7.0-fpm php5-cgi php7.0-cgi php7.0-curl php7.0-mysql php7.0-xml php7.0-mbstring php7.0-bcmath nscd dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-managesieved logrotate awstats proftpd-mod-mysql postfix-mysql curl &> /dev/null wget http://ftp.us.debian.org/debian/pool/main/libn/libnss-mysql-bg/libnss-mysql-bg_1.5-4_`dpkg --print-architecture`.deb &> /dev/null dpkg -i libnss-mysql-bg_1.5-4_`dpkg --print-architecture`.deb &> /dev/null rm libnss-mysql-bg_1.5-4_`dpkg --print-architecture`.deb &> /dev/null
September 15, 20169 yr Author mal geschaut, wo er die user anlegt... admin_customers.php // FTP-Group $ins_stmt = Database::prepare(" INSERT INTO `" . TABLE_FTP_GROUPS . "` SET `customerid` = :customerid, `groupname` = :groupname, `gid` = :guid, `members` = :members" ); $ins_data = array( 'customerid' => $customerid, 'groupname' => $loginname, 'guid' => $guid, 'members' => $loginname.','.Settings::Get('system.httpuser') ); // also, add froxlor-local user to ftp-group (if exists!) to // allow access to customer-directories from within the panel, which // is necessary when pathedit = Dropdown if ((int)Settings::Get('system.mod_fcgid_ownvhost') == 1 || (int)Settings::Get('phpfpm.enabled_ownvhost') == 1) { if ((int)Settings::Get('system.mod_fcgid') == 1) { $local_user = Settings::Get('system.mod_fcgid_httpuser'); } else { $local_user = Settings::Get('system.httpuser'); } // check froxlor-local user membership in ftp-group // without this check addition may duplicate user in list if httpuser == local_user if (strpos($ins_data['members'], $local_user) !== false) { $ins_data['members'] .= ','.$local_user; } } Folgende Änderungen beheben das Problem 'members' => $loginname.','.Settings::Get('phpfpm.vhost_httpuser') nun wird der php-fpm-user noch doppelt eingetraten in die Tabelle eingetragen if (strpos($ins_data['members'], $local_user) == false) { behebt auch das Problem das ganze wäre ja aber nun wirklich der dirty-way of life, oder sollte das wirklich ein bug sein?
September 15, 20169 yr Naja, wieso steht bei dir auch in Settings::Get('system.httpuser') der lokale User für fpm drin? Wie die Einstellung schon sagt, sollte da der User des WEBSERVERs rein.
September 15, 20169 yr Author steht er ja (www-data) aber wenn php-fpm unter dem user froxlorlocal läuft passen dann die rechte auf die verzeichnisse nicht, die ja vor kurzem in nem release auf 750 geändert wurden.... in system.httpuser steht immer www-data und in phpfpm.vhost_user froxlorlocal Okay, dass mit den Templates habe ich komplett umgesetzt. Komisch, dass www-data die Rechte bekommt, froxlorlocal aber nicht. root@d1:~# id www-data uid=33(www-data) gid=33(www-data) Gruppen=33(www-data),9999(froxlorlocal),10000(test1),10001(test2) root@d1:~# id froxlorlocal uid=9999(froxlorlocal) gid=9999(froxlorlocal) Gruppen=9999(froxlorlocal) [...] Installiere ich den Server mit den zuletzt genannten Änderungen und lege anschließend die Testuser an bekommt froxlorlocal auch die richtigen Rechte, wie es scheint root@d1:~# id www-data uid=33(www-data) gid=33(www-data) Gruppen=9999(froxlorlocal),33(www-data) root@d1:~# id froxlorlocal uid=9999(froxlorlocal) gid=9999(froxlorlocal) Gruppen=10000(test1),10001(test2),9999(froxlorlocal)
September 15, 20169 yr Dann stimmt aber dein "Verbesserungsvorschlag" nicht. Hast du vllt fom nicht für den froxlor vhost selbst aktiviert, so dass er den User froxlorlocal nicht hinzufügt?
September 15, 20169 yr Author Vllt hilft dir das -------------- SELECT * FROM panel_settings WHERE settinggroup = 'phpfpm' OR settinggroup = 'system' -------------- +-----------+--------------+--------------------------------+------------------------------------------------------+ | settingid | settinggroup | varname | value | +-----------+--------------+--------------------------------+------------------------------------------------------+ | 55 | phpfpm | enabled | 1 | | 56 | phpfpm | configdir | /etc/php/7.0/fpm/pool.d/ | | 57 | phpfpm | reload | service php7.0-fpm restart | | 58 | phpfpm | pm | static | | 59 | phpfpm | max_children | 1 | | 60 | phpfpm | start_servers | 20 | | 61 | phpfpm | min_spare_servers | 5 | | 62 | phpfpm | max_spare_servers | 35 | | 63 | phpfpm | max_requests | 0 | | 64 | phpfpm | tmpdir | /var/customers/tmp/ | | 65 | phpfpm | peardir | /usr/share/php/:/usr/share/php5/ | | 66 | phpfpm | enabled_ownvhost | 1 | | 67 | phpfpm | vhost_httpuser | froxlorlocal | | 68 | phpfpm | vhost_httpgroup | froxlorlocal | | 69 | phpfpm | idle_timeout | 30 | | 70 | phpfpm | aliasconfigdir | /var/www/php-fpm/ | | 71 | phpfpm | defaultini | 1 | | 72 | phpfpm | vhost_defaultini | 2 | | 73 | phpfpm | fastcgi_ipcdir | /var/run/ | | 74 | phpfpm | use_mod_proxy | 0 | | 76 | system | lastaccountnumber | 0 | | 77 | system | lastguid | 10001 | | 78 | system | documentroot_prefix | /var/customers/webs/ | | 79 | system | logfiles_directory | /var/customers/logs/ | | 80 | system | ipaddress | ***.***.***.*** | | 81 | system | apachereload_command | /etc/init.d/nginx reload | | 82 | system | last_traffic_run | 1473953761 | | 83 | system | vmail_uid | 2000 | | 84 | system | vmail_gid | 2000 | | 85 | system | vmail_homedir | /var/customers/mail/ | | 86 | system | vmail_maildirname | Maildir | | 87 | system | bind_enable | 1 | | 88 | system | bindconf_directory | /etc/bind/ | | 89 | system | bindreload_command | /etc/init.d/bind9 reload | | 90 | system | hostname | froxlor.naumix.net | | 91 | system | mysql_access_host | 127.0.0.1,localhost,***.***.***.*** | | 92 | system | lastcronrun | 1473949418 | | 93 | system | defaultip | 1 | | 94 | system | phpappendopenbasedir | /tmp/ | | 95 | system | deactivateddocroot | | | 96 | system | mailpwcleartext | 0 | | 97 | system | last_tasks_run | 1473953702 | | 98 | system | nameservers | | | 99 | system | mxservers | | | 100 | system | mod_fcgid | 0 | | 101 | system | apacheconf_vhost | /etc/nginx/sites-enabled/ | | 102 | system | apacheconf_diroptions | /etc/nginx/sites-enabled/ | | 103 | system | apacheconf_htpasswddir | /etc/nginx/froxlor-htpasswd/ | | 104 | system | webalizer_quiet | 2 | | 105 | system | last_archive_run | 000000 | | 106 | system | mod_fcgid_configdir | /var/www/php-fcgi-scripts | | 107 | system | mod_fcgid_tmpdir | /var/customers/tmp | | 108 | system | ssl_cert_file | /etc/ssl/certs/test.crt | | 109 | system | use_ssl | 1 | | 110 | system | default_vhostconf | | | 111 | system | mail_quota_enabled | 0 | | 112 | system | mail_quota | 100 | | 113 | system | webalizer_enabled | 1 | | 114 | system | awstats_enabled | 0 | | 115 | system | httpuser | www-data | | 116 | system | httpgroup | www-data | | 117 | system | webserver | nginx | | 118 | system | mod_fcgid_wrapper | 1 | | 119 | system | mod_fcgid_starter | 0 | | 120 | system | mod_fcgid_peardir | /usr/share/php/:/usr/share/php5/ | | 121 | system | index_file_extension | html | | 122 | system | mod_fcgid_maxrequests | 250 | | 123 | system | ssl_key_file | /etc/ssl/private/test.key | | 124 | system | ssl_ca_file | | | 125 | system | debug_cron | 0 | | 126 | system | store_index_file_subs | 1 | | 127 | system | stdsubdomain | test.net | | 128 | system | awstats_path | /usr/bin/ | | 129 | system | awstats_conf | /etc/awstats/ | | 130 | system | defaultttl | 604800 | | 131 | system | mod_fcgid_defaultini | 1 | | 132 | system | ftpserver | proftpd | | 133 | system | dns_createmailentry | 0 | | 134 | system | froxlordirectlyviahostname | 0 | | 135 | system | report_enable | 1 | | 136 | system | report_webmax | 90 | | 137 | system | report_trafficmax | 90 | | 138 | system | validate_domain | 1 | | 139 | system | diskquota_enabled | 0 | | 140 | system | diskquota_repquota_path | /usr/sbin/repquota | | 141 | system | diskquota_quotatool_path | /usr/bin/quotatool | | 142 | system | diskquota_customer_partition | /dev/root | | 143 | system | mod_fcgid_idle_timeout | 30 | | 144 | system | perl_path | /usr/bin/perl | | 145 | system | mod_fcgid_ownvhost | 0 | | 146 | system | mod_fcgid_httpuser | froxlorlocal | | 147 | system | mod_fcgid_httpgroup | froxlorlocal | | 148 | system | awstats_awstatspath | /usr/bin/ | | 149 | system | mod_fcgid_defaultini_ownvhost | 2 | | 150 | system | awstats_icons | /usr/share/awstats/icon/ | | 151 | system | ssl_cert_chainfile | | | 152 | system | ssl_cipher_list | ECDH+AESGCM:ECDH+AES256:!aNULL:!MD5:!DSS:!DH:!AES128 | | 153 | system | nginx_php_backend | unix:/run/php/php7.0-fpm.sock | | 154 | system | perl_server | unix:/var/run/nginx/cgiwrap-dispatch.sock | | 155 | system | phpreload_command | | | 156 | system | apache24 | 0 | | 157 | system | documentroot_use_default_value | 1 | | 158 | system | passwordcryptfunc | 3 | | 159 | system | axfrservers | | | 160 | system | customer_ssl_path | /etc/ssl/froxlor-custom/ | | 161 | system | allow_error_report_admin | 1 | | 162 | system | allow_error_report_customer | 0 | | 163 | system | mdalog | /var/log/mail.log | | 164 | system | mtalog | /var/log/mail.log | | 165 | system | mdaserver | dovecot | | 166 | system | mtaserver | postfix | | 167 | system | mailtraffic_enabled | 1 | | 168 | system | cronconfig | /etc/cron.d/froxlor | | 169 | system | crondreload | /etc/init.d/cron reload | | 170 | system | croncmdline | /usr/bin/nice -n 5 /usr/bin/php -q | | 171 | system | cron_allowautoupdate | 0 | | 172 | system | dns_createhostnameentry | 0 | | 173 | system | send_cron_errors | 0 | | 174 | system | apacheitksupport | 0 | | 175 | system | leprivatekey | unset | | 176 | system | lepublickey | unset | | 177 | system | letsencryptca | production | | 178 | system | letsencryptcountrycode | DE | | 179 | system | letsencryptstate | Germany | | 180 | system | letsencryptchallengepath | /var/www/froxlor | | 181 | system | letsencryptkeysize | 4096 | | 182 | system | letsencryptreuseold | 0 | | 183 | system | leenabled | 0 | | 184 | system | backupenabled | 1 | | 185 | system | dnsenabled | 0 | | 186 | system | dns_server | bind | | 187 | system | apacheglobaldiropt | | +-----------+--------------+--------------------------------+------------------------------------------------------+ 132 rows in set (0.00 sec)
September 15, 20169 yr Kann ich dir ohne auf die Kiste zu gucken nicht sagen, ich hatte das Problem wie gesagt noch nie, daher vermute ich einen Anwenderfehler.
September 15, 20169 yr Author nunja, beim erstellen der Kunden wird an der Stelle, die ich aufgezeigt habe der User unter dem der Webserver (in meinem Fall nginx) läuft [www-data] in die Datenbank geschrieben. Dieser wird genutzt um ihn via libnss in die Gruppe der Kunden aufzunehmen. Das funktioniert auch alles, bis der Froxlor-Host auf ein Kundenverzeichnis zugreifen will (z.B. beim aufrufen der Sicherungsoption oder beim bearbeiten von Kundendomains), da das Verzeichnis nur 750 Rechte besitzt kann der PHP-User [froxlorlocal] dieses nicht Öffnen. Der Webserver benötigt aber nach meiner Auffassung gar keine Rechte auf das Kundenverzeichnis, PHP aber schon oder habe ich gerade einen Denkfehler? Danke dir schon mal für deine Mühen!!!
September 15, 20169 yr Du bist hast doch entsprechenden Code selbst gepostet: wenn fpm für froxlor aktiviert ist, dann schreibt er auch froxlorlocal in die Gruppe der ftp User...und genau das macht er auch und es funktioniert - kann ich mehrfach prüfen und bestätigen, sonst hätte ich schon hunderte von Reklamationen...
September 15, 20169 yr Author sry, mein Fehler $local_user = Settings::Get('phpfpm.vhost_httpuser'); war schon die durch mich angepasste VersionOriginal ist $local_user = Settings::Get('system.httpuser'); Sry noch mal, ich ändere es auch direkt im obigen Post.
September 15, 20169 yr Klar ist es das Original und das ist auch korrekt so...wenn du schon Code raus suchst und dran einspielst, ließ auch Code davor und danach und schau mal was da noch so passiert. Wie gesagt, du hast es doch mitkopiert - wenn fpm für den froxlor vhost aktiviert ist, dann wird NEBEN www-data AUCH froxlorlocal zu den members hinzugefügt, sofern er nicht schon drin steht.
September 15, 20169 yr Author zeig mir doch bitte die Stelle, an der der froxlorlocal zu den members hinzugefügt wird mag sein, dass ich den wald vor lauter bäumen nicht sehe
September 15, 20169 yr if (strpos($ins_data['members'], $local_user) !== false) { $ins_data['members'] .= ','.$local_user; } Ich sehe es jetzt grad, das !== false...das macht an der Stelle sicher keinen Sinn, da hast du Recht, das muss wohl eher ein == false heißen, denn der User soll ja hinzugefügt werden, wenn er noch nicht in der memberlist ist...da frag ich mich ja wie das bei mir immer klappen konnte...ich hab immer die richtigen User in der liste...da muss ich nachm Urlaub wohl mal genau reinschauen
September 16, 20169 yr Author Eben darum spiele ich ungern in fremden Code rum... man übersieht halt fix mal was... Habe mir das ganze noch mal angesehen, du hast natürlich recht, ich hatte mich nur von "Settings::Get('system.httpuser')" blenden lassen Die Änderung -- if (strpos($ins_data['members'], $local_user) !== false) { ++ if (strpos($ins_data['members'], $local_user) == false) {läuft problemlos bei mir es werden nun der Webserver-User, sowie der php-fpm-User bei den ftp_groups als member eingetragen und die Rechte passen damit auch root@d1:~# id www-data uid=33(www-data) gid=33(www-data) Gruppen=9999(froxlorlocal),10000(test1),10001(test2),33(www-data) root@d1:~# id froxlorlocal uid=9999(froxlorlocal) gid=9999(froxlorlocal) Gruppen=10000(test1),10001(test2),9999(froxlorlocal) Wäre nett, wenn du das zu gegebener Zeit mal verifizieren kannst und noch mal Rückmeldung geben könntest. Aber erst mal wünsche ich dir dann einen schönen Urlaub! Grüße
Archived
This topic is now archived and is closed to further replies.