我的目标是检查是否没有为目录设置执行位。
我更改了/tmp 的权限,以便执行位关闭。
root$: chmod 666 /tmp
root$: ls -l /
....
.....
drw-rw-rw- 12 root root 4096 Feb 29 15:17 tmp
在我的 bash 脚本中,我尝试了以下内容但没有成功:
if [ ! -x /tmp ]; then
......
我已经尝试了以下链接中的所有建议,但唯一不同的语法方法也对我不起作用:
if [[ ! -x /tmp] ; then
检查文件是否可执行
这些对常规文件按预期工作,但不适用于任何目录,但我不知道为什么。有什么想法吗?
更新 #2
我写了一个迷你 bash 脚本,只使用了下面评论中建议的代码。
结果:
[root@mc/]# cat tst.sh
#!/bin/bash
if [ ! -x /tmp ]; then echo 'not executable!'; fi
exit
[root@mc/]# ./tst.sh
[root@mc/]#
问题中提供的所有代码都是正确的(我自己刚刚完成了测试)。 因此,按理说,脚本中的其他内容正在失败。 如果可以,请尝试运行以下简化代码段: if [ ! -x /tmp ]; then echo 'not executable!'; fi
作为快速旁注,Unix系统中目录的"可执行"标志实际上并不意味着"可执行"。 这实际上是将目录标记为可搜索的方式。 虽然我不确定这是否有助于解决您正在处理的问题,但这是对现有字段的有趣用法。
也许可以使用 find 命令挑出任何没有可执行位的目录
notex=$(find . -type d -maxdepth 1 -perm 666)
我认为这可能会有所帮助..