GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Centos – Verhalten der Hardlink-Berechtigungen unterschiedlich zwischen Centos 6 und Centos 7?

Ich erhalte einen Berechtigungsfehler in CentOS 7, wenn ich versuche, einen festen Link zu erstellen. Mit den gleichen Berechtigungen in CentOS 6 bekomme ich den Fehler nicht. Das Problem konzentriert sich auf Gruppenberechtigungen. Ich bin mir nicht sicher, welche Betriebssystemversion richtig und welche falsch ist.

Lassen Sie mich veranschaulichen, was passiert. In meinem aktuellen Arbeitsverzeichnis habe ich zwei Verzeichnisse:Quelle und Ziel. Am Anfang ist das Ziel leer; Quelle enthält eine Textdatei.

[[email protected] cwd]# ls -l
total 0
drwxrwxrwx. 2 root root  6 Jun 12 14:33 destination
drwxrwxrwx. 2 root root 21 Jun 12 14:33 source
[[email protected] cwd]# ls -l destination/
total 0
[[email protected] cwd]# ls -l source/
total 4
-rw-r--r--. 1 root root 8 Jun 12 14:20 test.txt
[[email protected] cwd]# 

Wie Sie sehen können, lauten die beiden Verzeichnisse in Bezug auf die Berechtigungen 777, wobei sowohl der Eigentümer als auch die Gruppe auf root gesetzt sind. Der Besitzer und die Gruppe der Textdatei sind ebenfalls beide auf root gesetzt. Die Berechtigungen der Textdatei sind jedoch Lese- und Schreibberechtigungen für den Besitzer, aber schreibgeschützt für die Gruppe.

Wenn ich als root angemeldet bin, habe ich kein Problem damit, im Zielverzeichnis einen Hardlink zu erstellen, der auf die Textdatei (im Quellverzeichnis) zeigt.

[[email protected] cwd]# ln source/test.txt destination/
[[email protected] cwd]# ls destination/
test.txt

Wenn ich mich jedoch als ein anderer Benutzer anmelde, in diesem Fall admin, kann ich den Link nicht erstellen. Ich erhalte:„Vorgang nicht erlaubt.“

[[email protected] cwd]# rm -f destination/test.txt 
[[email protected] cwd]# su admin
bash-4.2$ pwd
/root/cwd
bash-4.2$ ln source/test.txt destination/
ln: failed to create hard link ‘destination/test.txt’ => ‘source/test.txt’: Operation not permitted

Was passiert, macht für mich eigentlich Sinn, aber da das oben Genannte in CentOS 6 erlaubt ist, wollte ich überprüfen, ob ich etwas falsch verstanden habe. Für mich scheint es ein Fehler in CentOS 6 zu sein, der in CentOS 7 behoben wurde.

Weiß jemand was es gibt? Gehe ich richtig davon aus, dass das obige Verhalten das richtige Verhalten ist? Ist CentOS 6 richtig? Oder haben beide Recht und vielleicht gibt es ein subtiles Problem mit den Gruppenberechtigungen, das ich übersehe? Danke.

Bearbeiten: Ich habe den gleichen Test gerade auf einer Debian v7-VM versucht, die ich habe. Debian stimmt CentOS 7 zu:„Operation nicht erlaubt.“

Änderung Nr. 2: Ich habe gerade dasselbe unter Mac OS X (Yosemite) versucht. Das funktionierte so wie CentOS 6. Mit anderen Worten, der Link konnte erstellt werden. (Anmerkung:Unter OS X heißt die Stammgruppe „Wheel“. Soweit ich das beurteilen kann, ist das der einzige Unterschied.)

Akzeptierte Antwort:

Ich habe einige frische CentOS 6- und 7-VMs hochgefahren und konnte genau das Verhalten reproduzieren, das Sie gezeigt haben. Nach einigem Recherchieren stellt sich heraus, dass es sich hierbei tatsächlich um eine Änderung des Kernels bezüglich des Standardverhaltens in Bezug auf Hard- und Softlinks aus Sicherheitsgründen handelt. Die folgenden Seiten wiesen mich in die richtige Richtung:

Verwandte:Ändern Sie die Hintergrundfarbe des GNOME-Terminals im laufenden Betrieb?

http://kernel.opensuse.org/cgit/kernel/commit/?id=561ec64ae67ef25cac8d72bb9c4bfc955edfd415

http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1

Wenn Sie die Datei für alle beschreibbar machen, kann Ihr Admin-Benutzer den festen Link erstellen.

Um das Verhalten von CentOS 6 systemweit wiederherzustellen, wurden neue Kernelparameter hinzugefügt. Stellen Sie Folgendes in /etc/sysctl.conf ein:

fs.protected_hardlinks = 0
fs.protected_symlinks = 0

dann ausführen

sysctl -p

Warum entscheidet sich Ihr Programm dafür, Links zu verwenden, anstatt Dateien zu kopieren, warum eine exakte Kopie einer Datei erstellen, die Sie verwenden müssen, wenn Sie einfach einen Eintrag erstellen können, der auf die ursprünglichen Blöcke verweist? Dies spart Speicherplatz und der Betrieb ist weniger kostspielig in Bezug auf CPU und I/O. Der neue Hardlink ist dieselbe Datei, nur mit anderen Metadaten/Inode. Wenn Sie die Originaldatei löschen, nachdem Sie einen festen Link erstellt haben, hat dies keine Auswirkungen auf den Link. Eine Datei wird erst „gelöscht“, wenn alle Links entfernt wurden.


Cent OS
  1. Hardlinks und Softlinks in Linux erklärt

  2. Centos 4.8 und Glibc 2.5?

  3. Centos – „Symbolischer Link nicht erlaubt oder Linkziel nicht zugänglich“ / Apache auf Centos 6?

  4. So installieren und konfigurieren Sie web2py unter CentOS 7

  5. Deaktivieren oder aktivieren Sie die SSH-Root-Anmeldung und den sicheren SSH-Zugriff in CentOS 7

Kopieren Sie Dateien zwischen Linux und FreeDOS

So erstellen Sie harte und symbolische Links in Linux

Installieren Sie die Apache2-, PHP5- und MySQL-Unterstützung auf CentOS 6.5 (LAMP)

Unterschied zwischen Sudo-Benutzer und Root-Benutzer?

CentOS / RHEL 7 :So extrahieren Sie das initramfs-Image und bearbeiten/anzeigen es

Was ist der Unterschied zwischen root und sudo?