Unix: Wie kann ich nur einer Person erlauben, meinen Ordner in derselben fs zu sehen?


9

Ich möchte einem Freund Zugriff auf ein Verzeichnis geben. Er hat Zugriff auf das Dateisystem, in dem sich das Verzeichnis befindet. Ich möchte die Berechtigungen nicht für alle Benutzer festlegen. Wie kann ich nur einer Person erlauben, das Verzeichnis zu sehen? Keiner von uns ist ein Superuser.

[BOUNTY CHALLENGE] Keine der Antworten funktioniert mit Ubuntu:

1. Jamuraas Ansatz funktioniert nicht

$ setfacl -m user:friend:rwx classroom.xml 
setfacl: classroom.xml: Operation not supported

2. niks Ansatz funktioniert nicht: Zugriff auf nicht vorhandene Datei nicht möglich

3. Ba's Ansatz funktioniert nicht: Ich kann keine Gruppen erstellen, keine Wurzel.

4. Der ToK-Ansatz funktioniert nicht. Benutzer werden in zwei Gruppen eingeteilt: "Benutzer" und "Feld".

chown -R myFriend:users ~/TEST
chown: changing ownership of `/u/myFriend/TEST/you_see_it': Operation not permitted
chown: changing ownership of `/u/myFriend/TEST': Operation not permitted

1
Es wäre nützlich, wenn Sie einen Einzeiler angeben würden, wie diese Antworten ein Problem für Sie darstellen - eine bessere Problemdefinition für die Bildung anderer Optionen.
Nik

nik: Fehlerprofile hinzugefügt.

Antworten:


12

Mit nur normalen UNIX-Berechtigungen (Benutzer, Gruppe, alle) können Sie dies nicht einfach tun. Wenn Sie keinen Zugriff mehr auf das Verzeichnis benötigen, können Sie möglicherweise den Eigentümer des Verzeichnisses in Ihren Freund ändern, was auf einigen Unices gültig ist, die meisten jedoch nicht.

Wenn Sie jedoch ACLs unter Linux aktiviert haben, können Sie dies tun, wenn Sie der Eigentümer der Datei sind. Führen Sie einfach den Befehl aus, setfacl -m user:friend:rwx filenamebei dem Freund der Kontoname Ihres Freundes und Dateiname die Datei ist. Sie können überprüfen, ob es in Kraft getreten ist, indem Sie es ausführen getfacl filename. Sie sollten die Triade user:friend:rwxin der Liste sehen. Ich habe jedoch nicht zu viele Linux-Systeme gesehen, auf denen die ACLs aktiviert sind.


ACLs sind die Standardlösung für dieses Problem, vorausgesetzt, Ihr Dateisystem hat sie aktiviert.
Ryan C. Thompson

HHH scheint zu sagen, dass dies nicht funktionieren wird. Ich denke, es wäre, es sei denn, aus irgendeinem Grund sind ACLs nicht aktiviert. HHH, was gibt es?
pboin

pboin: Diese Methode funktioniert nicht, daher kann der Grund anscheinend sein, dass ACLs nicht aktiviert sind oder s / thing else, nicht sicher.

11

Das hatten wir schon in der Schule besprochen.
Geht ungefähr so,

  1. Erstellen Sie ein Verzeichnis (benannt data, als Referenz hier)
    • Berechtigungen als " chmod 711 data" ändern
    • Gruppe und andere haben nur x- Zugriff, um das Verzeichnis zu betreten
    • Sie können das Verzeichnis nicht auflisten
    • Erstellen Sie nun ein Verzeichnis difficult-name-here(dies könnte eine Hash-Zeichenfolge sein).
    • Berechtigungen als " chmod a+rx difficult-name-here" ändern
    • Der Inhalt dieses Verzeichnisses ist sicher, während das äußere Verzeichnis nicht aufgelistet werden kann
    • Personen, die den "schwierigen Namen" kennen, können in dieses zweite Verzeichnis springen
      • " cd path/to/data/difficult-name-here"
      • Andere können den Namen nicht sehen und nicht auf Verzeichnisinhalte zugreifen
      • Der rootkann aber immer auf alles zugreifen (was hier kein Problem ist)
    • Teilen Sie das difficult-name-heremit den Personen, denen Sie diese Daten geben möchten
    • Bewahren Sie freigegebene Dateien in diesem zweiten Verzeichnis auf

