sUn*_*789 2 permissions command-line bash
我目前正在学习 shell 命令,其中一项练习是创建一个包含各种目录和子目录的结构。
我写道ls -laR > hello,它应该创建一个名为hello. 但是,bash: hello: permission denied即使我在开头输入 sudo ,我也会收到以下消息。
该命令在另一个 Linux 发行版中有效。另外,我几分钟前ls -la在要创建文件的目录中使用过,它给了我这个:
drwxr-xr-x 2 root root 4096 Nov 26 10:56 .
drwxr-xr-x 5 root root 4096 Nov 26 10:56 ..
Run Code Online (Sandbox Code Playgroud)
根据第一黑社会我有写作权限吗?
Rad*_*anu 13
因为 root 是您要创建hello文件的目录的所有者,并且来自同一组的用户而其他用户无权在该目录中写入,所以bash: hello: permission denied运行ls -laR > hello.
此外,当您运行在sudo它前面使用的相同命令时,您将得到完全相同的错误。这是因为输出重定向(>运算符)是由 shell 完成的,而不是由 完成ls,因此对其sudo没有影响。sudo仅对 有效ls -laR。为了防止这种情况,您必须以 root 身份登录:
sudo -i
Run Code Online (Sandbox Code Playgroud)
然后你可以使用重定向:
ls -laR > hello
Run Code Online (Sandbox Code Playgroud)
否则,您可以在具有 root 权限的子 shell 中运行您的 bash 命令:
sudo bash -c "ls -laR > hello"
Run Code Online (Sandbox Code Playgroud)
最后,另一个选项,而不是通过>操作符使用重定向,您可以使用tee命令:
ls -laR | sudo tee hello
Run Code Online (Sandbox Code Playgroud)
在这种情况下sudo,您不必使用ls命令,因为与 root 和所有其他用户来自同一组的用户在该目录中具有读取和执行权限。
| 归档时间: |
|
| 查看次数: |
76582 次 |
| 最近记录: |