我正在学习 sh 制作一些定制功能。我正在为个人脚本寻找一个安全位置,因为我从堆栈交换中检查,有人说将个人脚本放在下面~/bin
可能会探索恶意软件,例如 make als()
真正执行类似的操作rm -rf
。
答案1
根据 ilkkachu 的评论进行编辑。我忘记了文件的写保护并不能保护它不被删除,所以它也需要位于写保护的文件夹中。
如果出现以下情况,您的文件将需要密码才能修改
- 只有所有者有写权限
- 所有者是 root
即便如此,任何人仍然可以删除该文件,然后用自己的内容重新创建它。为了防止这种情况,需要将该文件放置在没有写入权限的文件夹中。该文件夹也可以删除,所以它还需要位于受保护的文件夹中,ETC一直到/
...
换句话说,您希望文件权限如下所示:
.rw-r--r-- root
它可以让你的普通用户 shell 运行它,但需要 sudo 来修改它;或者
.rwxr-xr-x root
如果它还需要可执行。
并且该文件之间的所有包含文件夹都/
需要如下所示:
drwxr-xr-x root
幸运的是,大多数顶级系统文件夹都符合home
要求,因为它们只能由 root 写入。我不确定惯例是什么,让我们举个/usr/share
例子。
因此,从一个普通文件开始~/myscripts/script.sh
:
# change file permissions to .rw-r--r--
chmod 644 myscripts/script.sh
# or to .rwxr-xr-x
chmod 755 myscripts/script.sh
# set permissions on the folder (they should be like this by default already)
chmod 755 myscripts
# make root the owner
sudo chown root:root myscripts/script.sh
sudo chown root:root myscripts
# place it in one of the root folders
sudo mv myscripts /usr/share/
如果您担心该攻击媒介,您应该确保所有自动运行的 shell 脚本都受到类似的保护:.bashrc、.bash_profile...(我不知道它是否会产生不良副作用,还没有)尝试过)。您还必须锁定指向新位置的任何符号链接或配置文件。