Linux Mint: Rechtevergabe über Kommandozeile

MyNamesPitt

Banned
Registriert
Jan. 2017
Beiträge
653
Moin,

Ich bräuchte mal Hilfe bei der Vergabe von neuen Rechten meiner ganzen Festplatten. Irgendwie scheint da vieles durcheinander und über die GUI würde das wohl zu lange dauern, da hier nur Änderungen separat und für rekursives ändern erst eine andere Änderung nötig wäre. Über die Shell scheint das wohl einfacher zu gehen.

Die Seite hier erklärt das zwar wunderschön, aber mir bleiben dennoch fragen:
https://www.linux.com/learn/how-manage-file-and-folder-permissions-linux

Erstmal zum Ziel:
4 Platten, 3 interne, 1 externe. (+ die interne SSD mit dem System)
Die enthalten wiederum 4 bzw 8 virtuelle.

Im Grunde soll jede exakt dieselbe Rechte-Vergabe haben inklusive der Unterordner:
Owner: root - RW
Group: name - RW
Other: None

Also irgendwas mit?
sudo chown -r /media/X
sudo chmod -r /media/x

Wo kommt der Name rein?
Wie ist das mit mehren Platten?

Als Filemanager habe ich zurzeit Thunar.
Wie lautet jetzt die Zeile die ich eingeben muss?

Eventuell: Geht das vielleicht einfach besser mit einen anderen Dateimanager?

Weiter, wie ist das bei einer Neuinstallation?
Muss ich da auf irgendwas achten, wie wird das zu Beginn standardmäßig vergeben?
 
Morgen,

MyNamesPitt schrieb:
Die enthalten wiederum 4 bzw 8 virtuelle.

damit meinst du Partitionen?

MyNamesPitt schrieb:
Im Grunde soll jede exakt dieselbe Rechte-Vergabe haben inklusive der Unterordner:

Der Parameter den du sucht ist bei chmod als auch bei chown "-R"

MyNamesPitt schrieb:
Also irgendwas mit?
sudo chown -r /media/X
sudo chmod -r /media/x

chmod braucht immer einen Wert wie z.B. g+w (group+write) ich nehme da lieber die numerischen Werte: 644 755 z.B.
7 = xrw (execute - read - write)
6 = rw
5 = xr
4 = r

MyNamesPitt schrieb:
Wo kommt der Name rein?

Meinst du damit den Usernamen?
Der kommt so hin: chown root:name -R /media/X
root: würde es zu root:root machen

MyNamesPitt schrieb:
Wie ist das mit mehren Platten?

Wenn deine Platten / Partitionen alle in /media gemountet sind, kannst du einfach sowas machen:
chown root:name /media/*/* -R

Hässlich finde ich es, allen Dateien auch das x-Bit zu geben (execute)
Also quasi so: chmod 700 /media/* -R

Außerdem bringt es dir 0,nix wenn du einem Ordner nur RW gibst. Dann kannst du ihn nicht mehr betreten.

Code:
drw-rw-r--. 2 sampleuser samplegroup      4096  2. Mai 08:36 lala

[[ sampleuser@sampledomain ~ ]:08:36:42 ]: cd lala
bash: cd: lala: Permission denied


MyNamesPitt schrieb:
Wie lautet jetzt die Zeile die ich eingeben muss?

Ich merk schon, du bist Faul.

Wenn alle deine "virtuellen Festplatten" in /media gemountet sind brauchst du folgendes:

Code:
chmod root:name /media/* -R && find /media/*/* -type d -exec chmod 700 {} + && find /media -type f -exec chmod 600 {} +

Wenn nicht, dann so etwas:

