Forum: PC Hard- und Software Linux: User- / Gruppenrechte bringen mich um den Verstand


von Rene K. (xdraconix)


Lesenswert?

Also das User und Gruppensystem unter Linux bringt mich noch um den 
Verstand! :-D

Umstand:
RaspberryPi mit Raspbian, Apache, MariaDB... User: Standart Pi

Nun soll "pi" Mitglied der Gruppe www-data werden um dann im Ordner 
/var/www/ Schreibrechte zu haben. Aber ich bekomme das nicht gebacken. 
Ich habe "pi" bereits in der Gruppe www-data... aber das bringt 
keinerlei Änderung. Ich komme ja nicht mal lesend in den Ordner:
1
pi@DraconiXServer:/home $ grep ^www-data /etc/group
2
www-data:x:33:pi
3
4
pi@DraconiXServer:/home $ sudo ls -la /var/www
5
total 12
6
drwxrwx---  3 www-data www-data 4096 Nov 21 21:45 .
7
drwxr-xr-x 12 root     root     4096 Nov 21 21:45 ..
8
drwxrwx---  4 www-data www-data 4096 Nov 21 22:17 html
9
10
pi@DraconiXServer:/home $ cd /var/www
11
-bash: cd: /var/www: Permission denied


Was kann ich da machen?! Und vor allem: Warum macht man das dann so?!

von Rene K. (xdraconix)


Lesenswert?

Ich habe nochmal ein bisschen "Recherchiert" Aktuell sind die 
Zugriffsrechte ja:


drwxrwx---


Das bedeutet für mich:

*rwx******   : User www-data darf lesen, schreiben, ausführen
****rwx***   : Gruppe www-data darf lesen, schreiben, ausführen
*******---   : Die anderen dürfen nix

Nun ist doch aber "pi" Mitglied der Gruppe www-data:


www-data:x:33:pi


Also dürft doch "pi", da es Mitglieder Gruppe www-data ist und somit 
unter ****rwx*** fällt, alles machen in dem Ordner. Geht aber nicht:

-bash: cd: /var/www: Permission denied

von Gästchen (Gast)


Lesenswert?

Mglw. hast Du den User "pi" gerade erst der Gruppe www-data hinzugefügt, 
und das System hat das noch nicht richtig übernommen. Boote mal kurz 
neu, einfach um das als potentielle Fehlerquelle auszuschliessen.

von Rene K. (xdraconix)


Lesenswert?

Gästchen schrieb:
> Mglw. hast Du den User "pi" gerade erst der Gruppe www-data hinzugefügt,
> und das System hat das noch nicht richtig übernommen. Boote mal kurz
> neu, einfach um das als potentielle Fehlerquelle auszuschliessen.

Super, das war es :-D

Ich dachte immer Linux braucht man nicht neu zu starten, soll doch der 
große Vorteil gegenüber Windows sein grübel

Nunja, nichtsdesto trotz. Danke für diesen Tipp! :-D

von Frank L. (florenzen)


Lesenswert?

Wenn man die Gruppenzugehörigkeit eines Users ändert muß der betroffene 
User sich Aus- und wieder Einloggen damit die Änderung wirksam wird. Ein 
Neustart ist nicht notwendig.


Gruß,

f

von Dirk B. (dirkb2)


Lesenswert?

Wie hast du die Gruppenzugehörigkeit gesetzt?

von 2 Cent (Gast)


Lesenswert?

Gästchen schrieb:
> Boote mal kurz
> neu, einfach um das als potentielle Fehlerquelle auszuschliessen.
Eine neugestartete shell sollte reichen.

Rene K. schrieb:
> pi@DraconiXServer:/home $ grep ^www-data /etc/group
> www-data:x:33:pi
sagt dir aber nicht ob deine laufende shell das schon weiss. Besserer 
Test:
groups

Das gibt dir Auskunft über deine aktuellen Gruppenzugehörigkeiten

von Gästchen (Gast)


Lesenswert?

Rene K. schrieb:
> Gästchen schrieb:
>> Mglw. hast Du den User "pi" gerade erst der Gruppe www-data hinzugefügt,
>> und das System hat das noch nicht richtig übernommen. Boote mal kurz
>> neu, einfach um das als potentielle Fehlerquelle auszuschliessen.
>
> Super, das war es :-D

