2016-02-29 83 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) 

我認爲可以幫助..