这里有一个脚本,我想在 freebsd 中将其创建为端口,然后将其制作为包,以便我可以在某些机器上安装。脚本如下。
#!/usr/local/bin/bash
if [ ! -f "/suid.old" ]
then
find / -perm -4000 -o -perm -2000 -ls > /suid.old
else
find / -perm -4000 -o -perm -2000 -ls > /suid.new
diff suid.old suid.new > newchanges
fi
exit 0
if [ -s "/newchanges" ]
then
mail -s "changes has occured" [email protected]
else
mail -s "No changes has occured" [email protected] /newchanges
fi
我怎样才能做到这一点?
答案1
如果您只安装一个小脚本,我建议您手动安装。您可以使用文件shar
,但这似乎有点过头了。
我看到的最大问题是,首先,它将bash
位于不同系统上的不同位置,但是脚本中没有任何特定于 Bash 的内容,因此您可以将 shebang 更改为:
#!/bin/sh
或者
#!/usr/bin/env bash
为了便于携带。
其次,你需要为剧本选择一个地点。我觉得这个地点/usr/local/bin
和任何地点都一样好。
第三,您需要chown
设置所有权和chmod
权限。
第四,您应该为输出文件选择更好的位置。如果它们仅供临时使用,则应在 中创建它们,/tmp
而不是您拥有suid.old
和suid.new
要去的根目录或您要去的当前目录newchanges
。否则,var
您可能希望在 中的某个地方放置更多持久数据。也许/var/local/suid
。
第五,exit
阻止第二个if
被评估,因此永远不会发送任何邮件。
第六,您可能希望mv suid.new suid.old
在某个时候进行比较,以便下次检查时比较最近保存的数据。
第七,最后一个邮件命令应该将文件通过管道传输或重定向。它不能用作参数。并且两个邮件命令应该互换,这样您就不会在文件为空时发送邮件,也不会在文件不为空时发送邮件。
if [ -s "/newchanges" ]
then
mail -s "No changes have occurred" [email protected] < /path/to/newchanges
else
mail -s "changes have occurred" [email protected]
fi
答案2
一个 shell 脚本的端口太小了——正如 Dennis 所说,我会根据需要将其复制到各个机器上(或者手动创建一个包,但这很麻烦)。
我也不确定它是否具有足够的通用实用性以将其纳入官方端口集合(特别是,作为日常安全审计的一部分,已经有“setuid 二进制文件”检查)。
综上所述,可以找到有关创建端口的详细信息在《波特手册》中,并且您可以随时为您的站点推出本地端口。