Schön!

> Ich dachte immer Linux braucht man nicht neu zu starten

Muss man auch nicht, es gibt diverse Möglichkeiten, die 
Gruppenzugehörigkeiten zu aktualisieren. Den Pi neu zu starten ist halt 
eine davon, sie hat den Vorteil, dass sie schnell erklärt ist und die 
Änderung garantiert systemweit übernommen ist, und ich bin einfach mal 
davon ausgegangen, dass ein kurzer Reboot bei Deinem Pi aktuell kein 
Problem darstellt.

, soll doch der
> große Vorteil gegenüber Windows sein *grübel*

Das ist einer der vielen Vorteile gegenüber Windows - dass es DER GROSSE 
Vorteil (schlechthin) ist, erscheint mir dann doch ein bisschen weit 
hergeholt. :)

von Rene K. (xdraconix)


Lesenswert?

Ich dachte es wäre die einzigste Möglichkeit die Gruppenzugehörigkeit zu 
aktualisieren. Wieder was gelernt.

Gästchen schrieb:
> ...ich bin einfach mal
> davon ausgegangen, dass ein kurzer Reboot bei Deinem Pi aktuell kein
> Problem darstellt.

Nein nein, das ist natürlich absolut kein Problem. Hatte mich halt 
gewundert :-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Zur Erklärung:

Die  Gruppenzugehörigkeiten werden aus Effizienzgründen nicht bei jedem 
Datei- oder Verzeichniszugriff aus /etc/group gelesen, sondern nur beim 
Login aktualisiert.

von Rolf M. (rmagnus)


Lesenswert?

2 Cent schrieb:
> Gästchen schrieb:
>> Boote mal kurz neu, einfach um das als potentielle Fehlerquelle
>> auszuschliessen.
> Eine neugestartete shell sollte reichen.

Nur wenn sie als login-Shell gestartet wird.

> Test:
> groups
>
> Das gibt dir Auskunft über deine aktuellen Gruppenzugehörigkeiten

Oder id. Das ist kürzer und zeigt noch gleich die Gruppen-IDs mit an.

von 2 Cent (Gast)


Lesenswert?

Rolf M. schrieb:
> Nur wenn sie als login-Shell gestartet wird.
Unbedingt erwähnenswert das ist, absolut Recht ihr habt.
Unwach war ich von hier unsinnigen Voraussetzungen (ssh) ausgegangen.

von Rene K. (xdraconix)


Lesenswert?

So ich wieder :-D


das Problem zieht sich nerviger hin als es ist:

Der Umstand ist wie oben:

User: webdev
Primäre Gruppe: www-data
Home: /var/www

Nun ist das Problem folgendes: Ich schiebe via sftp die Daten auf den 
Server. Die Berechtigung sieht, nach dem kopieren dann wie folgt aus:
1
webdev@server-r2:~/html/ip$ ls -l
2
total 28
3
drwxrwx--- 3 webdev www-data 4096 Feb  4 12:24 config
4
-rwx------ 1 webdev www-data  972 Feb  4 18:45 host_insert.php
5
-rwxrwx--- 1 webdev www-data 1796 Feb  4 17:50 index.php
6
-rwxrwx--- 1 webdev www-data  878 Feb  4 17:51 navbar.php
7
drwxrwx--- 2 webdev www-data 4096 Feb  4 12:24 scripts
8
-rwxrwx--- 1 webdev www-data  504 Feb  1 23:13 table_large.php
9
-rwxrwx--- 1 webdev www-data 1972 Feb  4 17:53 table_small.php
10
webdev@server-r2:~/html/ip$

Man beachte dabei die Datei host_insert.php welche ich gerade frisch via 
sftp auf den Server geschoben habe. Der User hat dann vollen Zugriff 
darauf, die Gruppe allerdings garnicht. Nun liefert natürlich Apache 
diese Datei auch nicht aus. Ich muss quasi manuell via ssh auf den 
Server und die Rechte der Datei manuell ändern.

