mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Rene K. (xdraconix)


Bewertung
0 lesenswert
nicht 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:

pi@DraconiXServer:/home $ grep ^www-data /etc/group
www-data:x:33:pi

pi@DraconiXServer:/home $ sudo ls -la /var/www
total 12
drwxrwx---  3 www-data www-data 4096 Nov 21 21:45 .
drwxr-xr-x 12 root     root     4096 Nov 21 21:45 ..
drwxrwx---  4 www-data www-data 4096 Nov 21 22:17 html

pi@DraconiXServer:/home $ cd /var/www
-bash: cd: /var/www: Permission denied



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

von Rene K. (xdraconix)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
8 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Wie hast du die Gruppenzugehörigkeit gesetzt?

von 2 Cent (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

webdev@server-r2:~/html/ip$ ls -l
total 28
drwxrwx--- 3 webdev www-data 4096 Feb  4 12:24 config
-rwx------ 1 webdev www-data  972 Feb  4 18:45 host_insert.php
-rwxrwx--- 1 webdev www-data 1796 Feb  4 17:50 index.php
-rwxrwx--- 1 webdev www-data  878 Feb  4 17:51 navbar.php
drwxrwx--- 2 webdev www-data 4096 Feb  4 12:24 scripts
-rwxrwx--- 1 webdev www-data  504 Feb  1 23:13 table_large.php
-rwxrwx--- 1 webdev www-data 1972 Feb  4 17:53 table_small.php
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)


Bewertung
0 lesenswert
nicht 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 A. K. (prx)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

zu:
Subsystem       sftp    /usr/lib/openssh/sftp-server -u 0022

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

von A. K. (prx)


Bewertung
0 lesenswert
nicht 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)


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

von A. K. (prx)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Der Parameter ist sinnigerweise dezimal.

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

von A. K. (prx)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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 A. K. (prx)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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 A. K. (prx)


Bewertung
-1 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.