Ziemlich grob, aber wenn dies ohne den Bruch der Unix-Zugriffskontrolle kaputt gehen kann, würde ich gerne wissen.


Update auf Kommentar von dmckee,
Dies ist genau die Schlussfolgerung, zu der wir gekommen sind!
"Sicherheit durch Dunkelheit" hat begrenzte Sicherheit .

Bei der Gestaltung des Schutzes von Daten ist
es jedoch wichtig, deren Wert zu ermitteln.

Sie sollten zielen auf,

  • Die Kosten für das Brechen der Sicherheit sind höher als:
  • Die Kosten für gesicherte Inhalte,
  • Um einen Faktor proportional zu Ihrer Paranoia

In diesem Fall ist Ihr Geheimnis rootgelüftet , wenn der beschließt, den Verzeichnisbaum irgendwo im öffentlichen Zugriff
aufzulisten! Aber schützen Sie sich vor der Wurzel oder ihrer möglichen Verantwortungslosigkeit?
Wenn dies der Fall ist, müssen Sie sich um viel mehr Sorgen machen als um freigegebene Dateien.


Update über nicht funktionierende Notiz in der Frage .
Ich habe dies in den frühen Tagen von Linux verwendet, um zu wissen, dass es funktioniert.
Wenn Sie cannot access non-existant file"statt 'permissions denied" erhalten, haben Sie höchstwahrscheinlich einen Fehler in der Sequenz gemacht. Was Sie wollen, sollte so aussehen,

 755 711 755 was auch immer - === Zugriffsberechtigungen

 BasePath / CoverDir / Obscure / protectedFile.txt
          | | ^^^^^^^^^^^^^^^^^ Kann ohne nicht gesehen werden
          | ^^^^^^^ Verzeichnisname Lesezugriff auf
          ^^^^^ Öffentlich mit Freund geteilt. Dunkles Verzeichnis.
                zugänglich 
                Verzeichnis.
  1. Wenn Sie ' CoverDir' Zugriff als 'rwx--x--x' festlegen , können
    group und andere nur das Verzeichnis betreten, dessen Inhalt jedoch nicht lesen.
  2. Wenn Sie nun einen obskuren Verzeichnisnamen
    ' Obscure' verwenden und mit ' rwxr-xr-x' vollständigen Lesezugriff gewähren ,
    kann jeder, der diesen Namen kennt, seinen Inhalt auflisten.
  3. Dieser Zugriff muss von außen mit einem " ls BasePath/CoverDir/Obscure" erfolgen,
    da Personen in Ihrer Gruppe und andere nicht in der Lage sind, " ls BasePath/CoverDir".

7
"Wenn dies gebrochen werden kann [...], möchte ich wissen" Nun, es ist das Vorbild für Sicherheit durch Dunkelheit und damit zerbrechlich. Verlassen Sie sich nicht langfristig darauf. Ordentlich, aber.
dmckee --- Ex-Moderator Kätzchen

Wenn Ihre Unix-Zugriffskontrolle sicher implementiert ist, ist dies fast so sicher wie eine schattierte Kennwortdatenbank (oder ein sshprivater Schlüssel).
Nik

5

Ryan hatte tatsächlich 100% Recht, nur rückwärts. Da Ihrem Freund (wahrscheinlich) eine eindeutige Gruppe mit seinem Benutzernamen zugeordnet ist, ändern Sie den Gruppeneigentum des betreffenden Verzeichnisses in diese Gruppe, höchstwahrscheinlich den Benutzernamen des Freundes. Um den Inhalt zwischen Ihnen beiden teilen zu können, sollten Sie das Eigentum als Benutzer behalten:

chown -R youruser:friendgroup ~/foo/bar

Weisen Sie dem Verzeichnis dann die entsprechenden Berechtigungen zu, je nachdem, welchen Zugriff der andere Benutzer haben soll:

chmod -R 770 ~/foo/bar

würde Ihnen beiden vollen rwx-Zugriff auf das Verzeichnis und seinen gesamten Inhalt gewähren.