Geht das nicht auch einfacher, so das die Gruppenrechte automatisch 
gesetzt werden wenn der User eine Datei erstellt? Ich dachte gerade 
dafür ist die Gruppenzugehörigkeit da?

von olibert (Gast)


Lesenswert?

Rene K. schrieb:
> Der User hat dann vollen Zugriff
> darauf, die Gruppe allerdings garnicht. Nun liefert natürlich Apache
> diese Datei auch nicht aus. Ich muss quasi manuell via ssh auf den
> Server und die Rechte der Datei manuell ändern.

Nein, muss man natuerlich nicht. Zugriffsrechte auf Unix-Dateisystemen 
sind super flexibel. Besonders wenn man mit SETUID, SETGID, Sticky-Bit 
und ACLs vertraut ist.

Rene K. schrieb:
> Geht das nicht auch einfacher, so das die Gruppenrechte automatisch
> gesetzt werden wenn der User eine Datei erstellt?

Yep, dafuer ist die umask da. Bei dir steht sie wahrscheinlich auf 0077.

von (prx) A. K. (prx)


Lesenswert?

Du kannst dem SFTP-Service des SSH-Daemons die passende Umask 
spendieren. Ist eine Config in /etc/ssh/sshd_config.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

Rene K. schrieb:
> Geht das nicht auch einfacher, so das die Gruppenrechte automatisch
> gesetzt werden wenn der User eine Datei erstellt? Ich dachte gerade
> dafür ist die Gruppenzugehörigkeit da?

Per default haben normale User, btw. die Programme welche diese starten, 
sofern nicht anders eingestellt, eine umask von 0002. Wenn eine Datei 
erstellt wird, normalerweise mit mask 0777, ist dann 0777 & ~0022 = 
0755. (also owner darf lesen&schreiben, jedes mitglied der Gruppe darf 
lesen, und alle andern dürfen lesen). Wie fast alle Rechte wird diese 
bei einem fork an Unterprozesse vererbt. Ich hab bei mir grad mal 
ausprobiert, scp scheint ohne -p Option mode & ~umask zu nehmen, und mit 
der -p option die rechte exakt zu übernehmen. Es gibt also 2 
Möglichkeiten:
 1) Deine Dateien haben lokal einen Mode, der es der dateigruppe nicht 
erlaubt, diese zu lesen. Eventuell hast du einen "kleveren" text editor 
oder so, der sich nicht nach er umask richtet, oder dein Dateisystem 
kann keine Rechte und wurde mit ensprechender umask gemountet.
 2) Der sftp wird mit einer umask von z.B. 0077 oder so gestartet. 
(unwarscheinlich, hier würde die -p option von ssh helfen)

Eine Option, um den Mode zu überschreiben hat ssh meines Wissens nicht. 
Serverseitig könnte man die Gruppe vermutlich mit dem setgid bit auf dem 
Verzeichnis vererben, aber für den mode hilft das nichts.

Sofern du aber rsync auf dem Server hast, das hat ne option dafür. 
Müsste auch schneller gehen.

: Bearbeitet durch User
von Rene K. (xdraconix)


Lesenswert?

Also mal nachgeschaut... der user (webdev) mit welchem ich über sftp 
verbunden bin hat lokal eine umask von 0022
1
webdev@server-r2:~/html/ip$ touch test
2
webdev@server-r2:~/html/ip$ ls -l
3
total 28
4
drwxrwx--- 3 webdev www-data 4096 Feb  4 12:24 config
5
-rwxrwx--- 1 webdev www-data 1034 Feb  4 19:48 host_insert.php
6
-rwxrwx--- 1 webdev www-data 1796 Feb  4 17:50 index.php
7
-rwxrwx--- 1 webdev www-data  878 Feb  4 17:51 navbar.php
8
drwxrwx--- 2 webdev www-data 4096 Feb  4 12:24 scripts
9
-rwxrwx--- 1 webdev www-data  504 Feb  1 23:13 table_large.php
10
-rwxrwx--- 1 webdev www-data 1972 Feb  4 17:53 table_small.php
11
-rw-r--r-- 1 webdev www-data    0 Feb  4 20:24 test
12
webdev@server-r2:~/html/ip$

