Warum behebt chown 600 id_rsa das Berechtigungsproblem?

Warum behebt chown 600 id_rsa das Berechtigungsproblem?

Ich habe vor Kurzem meine Schlüssel auf einen neuen Rechner (Mac) importiert und vergessen, die Berechtigungen auf 600 zu ändern. Dabei habe ich versehentlich chownstatt geschrieben chmod. Seltsamerweise hat dies das Berechtigungsproblem behoben, wie hier zu sehen ist:

% git pull origin develop
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/m/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/m/.ssh/id_rsa": bad permissions
git@<redacted>: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
%
% sudo chown 600 ~/.ssh/id_rsa
Password:
%
% ls -l ~/.ssh/id_rsa
-rw-r--r--@ 1 600  staff  1679 Mar 25 15:14 /Users/m/.ssh/id_rsa
%
% git pull origin develop
From <redacted>
 * branch            develop    -> FETCH_HEAD
Already up to date.
%
% ssh <redacted>
The authenticity of host '<redacted> (<redacted>)' can't be established.
ECDSA key fingerprint is <redacted>.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '<redacted>' (ECDSA) to the list of known hosts.
Warning: your password will expire in 5 days
Last login: Fri Jul 27 19:51:32 2018 from <redacted>
-bash-4.2$

Warum ist das so?

Antwort1

Entsprechend derOpenSSHQuellcode, sshprüft die Berechtigungen für die private Schlüsseldatei nur, wenn der Eigentümer der Datei der ausführende Benutzer ist ssh. Wenn die Datei einem anderen Benutzer gehört, lässt SSH jeden, der die Datei lesen kann, sie verwenden.

if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
     ^^^^^^^^^^^^^^^^^^^--owner ^^^^^^^^^^^^^^^^--permissions
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    ...

Dies scheint nicht dargelegt zu sein in dermanpage.

Der Quellcode enthält diesen Kommentar, der darauf hinweist, dass das Verhalten beabsichtigt ist:

/*
 * if a key owned by the user is accessed, then we check the
 * permissions of the file. if the key owned by a different user,
 * then we don't care.
 */

In der Praxis würde das Überprüfen der Berechtigungen für eine Schlüsseldatei, die einem anderen Benutzer gehört, die Sicherheit nicht verbessern. Wenn Sie die Datei lesen können, können Sie die Berechtigungsprüfung umgehen, indem Sie eine Kopie der Datei erstellen und die Berechtigungen für die Kopie einschränken.

Antwort2

Der Befehl chmod steht für „Change Mode“ und ermöglicht das Ändern der Berechtigungen für Dateien und Ordner, die in UNIX auch als „Modi“ bezeichnet werden. Der Befehl chown steht für „Change Owner“ und ermöglicht das Ändern des Besitzers einer bestimmten Datei oder eines Ordners, wobei es sich um einen Benutzer oder eine Gruppe handeln kann.

verwandte Informationen