Code:
chmod root:name /media1/1 /lala1/2 -R && find /media1/1/* /lala1/2/* -type d -exec chmod 700 {} + && find /media1/1/* /lala1/2/* -type f -exec chmod 600 {} +

Dann hast du auch saubere Dateirechte.

MyNamesPitt schrieb:
Eventuell: Geht das vielleicht einfach besser mit einen anderen Dateimanager?

Keinen blassen Schimmer.

MyNamesPitt schrieb:
Weiter, wie ist das bei einer Neuinstallation?
Muss ich da auf irgendwas achten, wie wird das zu Beginn standardmäßig vergeben?

Eine Home eines Nutzers ist immer 700 z.B. /root oder /home/sampleuser
Die Dateien innerhalb des Home Ordners werden per default mit dem Modes 664 und Ordner mit 755 angelegt.
Wenn du als root in /home/sampleuser eine Datei anlegst, kann die sampleuser aber auch nicht mehr lesen oder löschen oder sonst was damit anfangen.
 
Deine Befehle haben allerdings Probleme mit Dateinamen, die Leerzeichen enthalten. Am sichersten dürfte sein, das mit "find ... -print0" und "xargs" umzumodeln.
 
fax668 schrieb:
Deine Befehle haben allerdings Probleme mit Dateinamen, die Leerzeichen enthalten. Am sichersten dürfte sein, das mit "find ... -print0" und "xargs" umzumodeln.

Das kann ich so leider nicht unterschreiben:

Code:
drwxrwxr-x. 3 sampleuser samplegroup      4096  2. Mai 11:26 lala

[[ sampleuser@sampledomain ~ ]:11:27:04 ]: cd lala/
[[ sampleuser@sampledomain ~/lala ]:11:27:09 ]: ls
'lala lala'
[[ sampleuser@sampledomain ~/lala ]:11:27:09 ]: ls -l
insgesamt 4
drwxrwxr-x. 2 sampleuser samplegroup 4096  2. Mai 11:26 'lala lala'
[[ sampleuser@sampledomain ~/lala ]:11:27:11 ]: cd lala\ lala/
[[ sampleuser@sampledomain ~/lala/lala lala ]:11:27:14 ]: ls
lala  'lala lala'
[[ sampleuser@sampledomain ~/lala/lala lala ]:11:27:14 ]: ls -l
insgesamt 0
-rw-rw-r--. 1 sampleuser samplegroup 0  2. Mai 11:26 lala
-rw-rw-r--. 1 sampleuser samplegroup 0  2. Mai 11:26 'lala lala'

Nach:
Code:
find lala -type d -exec chmod 700 {} + && find lala -type f -exec chmod 700 {} +

Code:
[[ sampleuser@sampledomain ~ ]:11:32:18 ]: ls -l lala
insgesamt 12
-rw-rw-r--. 1 sampleuser samplegroup 2718  2. Mai 11:31 hehe.txt
drwx------. 2 sampleuser samplegroup 4096  2. Mai 11:27 lala
drwx------. 2 sampleuser samplegroup 4096  2. Mai 11:26 'lala lala'
[[ sampleuser@sampledomain ~ ]:11:32:21 ]: cd lala/lala\ lala/
[[ sampleuser@sampledomain ~/lala/lala lala ]:11:32:37 ]: ls
lala  'lala lala'
[[ sampleuser@sampledomain ~/lala/lala lala ]:11:32:37 ]: ls -l
insgesamt 0
-rwx------. 1 sampleuser samplegroup 0  2. Mai 11:26 lala
-rwx------. 1 sampleuser samplegroup 0  2. Mai 11:26 'lala lala'

Funktioniert somit sowohl mit Ordnern als auch mit Dateien ohne Probleme.
 
Ach ja, da hast du natürlich Recht. Das Kommando nach -exec wird ohne die Shell aufgerufen und der Dateiname damit unverändert als ein Parameter übergeben. Ich habe das hiermit verwechselt:

Code:
find . -type f | xargs chmod 600

Da würde die Shell dazwischen funken und man müsste zu "-print0" und "xargs -0" greifen. Aber dein find mit dem "+" am Ende funktioniert ja ähnlich wie xargs und umgeht die Shellproblematik.
 
Tach,

Erstmal danke für's erklären.


KibaInuzuka schrieb:
damit meinst du Partitionen?
Richtig, da habe ich mich falsch ausgedrückt.

Okay also damit alles ausnahmslos root gehört:

Code:
chown root:root /media/*/* -R

Soweit korrekt?
Dieses /*/* reicht für alle Tiefen?
Weil ich habe da Unterordner die gehen bis zu 10 oder mehr Verzeichnisse runter.

Was hat es genau mit dem execute auf sicht?
Soweit ich das verstehe, eben das Recht Programme auszuführen?
Weil das brauch hingegen bei keinen außer der System-SSD.

KibaInuzuka schrieb:
Außerdem bringt es dir 0,nix wenn du einem Ordner nur RW gibst. Dann kannst du ihn nicht mehr betreten.
Also in der GUI habe ich auch nur die Möglichkeit none, R, W, oder RW zu vergeben. Und komme trotzdem rein.
Per Konsole muss da noch mal extra ein Befehl hin? Das execute vielleicht?

KibaInuzuka schrieb:
Also quasi so: chmod 700 /media/* -R
Also die erste Stelle ist der Owner, die letzte Others, und die Mitte?
Weil dort kann ich ja unterschiedliche Benutzer bzw Gruppen auswählen.
Da sollte dann der angemeldete Benutzer mit seiner "Gruppe".
Wäre es eben genau der dann bräuchte ich aber: 660, oder?
Hier auch wieder, warum hier nur 1 Wildcard, nicht 2 wie bei chown?

Also in meinen Fall dann:
Code:
chmod 770 /media/* -R

KibaInuzuka schrieb:
Meinst du damit den Usernamen?
Ja.

KibaInuzuka schrieb:
Ich merk schon, du bist Faul.
Nein! Es ist nur wie oben schon angeschnitten: Ich habe

KibaInuzuka schrieb:
Keinen blassen Schimmer.


KibaInuzuka schrieb:
Code:
chmod root:name /media/* -R && find /media/*/* -type d -exec chmod 700 {} + && find /media -type f -exec chmod 600 {} +

