Jump to content
Froxlor Forum
  • 0

php-fpm www-data oder froxlorlocal?


naumix

Question

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 ;)

Link to comment
Share on other sites

25 answers to this question

Recommended Posts

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 :P

 

Danke aber schon mal für deine schnelle Rückmeldung!

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

Ich installiere den kompletten Server jedes mal neu um genau solche dinge auszumerzen (preseed sei dank :P ) 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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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)
Link to comment
Share on other sites

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)
Link to comment
Share on other sites

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!!!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

 

	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

Link to comment
Share on other sites

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 :P 

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

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...