Kann root / superuser meine lesegeschützten Dateien lesen?

35

Auf Shared Unix Hosting, wenn ich eine Datei sensitive-data.txt habe und Folgendes stelle:

chmod 600 sensitive-data.txt

Kann der Root-Benutzer meine Datei noch lesen? Insbesondere frage ich mich, ob es sicher ist, mein Passwort in einer mercurial hgrc-Datei zu speichern.

AKTUALISIEREN

Beschlossen, die Verlängerung für den mechanischen Schlüsselring zu verwenden, da diese sehr einfach einzurichten war:

pip install mercurial_keyring

und dann zu hgrc hinzufügen:

[extensions]
mercurial_keyring =

Die Antwort auf diese Frage interessiert mich jedoch immer noch.

Benutzer
quelle

Antworten:

62

Ja, root kann:

$ echo Hello you\! > file
$ chmod 600 file
$ ls -l file
-rw------- 1 terdon terdon 11 Feb 27 02:14 file
$ sudo -i
# cat file
Hello you!

Selbst wenn root Ihre Dateien nicht als root lesen konnte, können sie sich auf jeden Fall ohne Passwort wie Sie anmelden:

$ whoami
terdon
$ sudo -i
[sudo] password for terdon: 
# whoami 
root
# su - terdon
$ whoami
terdon

Sie können also rootmit su(oder sudo -iu username) zu jedem anderen Benutzernamen wechseln und dann alles tun, als ob Sie es wären.

terdon
quelle
23

Nehmen Sie immer an, dass root(und jeder andere Benutzer / Prozess mit CAP_DAC_OVERRIDEund CAP_DAC_READ_SEARCH) alles tun kann, es sei denn, ein LSM (SELinux, AppArmor oder ähnliches) hindert ihn daran.

Das bedeutet auch, dass Sie davon ausgehen sollten, dass alle Ihre Tastenanschläge gelesen werden können. Passwörter sind nicht wirklich sicher. Wenn Sie ein hohes Maß an Sicherheit wünschen, müssen Sie ein System verwenden, das vollständig von Ihnen kontrolliert wird (und nicht einmal von jemand anderem verwendet wird).

Hauke ​​Laging
quelle
Dies ist eigentlich mein Problem mit den Funktionen, wie sie derzeit implementiert sind. Da sie keine Ziele angeben, benötigen Sie eine Typ-Durchsetzung, die Funktionen (wie SELinux) ersetzt, um dies zu verhindern. Wenn Sie einem Benutzer CAP_DAC_OVERRIDEdas nötige Recht geben, um andere Sicherheitsmechanismen auf dem System außer Kraft zu setzen, erhalten Sie diese auf einen Schlag. CAP_DAC_OVERRIDEist im Grunde CAP_DO_WHATEVER_YOU_WANT.
Bratchley
10

Ja, root hat alle Rechte, um irgendetwas zu tun

Hier sehen Sie, dass ich einen Verzeichnisnamentest erstellt und eine Datei lonston.txt berührt und die Dateien aufgelistet habe

root@system99:/tmp# mkdir test && touch lonston.txt && ls -l
total 4
-rw-r--r-- 1 root root    0 Feb 27 16:35 lonston.txt
drwxr-xr-x 2 root root 4096 Feb 27 16:35 test

Dann habe ich die Erlaubnis der Akte und des Verzeichnisses zur Nullerlaubnis unter Verwendung von 000 geändert und verzeichnet, um die Erlaubnis zu sehen

root@system99:/tmp# chmod 000 lonston.txt && chmod 000 test && ls -l
total 4
---------- 1 root root    0 Feb 27 16:35 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

Dann kann ich sogar in die Datei schreiben und die Datei mit cat lesen

root@system99:/tmp# echo "Yes root have all Privileges than other user's, let we see the permission of user's too" > lonston.txt 

root@system99:/tmp# cat lonston.txt 
Yes root have all Privilages than other user's, let we see the permission of user's too

Sogar ich kann in das Verzeichnis gelangen, das die Berechtigung d --------- (null) 000 hat, selbst root hat keine Lese- oder Schreibberechtigung.

