创建后无法修改文件

Moh*_*lmy 1 permissions

我使用创建了一个文件

sudo vim filename
Run Code Online (Sandbox Code Playgroud)

但是创建后我无法修改它。

我怎样才能修改这个文件?

Sh1*_*d0w 5

通过执行这个命令

sudo vim filename
Run Code Online (Sandbox Code Playgroud)

您创建新文件,其所有者是 root 用户。您可以通过执行来确认ls -al。从输出中可以看到文件所属的所有者和组被设置为root。

如果您尝试使用普通用户编辑它,您将无法进行编辑,因为该文件不属于您的用户。由于权限的原因,您再次可以读取文件但不能写入文件。您可以使用ls -al命令从命令行检查它们。它应该是这样的:

-rw-r--r-- 1 root   root       4 Apr  9 07:40 filename
Run Code Online (Sandbox Code Playgroud)

第一部分-rw-r--r--表示只有所有者可以读写文件,同一组的用户和其他用户只能读取文件。

这是一个很好的图表,描述了权限的含义:

权限

如果您希望能够编辑文件,您必须以 root 用户身份进行编辑 - 这几乎总是最好的方法:

sudo vim filename
Run Code Online (Sandbox Code Playgroud)

如果你想以普通用户的身份编辑它,你可以为其分配额外的权限,(但你不应该对你的主目录外的系统文件这样做 - 改用sudo编辑它们):

sudo chmod 777 filename
Run Code Online (Sandbox Code Playgroud)

这样,每个用户都可以读取、写入和执行该文件。这很少是一个好主意。

仅向所有其他用户授予写入权限:

sudo chmod o+w filename
Run Code Online (Sandbox Code Playgroud)

否则,如果您希望文件只能由您写入,您可以将所有者更改为您:

sudo chown yourusername:root filename
Run Code Online (Sandbox Code Playgroud)