Wenn nicht, dann so etwas:

Code:
chmod root:name /media1/1 /lala1/2 -R && find /media1/1/* /lala1/2/* -type d -exec chmod 700 {} + && find /media1/1/* /lala1/2/* -type f -exec chmod 600 {} +

Dann hast du auch saubere Dateirechte.
Sorry, da blicke ich jetzt komplett gar nicht mehr durch.... :(
Was bewirken die einzelnen Befehle genau bzw was ist das lala?

Nochmal:
- Es sollen alle Unterordner (bis hin zu allen Tiefen) ausnahmslos dieselben Rechte haben.
- Ich soll als root, sowie als normaler user, lese und Schreibrechte haben. (Und natürlich betreten können.)
- Root soll der Owner sein, ausgeführt werden können, soll da nichts.
- Alle anderen haben keinerlei Rechte.

Bei einer Samba-Freigabe für *name* gelten die Rechte dann von *name*, richtig?

KibaInuzuka schrieb:
Eine Home eines Nutzers ist immer 700 z.B. /root oder /home/sampleuser
Die Dateien innerhalb des Home Ordners werden per default mit dem Modes 664 und Ordner mit 755 angelegt.
Wenn du als root in /home/sampleuser eine Datei anlegst, kann die sampleuser aber auch nicht mehr lesen oder löschen oder sonst was damit anfangen.
Und bei reinen Daten-Partitionen bzw externe Platten/Partitionen?

Ich dachte eigentlich mit 2-3 Shell Zeilen ginge das schneller und unkomplizierter als mit der GUI...

---
So soll das bei jeden Ordner aussehen:


Das habe ich zur Verfügung:


Problem ist jetzt einfach, wenn der überliegende Ordner schon diese Recht hat, aber ein Unterordner nicht, muss ich erst eine Änderung zu einen anderen Status setzen um die Frage nach rekursiv zu bekommen. Ebenso muss ich das dann für jeden der 3 Einträge machen, das wiederum bei jeder Partition. Das würde jetzt richtig lang dauern bis alles übernommen wird. Dachte ich mach das per Shell - die läuft dann von alleine.

Bei Windows ist das viel einfacher gelöst. Einfach die entsprechenden Eigenschaften auswählen, Haken rein das es auch für alle Unterordner gelten soll, er rattert alleine, und am Ende ist es so wie es soll.
 
Zuletzt bearbeitet:
Okay, nochmal zusammengefasst, ein Ordner braucht das "ausführen" Recht damit du ihn betreten kannst.
Ob die GUI da lala drum rum macht weiß ich nicht. Könnte aber sein.

Ansonsten hast du das schon ganz richtig begriffen, die Mitte von 700 beispielsweise ist die Gruppe.
Heißt also 7 = Ich, als Eigentümer darf lesen schreiben und ausführen , 0 = ich als Gruppe darf nix und 0 = Ich als Fremder darf auch nix.

Ich denke das was du willst ist folgendes:
Code:
chown root:ANDERERUSERNAME /media/*/* -R
(Und ja, das gilt auch für alle Unterordner.)
Das * nach media sagt nur nimm alle Verzeichnisse von da und dann alles was in diesen Verzeichnissen liegt. -R macht alles dahinter.

Und die find Befehle sind folgendes:
Es ist sinnvoll Ordnern und Dateien nicht gleiche Dateirechte zu geben, da eine Datei im Normalfall keine Ausführrechte benötigt, Ordner aber schon.
Deshalb diese komplizierten Befehle.
Die machen im Endeffekt nur folgendes:
Hey, suche mir bitte alle Ordner in /media/*/* und mache da ein chmod 770 drauf und wenn es eine Datei ist mache ein 660 drauf.)

Das heißt, dass das alle deine Probleme bezüglich Dateirechten löst:
Code:
chmod root:ANDERERUSERNAME /media/*/* -R && find /media/*/* -type d -exec chmod 770 {} + && find /media/*/* -type f -exec chmod 660 {} +

Wenn du in Linux ein CIFS (Samba-Share) mountest kannst du ihm die UID und die GID mitgeben (User und GruppenID) damit sollte er dann umgehen können. Bei Windows meldest du dich einfach mit dem ANDERERUSERNAME an und er sollte das automatisch raffen.

BITTE ANDERERUSERNAME ANPASSEN!
 
Zurück
Oben