小编rhu*_*npk的帖子

普通用户可以修改 root 拥有的文件

如果该文件是 root 使用以下命令创建的纯文本文件:

echo 'foo' > ./file.txt
Run Code Online (Sandbox Code Playgroud)

你的ls -l是:

-rw-r--r-- root root ./file.txt
Run Code Online (Sandbox Code Playgroud)

但作为普通用户,我可以使用vim保存:w!或使用sed命令来更改此设置,当发生这种情况时,拥有此文件的用户和组将更改为:

-rw-r--r-- user user ./file.txt
Run Code Online (Sandbox Code Playgroud)

我注意到,当删除其他人的读取权限后,chmod o-r ./file.txt我无法再进行更改,但是当恢复时,chmod o+r ./file.txt我可以再次进行更改。

这里发生了什么?为什么“其他”读取权限使我能够更改 root 拥有的文件并更改用户和组所有权?

为什么会发生这种情况?

PS:我使用的是Debian SID。

permissions files

22
推荐指数
2
解决办法
2907
查看次数

为什么行尾的反斜杠会放置过多的空格?

我想了:

#!/bin/bash
cmd --options \
    option=value,\
    option=value,\
    option=value,\
    option=value
Run Code Online (Sandbox Code Playgroud)

但运行bash -x我得到:

cmd --options option=value, option=value, option=value, option=value
Run Code Online (Sandbox Code Playgroud)

这会导致错误。

我怎样才能做到这一点,这样 bash 就不会自动放置这个空格?

bash shell-script whitespace

7
推荐指数
4
解决办法
2461
查看次数

如何在我的所有脚本中自动执行“命令-p”?

我想使用以下命令执行脚本中的所有命令command -p

command -p pwd
Run Code Online (Sandbox Code Playgroud)

因为我可能会在脚本中执行一些命令,其名称被其他一些自定义用户脚本使用,在这种情况下,该command命令会导致执行系统命令而不是用户的命令(这是一个友好的解释,如果您想要从技术上了解幕后真正发生的事情,请查阅手册页)这就是我想要的。

好吧,这样我就不必command -p每次在脚本中调用任何命令时都在行首逐字输入“”,有没有办法command -p在脚本中定义全局的行为?

linux bash shell-script shell-builtin

1
推荐指数
1
解决办法
230
查看次数