root@system99:/tmp# cd test/
root@system99:/tmp/test# pwd
/tmp/test

Auch ich kann die Dateien und Ordner nach dem Berechtigungswechsel von jedem erstellen lassen

root@system99:/tmp/test# touch /tmp/test/lonston/testdir/babin.txt

root@system99:/tmp/test# ls -l /tmp/test/lonston/testdir/
total 0
-rw-r--r-- 1 root root 0 Feb 27 16:39 babin.txt

Jetzt können wir hier Permission mit 400 sehen

root@system99:/tmp/test# chmod 400 babin.txt

Liste, um die Dateiberechtigung anzuzeigen

root@system99:/tmp/test# ls -l
total 8
-r-------- 1 root root   34 Feb 27 16:42 babin.txt
drwxr-xr-x 3 root root 4096 Feb 27 16:38 lonston

Mit vim im habe ich der Datei babin.txt 1 Zeile hinzugefügt

root@system99:/tmp/test# vim babin.txt

Im VIM-Modus werden wir jedoch W10 bemerken: Warnung: Änderung einer schreibgeschützten Datei, die jedoch weiterhin beschreibbar ist

Jetzt können wir die Datei für die Ausgabe katzen

root@system99:/tmp/test# cat babin.txt 
hi this is the write persmission 
this is added while the file have 400 permission

Dann habe ich mich vom Root-Benutzer zum normalen Benutzer abgemeldet und die Datei mit Null-Berechtigung aufgelistet, was auch im Root-Benutzer geschieht

root@system99:/tmp# exit
exit

Navigieren Sie zu / tmp Directory

sysadmin@system99:~$ cd /tmp/
sysadmin@system99:/tmp$ ls -l
total 8
---------- 1 root root   88 Feb 27 16:36 lonston.txt
d--------- 2 root root 4096 Feb 27 16:35 test

Aber beim Lesen der Datei vom normalen Benutzer können wir nicht

sysadmin@system99:/tmp$ cat lonston.txt 
cat: lonston.txt: Permission denied

sysadmin@system99:/tmp$ cd test/
cat: test/: Permission denied

Ich hoffe, Sie haben die Macht des Root-Benutzers

Wenn Sie ein normaler Benutzer sind und Root-Rechte benötigen, müssen Sie sudo verwenden, und Sie werden nach dem sudo-Passwort gefragt

Beispiel:

sysadmin@system99:/tmp$ sudo cat lonston.txt 
[sudo] password for sysadmin: 
Yes root have all Privilages than other user's, let we see the permission of user's too

Sudo-Benutzer haben eine Zusammenarbeit mit der Gruppe des Root-Benutzers, also welche Sudo-Benutzer haben das Root-Privileg.

Um mehr über sudo zu erfahren

# man sudoers

Hier sehen wir, dass sie definiert wurden, als der normale Benutzer Sudo-Rechte haben kann. Nur wenige Zeilen, die ich hier erwähnt habe.

sysadmin@system99:/tmp$ sudo cat /etc/sudoers

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Völlig können wir die Dateien lesen, bearbeiten oder löschen, auch wenn root nicht über die Leseberechtigung verfügt.

Babin Lonston
quelle
2
Warum hat diese Antwort so wenig positive Stimmen? Es deckt fast alle Fälle ab, die mit Beispielen auftreten können.
Foo Bar
8

In traditionellem Unix ist root allmächtig. Insbesondere kann root jede Datei lesen und sogar nachschauen, was Ihre Programme intern tun. Wenn die Daten wirklich vertraulich sind, bewahren Sie nur verschlüsselte Kopien auf (beachten Sie hierzu z. B. GNU Privacy Guard , lesen Sie jedoch vorher die Dokumentation sorgfältig durch), und entschlüsseln Sie sie niemals auf einem Computer, der nicht Ihrer vollständigen Kontrolle unterliegt.

(Paranoia ist wunderbar, davon gibt es nie genug ;-)

