【问题标题】:Bash: Permission denied when trying to open a fileBash:尝试打开文件时权限被拒绝
【发布时间】:2010-10-01 20:30:37
【问题描述】:

我最近决定尝试学习一些 bash 脚本,作为一个有趣的练习,我决定制作一个脚本来打开一个日常文件,以便我在脚本运行时写笔记。

它工作正常,直到我退出并稍后重新登录系统,当我收到错误时

/usr/local/bin/notes: line 45: /home/MY_USERNAME/notes/2010-10-01:Permission denied

Code

我可能弄错了,但这似乎不需要额外的权限,不是吗?

编辑器设置为nano

文件的权限是-rw-rw-r--

脚本的权限是-rwxr-xr-x

【问题讨论】:

  • 你的 $EDITOR 设置是什么?文件的权限是什么?此外,最好将代码包含在问题本身中(在代码块中),以便问题更好地存档,并且一旦 pastebin 消失就不会变得毫无意义。
  • 一切都需要权限。没有“额外”权限。您必须执行ls -lls -ld 才能查看文件具有哪些权限。
  • 您应该更新以包含问题完整性的代码。 Pastbin id 不再有效。

标签: linux bash


【解决方案1】:

检查文件的权限

ls -l /path/to/your/file

你应该看到类似的东西

-rw-r--r--

r 表示可读,w 可写,x 可执行。

第一组适用于您的用户,第二组三个适用于您的组,第三组适用于任何人。

所以在我的示例中,我显示的文件对我来说是读/写的,并且对于我的组和任何其他用户都是只读的。

使用 chmod 命令更改权限。

chmod 744 file

将使文件为您读/写/执行,并为用户/世界读取。

【讨论】:

    【解决方案2】:

    我的猜测是在

    $EDITOR $DAILY_FILENAME 
    

    $EDITOR 为空,因此它正在尝试执行不可执行的$DAILY_FILENAME。可能在您测试时手动设置了 EDITOR,但没有将其添加到您的 .bashrc(或其他)文件中。

    使用-x 选项来证明这一点。

    【讨论】:

    • 是的,我想我没有永久设置编辑器变量,我只是为那个会话设置了它。谢谢
    【解决方案3】:

    如果我不得不猜测,我会建议 $EDITOR 环境变量由于某种原因未定义。看起来您的脚本正在尝试执行注释文件 - 因为这是不可执行的,您会收到无用的错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 2013-01-08
      • 2016-05-27
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      相关资源
      最近更新 更多