我有一个目录,但我没有写入权限。我想在那里创建一个符号链接,覆盖该目录中的文件(我拥有的)。但是,我无法删除我的文件来放置符号链接,并且ln -sf /path/to/target/ /path/to/dir/file
不起作用permission denied
。所以我需要在文件中放置一个符号链接。但是怎么做呢?我在 Ubuntu 20.04 LTS 上。注意我删除了 GUI,所以它必须是终端。
答案1
修改文件是文件权限动作,删除文件是目录权限动作,替换文件是删除文件和写入新文件,这两个动作都是目录权限。
您的权限不允许您删除该文件。为了“替换”此文件,您需要在目录中拥有正确的权限。
答案2
您必须以提升的权限访问该目录,或者以对该目录具有写权限的用户或组(例如所有者或所有者组)的身份访问该目录。
即使您拥有目录中的文件,如果有人执行了 chown 或 chmod 并将您锁定,您也无法修改那里的文件,修改包括删除您拥有的文件,因为它的权限自上而下传播。
但是您能列出目录的内容吗,因为有些内容没有意义。
考虑一下:
sudo su
mkdir test
cd test
touch test.txt
chown myuser:myuser test.txt
cd ..
chmod 644 test
现在,当您退出 shell 时,您甚至无法列出目录的内容。但是,如果您将权限修改为 655,则可以编辑该文件。您需要对该目录具有执行权限才能访问其内容,因此权限为 655。
权限 644 下的示例:
cd test
bash: cd: test: Permission denied
ls test
ls: cannot access 'test/test.txt': Permission denied
但是,如果目录权限为 655,则拥有该文件的用户帐户可以编辑该文件。
如果是这种情况,并且你的用户拥有该文件,你可以通过以下方式自行将权限更改为 700 之类的权限
chmod 700 test.txt
但是,如果没有该目录的写权限,您将无法删除该文件,所以其他人必须为您执行这些更改。