无法打开输出文件:权限被拒绝

use*_*094 4 command-line

所以我对 Ubuntu 完全陌生。我已经设置了一个共享文件夹,里面有几个 c 程序,当我在 Ubuntu 中编译时,例如:

gcc file.c -o fileTest
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

/usr/bin/ld: cannot open output file fileTest: Permission denied
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我确定我对 C 文件的权限是正确的,所有文件都具有 'rwx' 权限。

我是否也必须更改目录的权限?

我是一个完全的新手,所以很抱歉。

Lou*_*sen 7

是的,您还必须更改目录的权限。

这是因为如果您只对目录中的文件有写权限,则不能因为没有对该文件的写权限而创建新文件(它不存在,因此没有创建它的权限) .

如果您对该目录具有写权限,则可以在其中创建一个文件,因为您对该目录本身具有写权限。

让自己成为所有者(终端方式):

  1. 检查您的用户名:

    whoami
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使自己成为目录及其内容的所有者:

    sudo chown -R "$USER:" /path/to/the/directory
    
    Run Code Online (Sandbox Code Playgroud)

    -R标志代表递归,因此该目录及其所有子文件和子目录将更改所有者。删除-R标志以更改目录本身的权限。

现在您应该能够创建文件或目录,因为您现在是目录及其所有内容的所有者。如果仍然不能,请使用以下命令授予所有者对该目录及其内容的写权限:

chmod -R 700 /path/to/the/directory
Run Code Online (Sandbox Code Playgroud)