Linux 设置自定义shell脚本和目录的权限

Linux 设置自定义shell脚本和目录的权限,linux,bash,shell,Linux,Bash,Shell,我的问题是关于自定义shell脚本和自定义shell脚本目录本身的权限和所有权设置。这只是为了我个人机器的安全,但我想知道任何情况下的最佳实践 我的脚本目录是/usr/local/scripts/ 我应该给自己写脚本的特权吗?还是只有根 其他人是否应该具有只读权限 root用户是否应该拥有我的任何脚本/目录的所有权 我仍在学习UNIX权限,因此在某种程度上,我仍然无法理解某些文件具有某些权限的含义。提前感谢。首先,我建议您将未经授权的脚本(不需要以root身份执行的脚本)放在主文件夹中(通常

我的问题是关于自定义shell脚本和自定义shell脚本目录本身的权限和所有权设置。这只是为了我个人机器的安全,但我想知道任何情况下的最佳实践

我的脚本目录是/usr/local/scripts/

  • 我应该给自己写脚本的特权吗?还是只有根

  • 其他人是否应该具有只读权限

  • root用户是否应该拥有我的任何脚本/目录的所有权


我仍在学习UNIX权限,因此在某种程度上,我仍然无法理解某些文件具有某些权限的含义。提前感谢。

首先,我建议您将未经授权的脚本(不需要以root身份执行的脚本)放在主文件夹中(通常将它们放在
~/bin
,一些发行版甚至将此目录添加到
$PATH
,以便您可以从任何目录执行它们)。这样,您就不必写入根目录,从而避免了成为根目录来编辑它们的需要

关于执行权限,几乎总是,如果您拥有读取权限,您将能够执行它,可以通过复制到另一个位置并授予它执行权限,或者通过以脚本作为第一个参数启动解释器(例如,
bash my_script.sh

我认为给其他人对我的脚本的读取和执行权限没有问题,请记住,它们将使用执行用户的权限执行,而不是您的权限。无论如何,如果他们有知识,他们将能够编写和执行它们

如果您将脚本放在主目录之外,那么它们应该由root拥有并且只能编辑(每个人都可以读取和执行它们)。这样,如果root执行它,它知道没有其他人可以更改该文件,因此它是安全的

我应该给自己写脚本的特权吗?还是只有根

我认为没有安全理由不给自己写权限——只是在系统目录中手动维护脚本很不方便。如果这些脚本是供个人使用的,最好将脚本保存在主目录中的某个位置,可能是
~/bin
,然后通过主目录中shell的启动脚本将该目录添加到
路径
变量的开头。这样,您就不需要任何特殊权限来测试脚本

其他人是否应该具有只读权限

除非您想对脚本的内容保密,否则将
read
execute
权限同时授予其他人应该不会有问题

root用户是否应该拥有我的任何脚本/目录的所有权


重要的是,其他用户不能具有脚本的写访问权限。只要所有者是您,并且您是分配给该文件的组的唯一成员,您就不必担心安全问题。将脚本放在主目录之外并不方便,否则一切都会好起来。

~/bin
添加到路径的开头会产生一个安全漏洞,如果有人能够在其中创建,比如说
ls
,那么它将被执行,而不是系统
ls
。在路径上添加自己的~/bin是很常见的,但是应该在末尾添加它。如果您真的想覆盖系统命令,我建议您使用别名。注意。我看到了这与将
添加到路径之间的相似之处。在某些情况下,我发现在开始时放置一个
bin
目录(在$HOME中的某个地方)是有用的—例如,如果我在本地安装了较新版本的
perl
python
。因此,使用
#的脚本/shebang中的bin/env perl
将使用安装在我的主目录中的perl。