如何测试具有权限000的文件的存在?

时间:2016-06-04 11:42:16

标签: linux bash file-permissions

由于某些原因我不知道,我的文件权限设置为'000'。

我想chmod u+r,因为我需要压缩整个文件夹。并且有了000,zip会警告读取此文件时出现问题。

我想测试这个文件的存在,因为不是每次我都进入该文件夹。

但我确认使用以下结果是布尔值假

if [ -f $file_path ]; then 
...

-e开关也返回false。

如何测试bash脚本中是否存在文件?

2 个答案:

答案 0 :(得分:2)

您可以使用以下语句在目录中搜索具有000权限的文件:

find /tmp  -perm 000

其中/tmp将是您的目录。

答案 1 :(得分:0)

按照你的建议做:

$> touch none_foo
$> chmod 000 none_foo
$> if [ -f "none_foo" ]; then printf "yes\n"; else printf "no\n"; fi
yes

但是如果封闭文件夹有000,你注定; - )

样品(从上述状态继续):

$> mkdir disclosed
$> mv none_foo disclosed/
# still ok:
$> if [ -f "disclosed/none_foo" ]; then printf "yes\n"; else printf "no\n"; fi
yes
# now a non-disclosure:
$> chmod 000 disclosed
$> if [ -f "disclosed/none_foo" ]; then printf "yes\n"; else printf "no\n"; fi
no

因此文件路径中的文件夹禁止"进入"你必须先纠正它。 无论如何(正如alreday建议的另一位评论者所说):在shell中使用文字和变量的引号......

正如@JeremyJStarcher在回答中所说,你也可以使用:

$> find ./ -perm 000
.//disclosed
find: .//disclosed: Permission denied

但正如您所见,具有足够权限的用户可以减轻文件夹陷阱,以便将000增加到更易于访问的内容......