我有一台 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$
这有效
答案1
您的问题是读取 nano 的历史文件(.nano_history),正如这个大量空白的错误行所清楚表明的那样:
thomas@vannevar:~/public/example.org/public$ nano index.html
Error reading /home/thomas/.nano_history: Permission denied
Press Enter to continue starting nano.
这是在 nano 打开文件之前打开的(这很好用,因为 644 就可以了)
看起来你的主文件夹/.nano_history 的权限可能设置得太严格了。
根据您的评论:
-rw------- 1 root root 111 May 17 14:13 /home/thomas/.nano_history
如您所见,只有 root 用户具有读写权限,其他人没有。
您想做些什么sudo chown thomas:thomas ~/.nano_history
来修复这个问题。
答案2
sudo nano
根据您所展示的内容,您的问题几乎肯定与您过去某个时间点使用编辑文件有关。Nano 在主目录中创建了一个历史文件,但具有 root 权限。
使用sudo rm /home/thomas/.nano_history
或sudo chown thomas:thomas /home/thomas/.nano_history
修复该文件的权限。
如果不小心,使用 sudo 运行的许多程序可能会产生副作用,即在您的主目录中创建 root 拥有的文件。如果您知道某个特定程序(如 nano)会发生这种情况,那么最好使用sudo -i
启动具有 root 环境的新 shell,然后运行命令。
答案3
权限相当容易理解。每个“组”中有 3 个权限位置。读取、写入、执行。因此,您可以将其视为 3 组 3 位。
例如,权限集-rw-rw-r--
等于。您可以-110110100
将其分成 3 位组(因此rw-
,,rw-
和r--
=> 110
,,)。将这些 3 位组转换为八进制(因为 2^3 == 8),然后砰!您就得到了数字代码。110
100
对于给定的例子:
110
= 6
110
= 6
100
= 4
快捷方式:“执行”位(x)将八进制值加 1,“写入”位(w)加 2,“读取”位(r)加 4。
(644 将是 -rw-r--r--)