Bitte beachten Sie, dass dies voraussetzt, dass der Gruppe Ihres Freundes kein anderer Benutzer hinzugefügt wurde. Das System hätte diese Zuweisung wahrscheinlich nicht vorgenommen. Wie bereits erwähnt, kann der Root-Benutzer jedoch das tun, was er wählt. Mit dem Befehl groups können Sie jede Gruppe anzeigen, zu der Ihr Freund oder ein beliebiger Benutzer gehört. Sofern die Berechtigungen nicht aus irgendeinem Grund geändert wurden, sollten Sie außerdem die Datei / etc / group anzeigen können, die die Gruppenzuweisungen für jede Gruppe im System enthält.


4

Ich würde eine neue Gruppe für Sie und Ihren Freund erstellen und die Ordnerberechtigungen für Eigentümer und Gruppe zusammen mit dem setgid-Bit für das Verzeichnis auf voll setzen.

Abhängig von Ihren Anforderungen müssen Sie möglicherweise auch prüfen, ob Sie und Ihre Freunde umask geändert werden müssen, damit die Gruppe automatisch neue Dateien ändern kann.

# groupadd bestfriends
# chmod 2770 dir
# chgrp bestfriends dir
# usermod -G bestfriends FRIENDLOGIN

3
Dies kann Superuser-Berechtigungen erfordern, die er nicht hat.
Keck

1
Oh, ich habe diese Zeile komplett verpasst: x Dann bin ich ratlos. Ich schätze, ich würde es einfach lokal per E-Mail senden - nicht die beste Lösung, aber zumindest wird die Datei an den anderen weitergegeben.
Gaqzi

2

Zugriffssteuerungslisten sind der perfekte Weg, dies zu tun.

Wenn ich mich richtig erinnere, muss das Dateisystem jedoch über / etc / fstab mit ACLs (z. B. "/ dev / sda6 / home ext3- Standardeinstellungen , acl ") initialisiert werden. Dies kann nur der Superuser. ..


2

RBACS wie grsec / selinux ist erforderlich.


Sie sind sich nicht sicher, ob dies das Problem ist. Können Sie ein Zitat hinzufügen?

2

Standardmäßig ist jedem Benutzer auf einem Ubuntu-System auch eine gleichnamige Gruppe zugeordnet. Wenn Sie also Ihren Freund zu Ihrer Gruppe hinzufügen und dann den betreffenden Ordner als markieren können g+rwx, werden Sie festgelegt. Ich erinnere mich vage, dass dieser Anwendungsfall als Grund für die Erstellung einer Gruppe für jeden Benutzer angeführt wurde.


Das Hinzufügen von Benutzern zu Gruppen erfordert Root-Zugriff, den OP laut eigenen Angaben nicht hat.
Dave Sherohman


2

Ich habe es noch nicht versucht, aber wie wäre es mit einem öffentlich lesbaren Verzeichnis mit einem verschlüsselten User-Space-FS (zum Beispiel encfs)? Dann können Sie dieses Passwort mit Ihrem Freund teilen und niemand anderes kann diese Daten verwenden (nun, ich denke, sie könnten die Daten abrufen und einen Passwort-Cracker offline ausführen?).


2

Um Linux die gleiche Finesse wie Windows in Dateiberechtigungen zu geben, müssen Sie Gruppen verschachteln. Erstellen Sie eine Gruppe, die Zugriff auf Ihren Ordner hat, wie Sie es Ihrem Freund wünschen. Fügen Sie ihn dieser Gruppe oder der Gruppe hinzu, in der er sich in dieser Gruppe befindet. Zum Beispiel

/ foo ist der Ordner, den Sie freigeben möchten. Erstellen Sie eine Gruppen-FooGroup, die den gewünschten Zugriff auf den Ordner hat. Fügen Sie dieser Gruppe Gruppen und Benutzer hinzu, für die Sie Zugriff auf diesen Ordner haben möchten.

Es ist ein großes Problem, für jeden Ordner oder jede Datei eine Gruppe zu haben, aber es ist der beste Weg, den Zugriff auf derselben Ebene wie Windows einzuschränken.


1

Sie können das Verzeichnis mit verschlüsseln gpg. Und dann versuchen Sie, den Ort so zu verschleiern, wie es Nik vorgeschlagen hat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.