chown 600 id_rsa修复权限问题的原因?

分享于 

4分钟阅读

电脑

  繁體 雙語

问题:

我最近将密钥导入新机器( 苹果机),忘记修改对 600的权限。 这样做时,我偶然写了 chown 而不是 chmod 。 奇怪的是,这个修正了许可问题,如下所示:


% 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$



为什么要这样?


回答 1:

如果file文件的所有者是运行的用户,则根据 源代码,只检查 private 密钥文件上的权限。 如果该文件属于另一个用户,那么ssh将允许任何可以读取该文件的用户使用它。


if ((st.st_uid == getuid()) && (st.st_mode & 077)!= 0) {


 ^^^^^^^^^^^^^^^^^^^--owner ^^^^^^^^^^^^^^^^--permissions


 error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");


 error("@ WARNING: UNPROTECTED PRIVATE KEY FILE! @");


 error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");


. . .



这似乎不是在手册页中的拼写。

源代码包含说明该行为正在进行的注释:


/*


 * 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.


 */



实际上,检查属于另一个用户的密钥文件的权限不会提高安全性。 如果可以读取文件,可以通过制作文件副本并限制复制权限来围绕权限检查。


回答 2:

chmod 命令代表"更改模式",允许更改文件和文件夹的权限,也称为中的"模式"。 chown 命令代表"更改所有者",允许更改给定文件或者文件夹的所有者,它可以是用户和组。



FIX  permission  Chown  
相关文章