我有一个 ubuntu 服务器。我使用创建了一个简单的index.html
文件touch
。并尝试使用nano
,结果权限被拒绝。为什么是这样?如果我只是在服务器上创建文件,为什么我一开始就没有写权限?我的第二个问题是,如果我想更改数字格式的权限644
(服务器上的 html 文件应该设置成什么?) 我如何查看当前的内容 如何转换-rw-rw-r--
为数字格式?我想-ls -l
用数字权限格式而不是-rw-rw-r--
. 该index.html
文件在服务器上运行正常。
thomas@vannevar:~/public/example.org/public$ touch index.html
thomas@vannevar:~/public/example.org/public$ ls
index.html
thomas@vannevar:~/public/example.org/public$ nano index.html
Error reading /home/thomas/.nano_history: Permission denied
Press Enter to continue starting nano.
thomas@vannevar:~/public/example.org/public$ ls -l
total 0
-rw-rw-r-- 1 thomas thomas 0 May 17 13:57 index.html
thomas@vannevar:~/public/example.org/public$
这行得通
您的问题是读取 nano 的历史文件 (.nano_history),正如这个大量空白的错误行中非常清楚地指出的那样:
这是在 nano 打开你的文件之前打开的(这很好用,因为 644 是可以的)
看起来您的主文件夹/.nano_history 的权限可能设置得太紧了。
根据您的评论:
-rw------- 1 root root 111 May 17 14:13 /home/thomas/.nano_history
可以看到只有root用户有读写权限,其他没有。
你想做什么
sudo chown thomas:thomas ~/.nano_history
来解决这个问题。鉴于您所展示的内容,您的问题几乎可以肯定与您
sudo nano
在过去某个时候使用 编辑文件有关。Nano 在主目录中创建了一个历史文件,但具有 root 权限。使用
sudo rm /home/thomas/.nano_history
或sudo chown thomas:thomas /home/thomas/.nano_history
修复该文件的权限。如果您不小心,您使用 sudo 运行的许多程序可能会产生副作用,即在您的主目录中创建 root 拥有的文件。如果您知道这会发生在像 nano 这样的特定程序中,您最好使用
sudo -i
以根环境启动一个新的 shell,然后运行您的命令。权限相当容易理解。每个“组”中有 3 个位置用于权限。读、写、执行。因此,您可以将其视为 3 组 3 位。
例如,权限集
-rw-rw-r--
等于-110110100
. 你可以将它们分成 3 位组(所以rw-
,,rw-
和r--
=>110
,,,110
)100
。将这些 3 位组转换为八进制(因为 2^3 == 8 )然后繁荣!你有你的号码代码。对于给定的例子:
110
= 6110
= 6100
= 4快捷方式:“执行”位 (x) 将八进制值加 1,“写”位 (w) 加 2,“读”位 (r) 加 4。
(644 将是 -rw-r--r--)