.nano_history 权限错误

17 permissions nano

我使用rkhunter,我想检查它的日志:

nano /var/log/rkhunter.log
Run Code Online (Sandbox Code Playgroud)

但是nano输出了这个错误:

Error reading /home/arthur-dent/.nano_history: Permission denied

Press Enter to continue starting nano.
Run Code Online (Sandbox Code Playgroud)

如果我按下ENTER我可以查看文件。我已经检查了该文件的权限,现在它们是:

-rw-------   1 root        root           12 May  3 20:26 .nano_history
Run Code Online (Sandbox Code Playgroud)

所以我想我只是将所有权改回给我?但是因为我实际上只是在使用nano,为什么权限和所有权(可能,因为我不知道原始所有权是什么)会突然改变?是不是因为我只是将它与 一起使用sudo,如果是这样,这很奇怪,因为以前从未发生过sudo这样的事情并且我经常使用它?


操作系统信息:

Description:    Ubuntu 15.04
Release:    15.04
Run Code Online (Sandbox Code Playgroud)

包装信息:

nano:
  Installed: 2.2.6-3
  Candidate: 2.2.6-3
  Version table:
 *** 2.2.6-3 0
        500 http://gb.archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages
        100 /var/lib/dpkg/status
Run Code Online (Sandbox Code Playgroud)

A.B*_*.B. 15

如果.nano_history不存在并且您以 root 身份编辑任何文件,则这是可能的。使用Ctrl+开始搜索操作W并且.nano_history拥有错误的所有权。

sudo chown arthur-dent:arthur-dent /home/arthur-dent/.nano_history
Run Code Online (Sandbox Code Playgroud)

以后,文件的所有权将不会改变。

我测试过:

% ls -l .nano_history
ls: cannot access .nano_history: No such file or directory

% sudo nano ~/tmp/<any_file>
Run Code Online (Sandbox Code Playgroud)

Ctrl+W

搜索任何东西。

Ctrl+X

% ls -l .nano_history
-rw------- 1 root root 6 Mai  3 22:08 .nano_history

% sudo chown aboettger:aboettger .nano_history
% ls -l .nano_history                    
-rw------- 1 aboettger aboettger 6 Mai  3 22:08 .nano_history

% sudo nano ~/tmp/<any_file>
Run Code Online (Sandbox Code Playgroud)

Ctrl+W

搜索任何东西。

Ctrl+X

% ls -l .nano_history  
-rw------- 1 aboettger aboettger 11 Mai  3 22:11 .nano_history
Run Code Online (Sandbox Code Playgroud)


Abd*_*ull 9

当您不拥有通常包含在您的主目录中的 .nano_history 文件时,就会发生这种情况。当我第一次在我的 Ubuntu 安装上运行 nano 和 sudo 时,这发生在我身上。这意味着 .nano_history 由 root 拥有并且不可读,除非每次都将 sudo 与 nano 一起使用。不使用时,nano 会在启动时抱怨“权限被拒绝”。将其准确复制并粘贴到您的终端中以解决问题:

sudo chown $USER:$(id -gn) $HOME/.nano_history
Run Code Online (Sandbox Code Playgroud)