2015-11-06 88 views
0

我目前正在编写一个ksh脚本,用于检查粘性位以查看非特权用户是否可以执行某些命令。我想知道是否有更有效的方法来检查它。任何帮助表示赞赏。有没有办法列出用户可以执行的所有命令(KSH)?

+2

你说粘性位;这是01000位。你在考虑设置的UID(04000)和设置GID(02000)位吗?这真的很棘手。 PATH目录中的任何可执行文件都可以在不指定任何路径的情况下执行(例如,只输入'ls')。但是系统上的任何可执行文件都可以通过指定适当的路径来执行 - 当然,这取决于访问权限。然后你遇到别名和函数的问题:他们算数?那么,你确定你想在计算机上的所有文件系统上搜索可执行文件吗?因为这些文件系统中的任何一个都可以运行? –

+0

目前我有一个'ls -ltra x'的脚本,其结果是'-rwxrwx --- 1个用户xyz .... x'。我的目标是确保只有root可以执行一些命令(lssec,chsec等)。我为脚本提供了一些元数据(-r-xr-r--)并对比特进行了字符串比较。你认为有更高效或更好的方法来做到这一点?如果您有任何问题,请让我知道。谢谢回复。 – Bashidiot

+1

[不要解析'ls']的输出(http://mywiki.wooledge.org/ParsingLs),是的,有些工具是为这类事情设计的,尽管我不知道它们有多好是和JonathanLeffler一样,说这样做*非常依赖于你想要测试的东西。 –

回答

0

发现(1)是你的朋友(如果不是,安装GNU找到):

find/-type f -executable 
相关问题