Das passt soweit. Per SFTP funktioniert dies allerdings nicht. Ich habe 
dann wie von A. K. beschrieben die /etc/ssh/sshd_config geändert:
1
von:
2
Subsystem       sftp    /usr/lib/openssh/sftp-server
3
4
zu:
5
Subsystem       sftp    /usr/lib/openssh/sftp-server -u 0022

das hat auch nicht funktioniert... ich forsche weiter.

von (prx) A. K. (prx)


Lesenswert?

Der Parameter ist sinnigerweise dezimal.

Ich setze das produktiv ein, es geht also. Aber die vollständige Config 
habe ich hier nicht parat.

: Bearbeitet durch User
von Markus -. (mrmccrash)


Lesenswert?

Die meisten FTP Varianten können auch chmod als Befehl. WinSCP zum 
Beispiel in den Dateieigenschaften.

von (prx) A. K. (prx)


Lesenswert?

Markus -. schrieb:
> Die meisten FTP Varianten können auch chmod als Befehl. WinSCP zum
> Beispiel in den Dateieigenschaften.

Die einzige Gemeinsamkeit zwischen SFTP und FTP sind diese drei 
Buchstaben. SFTP ist ein Teil von SSH. Verschlüsseltes FTP ist FTPS.

: Bearbeitet durch User
von Rene K. (xdraconix)


Lesenswert?

A. K. schrieb:
> Der Parameter ist sinnigerweise dezimal.

Wie meinst du das? mit der direkten Schreibweise? 770?

von (prx) A. K. (prx)


Lesenswert?

Rene K. schrieb:
> Wie meinst du das? mit der direkten Schreibweise? 770?

Wenn du 77 willst, was ja oktal ist, schreibe 63.

: Bearbeitet durch User
von olibert (Gast)


Lesenswert?

Rene K. schrieb:
> Das passt soweit. Per SFTP funktioniert dies allerdings nicht. Ich habe
> dann wie von A. K. beschrieben die /etc/ssh/sshd_config geändert:

Liest du auch mal eine Manpage so zwischendurch?

Beitrag #6132481 wurde vom Autor gelöscht.
von (prx) A. K. (prx)


Lesenswert?

A. K. schrieb:
> Aber die vollständige Config habe ich hier nicht parat.

Wobei ich internal-sftp verwende, vereinfacht das bei mir oft wichtige 
chroot. Sollte aber keinen Unterschied ergeben. Ein "-l VERBOSE" liefert 
ausserdem mehr Info.

von Rene K. (xdraconix)


Lesenswert?

olibert schrieb:
> Liest du auch mal eine Manpage so zwischendurch?

Ja?!? Wie glaubst du bin ich sonst auf "Subsystem sftp 
/usr/lib/openssh/sftp-server -u 0022" gekommen? Oder was möchtest du mir 
damit sagen?!

A. K. schrieb:
> Wobei ich internal-sftp verwende

Das werde ich morgen mal ausprobieren. ?Hab für heute die Segel 
gestrichen.

Danke dir A. K. Schonmal für deine Hilfe ☺️

von Sheeva P. (sheevaplug)


Lesenswert?

A. K. schrieb:
> Die einzige Gemeinsamkeit zwischen SFTP und FTP sind diese drei
> Buchstaben. SFTP ist ein Teil von SSH. Verschlüsseltes FTP ist FTPS.

Najaaa... also die Befehle, die in SFTP benutzt werden können, sind 
denen von FTP auch ziemlich ähnlich. Ein Blick in die Sektion 
"INTERACTIVE COMMANDS" in der Manpage von sftp(1) zeigt, daß SFTP auch 
den Befehl chmod kennt. ;-)

von (prx) A. K. (prx)


Lesenswert?

Sheeva P. schrieb:
> Najaaa... also die Befehle, die in SFTP benutzt werden können, sind
> denen von FTP auch ziemlich ähnlich.

Um rechtliche Probleme auf Grund von ähnlichen Begriffen und kürzesten 
Textausschnitten alle Überschneidungen mit bestehenden Protokollen zu 
vermeiden, wird man künftige Filetransferprotokolle in chinesischen 
Begriffen definieren. ;-)

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.