Ermöglichen Sie einem Benutzer, die Home-Verzeichnisse anderer Benutzer zu lesen

10

Ich bin neu in der Systemadministration und habe eine berechtigungsbezogene Abfrage. Ich habe eine Gruppe namens administration. Innerhalb der administrationGruppe habe ich die Benutzer user1, user2, user3, superuser. Alle Benutzer sind in der administrationGruppe. Jetzt muss ich dem Benutzer Berechtigungen erteilen superuser, um das /homeVerzeichnis der anderen Benutzer anzeigen zu können . Allerdings möchte ich nicht user1, user2, user3die zu Hause von einem anderen Benutzer außer sich selbst zu sehen. (Das heißt, user1sollte nur user1das Haus sehen können und so weiter).

Ich habe die Benutzer und Gruppen erstellt und alle Benutzer der Gruppe zugewiesen. Wie soll ich die Berechtigungen für das superuserJetzt angeben ?

Mit anderen Worten, ich denke an zwei Gruppen (say NormalUsersund Superuser). Die NormalUsersGruppe wird die Benutzer haben user1, user2und user3. Die SuperuserGruppe hat nur den Benutzer Superuser. Jetzt muss ich Superuservollen Zugriff auf die Dateien der Benutzer in der Gruppe haben NormalUsers. Ist das unter Linux möglich?

Ramesh
quelle
Wie unterscheidet sich das von Ihrer vorherigen Frage ?
Gilles 'SO - hör auf böse zu sein'
In meiner vorherigen Frage ging es mir mehr darum, die Datei / etc / sudoers zu bearbeiten und den Benutzer zum Teiladministrator zu machen. Hier versuche ich, die Berechtigungen eines lokalen Benutzers zu ändern. Ja, es ist ähnlich wie das, was ich erreichen möchte, aber ich versuche hier eine andere Methode anzusprechen.
Ramesh

Antworten:

10

Wenn die Benutzer kooperativ sind, können Sie Zugriffssteuerungslisten (ACL) verwenden. Legen Sie eine ACL im Home-Verzeichnis von user1(und Freunden) fest, auf die Lesezugriff gewährt wird superuser. Legen Sie auch die Standard-ACL für neu erstellte Dateien sowie die ACL für vorhandene Dateien fest.

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 kann die ACL in seinen Dateien ändern, wenn er dies wünscht.

Wenn Sie immer superuserLesezugriff auf user1die Dateien gewähren möchten , können Sie mit bindfs eine andere Ansicht der Home-Verzeichnisse der Benutzer mit unterschiedlichen Berechtigungen erstellen .

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

Dateien, auf die über ~ superuser / spyglass / user1 zugegriffen wird, sind weltweit lesbar. Abgesehen von den Berechtigungen ~superuser/spyglass/user1wird eine Ansicht des user1Home-Verzeichnisses angezeigt. Da dies superuserder einzige Benutzer ist, der darauf zugreifen kann ~superuser/spyglass, superuserkann nur davon profitiert werden.

Gilles 'SO - hör auf böse zu sein'
quelle
Auf meinem System werden die Berechtigungen und der Benutzername ausgetauscht : setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms
10

Sie können ACLs verwenden, um einer beliebigen Gruppe Zugriff auf ein bestimmtes Verzeichnis zu gewähren.

Wenn Sie beispielsweise ausgeführt haben, setfacl -m g:dba:rwx /home/fooverfügen Mitglieder der dba-Gruppe über rwx-Berechtigungen, unabhängig davon, welcher Gruppe das Verzeichnis gehört.

Möglicherweise möchten Sie auch die "Standard" -CL (die ACL für neu erstellte Objekte im Verzeichnis) so festlegen, dass diese Berechtigung ebenfalls enthalten ist.

derobert
quelle
Ja, genau ... Ich habe das auch herausgefunden, bin mir aber immer noch nicht sicher, ob es eine gute Idee ist, ACLs auf dem Server für die LDAP-Benutzer zu gewähren.
Ramesh
@Ramesh Nun, wenn sie Benutzer im System sind (weil Sie nss-ldap, sssd usw. verwenden), bin ich mir nicht sicher, warum es nicht in Ordnung wäre.
Derobert
Ich habe versucht, dies im Prüfstand zu wiederholen. Wenn ich mich als Benutzer anmelde (z. B. foo), wird die Warnmeldung "Die Berechtigungen sollten auf 644 gesetzt sein" angezeigt. Ich glaube, die Warnung kann ignoriert werden. Ich möchte jedoch nicht, dass die Laborbenutzer wissen, dass ihre Benutzerkonten kompromittiert wurden. Wenn ich das rwx im Befehl setfacl auf nur r ändere, kann ich das Verzeichnis des foo nicht sehen.
Ramesh
2
@Ramesh Sie benötigen + x, um Verzeichnisse tatsächlich zu durchsuchen. Ich bin nicht sicher, was Ihnen sagt, dass ein Verzeichnis 644 sein sollte, das ist albern, es sollte 755 oder ähnlich sein. In beiden Fällen wird dem Benutzer ein + im Berechtigungsfeld von ls angezeigt, und er kann getfacl ausführen, um es anzuzeigen - es ist nicht geheim.
Derobert
Okay, ich habe die Warnmeldung erhalten, dass das $ HOME-Verzeichnis des Benutzers dem Benutzer gehört und nicht von anderen Benutzern beschreibbar sein darf. Ich habe die Schreibberechtigung im Befehl setacl entfernt und sehe jetzt keine Warnmeldung.
Ramesh
0

Leider gibt es unter Vanilla Linux keine Möglichkeit, dies direkt zu tun.

Möglicherweise können Sie in sudoers eine neue Gruppe für die Teiladministratoren mit einer weißen Liste akzeptabler Befehle erstellen, damit diese ausgeführt werden können.

Um jedoch genau das zu erreichen, wonach Sie suchen, müssten Sie Apparmor oder SELinux verwenden, um das zu erreichen, was Sie möchten. Leider ist keines dieser Tools einfach einzurichten und zu verwenden, und Beispiele liegen hier weit außerhalb des Rahmens einer schnellen Antwort.

schweizerisch
quelle
1
Linux unterstützt seit einiger Zeit ACLs. Mit ACLs können Sie dies tun.
Derobert
Ja, ich habe gerade diese Lösung gefunden und die Antwort aktualisiert. Ich weiß jedoch immer noch nicht, ob es auf dem Server verwendet werden kann und das auch für LDAP-Benutzer.
Ramesh
@derobert Soweit ich weiß, ist es unmöglich, jemandem über sudo Berechtigungen auf Stammebene zu erteilen, während gleichzeitig ACLs verwendet werden, um den Zugriff zu beschränken. Sie müssen SELinux oder einen anderen MAC verwenden, um dies zu erreichen.
Schweizer
1
Ich denke, wenn OP dem Benutzer "Superuser" sagt, meint er das wörtlich - nicht root.
Derobert