2016-02-29 79 views
0

我的目标是检查是否没有为目录设置执行位。bash命令检查目录是否可执行

我更改了/ 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 

check if a file is executable

帖e对于普通文件按预期工作,但不适用于任何目录,但我不知道为什么。有任何想法吗?

更新#2

我写了一个小bash脚本只在下方留言,建议的代码。

结果:

[[email protected]/]# cat tst.sh 
#!/bin/bash 
if [ ! -x /tmp ]; then echo 'not executable!'; fi 
exit 

[[email protected]/]# ./tst.sh 
[[email protected]/]# 

回答

1

所有你在你的问题所提供的代码是正确的(我刚刚完成测试它自己)。因此,脚本中的其他内容正在失败。如果可以,请尝试运行以下简化代码片段: if [ ! -x /tmp ]; then echo 'not executable!'; fi

作为一个快速提示,Unix系统中目录的“可执行”标志实际上并不意味着“可执行”。实际上,该目录被标记为可搜索的方式。虽然我不确定这是否有助于解决您正在处理的问题,但它是现有字段的一个有趣用法。

+0

退房更新#2在我的岗位。我只用简单的代码片段写了一个迷你bash脚本,然后运行它。没有输出。 –

+0

嗯......你可以再次在/ tmp上回显权限吗? 'ls -lAh/tmp' – Toberumono

+0

drw-rw-rw- 12 root root 4096 Mar 1 13:15 tmp –

0

您或许可以使用find命令挑出任何目录没有可执行位

notex=$(find . -type d -maxdepth 1 -perm 666) 

我认为可以帮助..