Ich möchte einige Dateien verstecken, sodass ls -a
sie nicht einmal gefunden werden können. Ich meine nicht das Hinzufügen von '.' vor dem Dateinamen. Ich habe darüber nachgedacht, ob ich separate Systemaufrufe für den Zugriff auf diese Dateien erstellen könnte. Der eigentliche Bedarf besteht darin, einige Protokolldateien vor dem Benutzer zu verbergen. Ich speichere die MAC-Daten einiger Dateien und möchte nicht, dass der Benutzer diese Protokolldateien sieht. Derzeit kenne ich nur eine Möglichkeit, Daten zu verbergen, nämlich durch Hinzufügen von '.' vor dem Dateinamen. Aber die Datei kann vom Benutzer durch den einfachen Aufruf gesehen werden ls -a
. Daher möchte ich wissen, ob es eine andere Möglichkeit gibt, diese Protokolldaten zu verbergen?
Antwort1
Wie andere bereits angemerkt haben, ist das Verstecken einer persistenten Datei wahrscheinlich der falsche Ansatz, wenn der Zweck darin besteht, den Zugriff darauf zu erschweren. In diesem Fall könnte der Einsatz geeigneter Zugriffskontrollmaßnahmen oder sogar Kryptografie, wenn die Anwendung dies rechtfertigt, eine Lösung sein. Andererseits ist das Erstellen „versteckter“vorübergehendDateien sind ein völlig legitimer Anwendungsfall.
Unter Linux ist seit Kernel-Version 3.11 deropen()
Systemaufruf unterstützt das O_TMPFILE
Flag, mit dem unbenannte temporäre Dateien erstellt werden können. Wenn dieses Flag verwendet wird,PfadnameDas Argument to open()
wird verwendet, um ein Verzeichnis anzugeben, unter dem ein unbenannter Inode erstellt wird. Der Hauptanwendungsfall für O_TMPFILE
ist jedoch, wie der Name schon sagt, die Erstellung vonvorübergehendDateien, ist dies nicht für die dauerhafte Speicherung geeignet, da die Datei verloren geht, wenn der letzte Dateideskriptor der Datei geschlossen wird, es sei denn, die Datei erhält einen Namen. Der Datei kann ein Name mit demlinkat()
Systemaufruf, es sei denn, das O_EXCL
Flag wurde zusätzlich angegeben O_TMPFILE
. In diesem Fall wird die Verknüpfung der Datei mit dem Dateisystem verhindert.
Die kürzlich hinzugefügte O_TMPFILE
Funktionalität ist von Bedeutung, da sie verwendet werden kann, um temporären Dateien die folgenden Eigenschaften zu verleihen:
- Erstellung ohne Wettlaufbedingungen.
- Automatische Löschung beim Schließen.
- Über keinen Pfadnamen erreichbar.
- Nicht anfällig für Symlink-Angriffe.
- Der Anrufer muss sich keine eindeutigen Namen ausdenken.
Darüber hinaus kann die Funktionalität verwendet werden, um Dateien zu erstellen, die zunächst unsichtbar sind. Zu diesem Zeitpunkt können die entsprechenden Dateisystemattribute an der Datei angepasst werden, bevor sie in einer atomaren Operation mit dem Dateisystem verknüpft wird. Dies kann verwendet werden, um bestimmteTOCTOURennbedingungen.
Ein Nachteil des O_TMPFILE
Flags ist, dass es nur von einer Teilmenge von Dateisystemen unterstützt wird. Ursprünglich wurde es in den Dateisystemen ext2, ext3, ext4, UDF, Minix und shmem unterstützt. XFS-Unterstützung wurde in Linux 3.15 hinzugefügt.
Antwort2
Egal welche Trennung Sie vornehmen, Root kann immer noch darauf zugreifen, sodass Sie nur Sicherheit durch Verschleierung haben, was nicht wirklich sicher ist. Wenn Sie den Zugriff vor anderen Benutzern verbergen möchten, können Sie dafür eine Berechtigung verwenden. Das Verweigern von Leseberechtigungen für Dateien oder Verzeichnisse führt zu Ihrem gewünschten Ergebnis.
Antwort3
Der Sicherheitsforscher The Grugq hat eine Technik entdeckt, die er „Faustfick", "Filesystem Insertion and Subversion Technique". Seine Präsentationen lesen sich, als hätte er Dateisysteme an seltsamen Stellen platziert, wie EXT3-Journaldateien, Verzeichnisdateien und „Bad Blocks“-Dateien. Das klingt nach einer Empfehlung für Sicherheit durch Verschleierung, aber kann man so etwas machen?
Antwort4
Wenn Sie verhindern möchten, dass andere Benutzer (einschließlich Root) Ihre Dateien lesen, können Sie sie verschlüsseln. Wenn Sie auch die Namen der Dateien verbergen möchten, geben Sie ihnen entweder falsche Namen oder verwenden Sie einen verschlüsselten Dateicontainer wie TrueCrypt. In diesem Fall sind die Dateien für Root weiterhin zugänglich, wenn das Dateisystem gemountet ist.