Überlegen Sie im Ernst, welche Kosten der Verlust der Daten verursachen kann und wie viel Sie bereit sind, für die Sicherheit zu zahlen. Perfekte Sicherheit ist unmöglich, um ein bisschen mehr Sicherheit zu bekommen, steigen die Kosten rapide. Aber pass auf, dass du nicht in die Falle einer teuren Maßnahme fällst, die die Sicherheit nicht wirklich erhöht ...

vonbrand
quelle
3

Es sollte auch davon ausgegangen werden, dass jeder, der die Möglichkeit hat, sich im selben Raum wie die Hardware zu befinden, lesen oder schreiben kann, was er will. Wenn sie sehr geduldig sind, können sie eventuell verschlüsselte Daten verstehen. Sie benötigen keine Seitenkanalmethoden, wenn sie die Verschlüsselungssoftware ersetzen können.

user130144
quelle
2

Ja, der Root kann geschützte Dateien lesen, auch wenn der Besitzer dies nicht kann (während der Besitzer natürlich den Schutz entfernen und dann den Inhalt lesen kann):

echo "123" > abc.txt
chmod 000 abc.txt
cat abc.txt

cat: abc.txt: Berechtigung verweigert

su
cat abc.txt

123

Unter normalen Einstellungen kann der Root jedoch nicht auf geschützte Dateien auf entfernten Dateisystemen wie NFS zugreifen ("root squash").

h22
quelle
+1 für die Erwähnung von NFS-Root-Squash. Solange der Benutzer, der das über NFS gemountete Verzeichnis besitzt, als Root angemeldet ist, schützt Root Squash ihn jedoch nicht.
Jenny D
2

Um zu verhindern, dass root oder eine andere Person Ihre Dateien lesen kann, müssen Sie sie verschlüsseln. Die Dateiverschlüsselung ist eine sehr praktische Option, wenn Sie keine komplexen Manipulationen am Dateisystem vornehmen müssen.

Verschlüsselungsoptionen:

  1. Verschlüsseln Sie normale Dateien und verhindern Sie, dass alle außer Ihnen diese anzeigen können
  2. Verschlüsseln Sie Shell-Skripte und machen Sie die verschlüsselten Versionen ausführbar, aber verhindern Sie auch, dass jeder sie ändern oder anzeigen kann

Wenn Sie Option 1 wählen, können Sie Ihre Dateien folgendermaßen verschlüsseln:

cat (your-file) | openssl aes-128-cbc -a -salt -k "(specify-a-password)" > (your-file).enc

Um die obige Datei zu entschlüsseln, führen Sie folgenden Befehl aus:

cat (your-file).enc | openssl aes-128-cbc -a -d -salt -k "(specify-the-password)" > (your-file).dec

- Möglicherweise möchten Sie das Obige in ein Skript einfügen, damit es nicht in Ihrem Verlauf angezeigt wird. Oder Sie können einfach den Parameter " -k " entfernen. Dadurch wird openssl aufgefordert, Sie nach einem Kennwort zu fragen.

Wenn Sie Option 2 wählen, kopieren Sie einfach Ihr Skript und fügen Sie es auf der folgenden Site ein:

http://www.kinglazy.com/shell-script-encryption-kinglazy-shieldx.htm

Wenn Sie Ihr Skript an diese Site senden, wird sofort eine Zip-Datei für Sie erstellt. Kopieren Sie den Link in die ZIP-Datei, gehen Sie zu Ihrer UNIX-Box und führen Sie die folgenden Schritte aus:

  1. wget link-to-the-zip-datei
  2. Entpacken Sie die neu heruntergeladene Zip-Datei
  3. cd / tmp / KingLazySHIELD
  4. ./install.sh / var / tmp / KINGLAZY / SHIELDX- (Ihr-Skriptname) / home / (Ihr-Benutzername) -force

Sobald Sie die vorhergehenden Schritte ausgeführt haben, können Sie Ihr verschlüsseltes Skript einfach von einem beliebigen Ort aus ausführen, an dem Sie es in Schritt 4 installiert haben .... dh / home / (Ihr-Benutzername) / (Ihr-verschlüsseltes-Skript). Sch

CalmingT
quelle