我已经更新了所有权,而不是更改文件权限。
我本应该用chmod 777 <filename>
但却用了chown 777 <filename>
。
例子:
[john@sv1:/tmp]$ touch etst_test.txt
[john@sv1:/tmp]$ ls -lrt etst_test.txt
-rw-rw-r-- 1 deploy deploy 0 Oct 17 18:29 etst_test.txt
[john@sv1:/tmp]$ sudo chown 777 etst_test.txt
[john@sv1:/tmp]$ ls -lrt etst_test.txt
-rw-rw-r-- 1 777 deploy 0 Oct 17 18:29 etst_test.txt
[john@sv1:/tmp]$ vi etst_test.txt
我不喜欢这种情况发生,我想设置一些预防方法来通过拒绝或显示一些错误来阻止我/某人。
答案1
我认为您执行此操作的唯一方法是将命令移出chown
并将$PATH
其替换为批处理文件,该文件询问您是否确实要更改所有权,如果用户回答是,则批处理文件将执行相应的chown
命令。
当然,这样做的缺点是,一旦你更新了 gnu coreutils,你的批处理版本chown
将被覆盖(取决于你的包管理器在看到非标准版本时如何响应chown
)。
您还可以信任root
做正确的事情并将此命令的可用性限制为仅root
通过使用chmod
(并小心使用chmod
而不是chown
:-))chown
然后也许摆弄sudo
此命令的特权。
就像 @qasdfdsaq 在评论中提到的那样,分配一个别名是最好的方法,这样二进制文件就不会被修改,也不会让包管理器感到困惑。因此,创建一个名为mychown
(或任何你喜欢的名字)的脚本来执行询问,将其放在/usr/local/bin
或类似的地方,并有一个指向chown
该脚本的别名。