2016-06-04 7 views
0

Aus irgendeinem Grund weiß ich nicht, ich habe eine Datei mit Berechtigungen auf "000" festgelegt.Wie kann ich das Vorhandensein einer Datei mit Berechtigungen 000 testen?

Ich möchte chmod u+r es, weil ich seinen gesamten Ordner zippen muss. Und mit 000 warnt zip vor einem Problem beim Lesen dieser Datei.

Ich möchte das Vorhandensein dieser Datei testen, weil nicht jedes Mal ich es in den Ordner habe.

Aber ich festgestellt, dass die folgenden Ergebnisse mit einem boolean false ist

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

Auch die -en Schalter false zurück.

Wie kann ich testen, ob die Datei von einem Bash-Skript existiert?

+1

Ihre Diagnose ist falsch. Die Berechtigungen der Datei sind nur von Bedeutung, wenn Sie versuchen, die Datei zu öffnen. Vielleicht überprüfen Sie die Berechtigungen des enthaltenen Verzeichnisses. – tripleee

+1

Das Fehlen von Zitaten könnte jedoch ein Problem sein. Probieren Sie '[-f" $ file_path "]' – tripleee

Antwort

2

Sie erweitern können ein Verzeichnis nach Dateien suchen, die 000 Berechtigungen mit dieser Aussage hat:

find /tmp -perm 000 

wo /tmp wäre Ihr Verzeichnis.

0

einfach tun, wie Sie vorschlagen:

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

Aber dann, wenn die übergeordneten Ordner 000 hat man verurteilt ;-)

Probe (Fortsetzung von oben Zustand) ist:

$> 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 

Also mit Ordnern im Dateipfad, die das "Eingeben" verbieten, müssen Sie das zuerst korrigieren. Und in jedem Fall (wie ein anderer Kommentator alreday vorgeschlagen): Verwenden Sie Anführungszeichen um Literale und Variablen in der Schale ...

Als @JeremyJStarcher in seiner Antwort gepostet können Sie auch:

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

aber wie Sie sehen, der Ordner Fall durch einen Benutzer mit ausreichend Rechten gemildert werden soll, die 000 zu etwas zugänglichen ...