Почему я могу выполнить программы, не читая их?
$ echo 'echo "foo"' > test && chmod 100 test && ./test
foo
Я думаю, Ваша установленная тестовая команда и случай будут только работать под root
(суперпользователь), на основе моих тестов с той же самой командой на моем поле Ubuntu Trusty.
Это - непривилегированная учетная запись:
[teward /home/teward/tmp/]% echo 'echo "foo"' > test && chmod 100 test && ./test
zsh: permission denied: ./test
Это как корень:
[god /home/teward/tmp/]# echo 'echo "foo"' > test && chmod 100 test && ./test
foo
(Относительно god
на моей корневой подсказке: Я имею root
и мой пользователь, использующий zsh
как оболочка входа в систему. Мой PS1
для ZSH заменяет 'корень' 'богом' для пользователя root в моей системе, но это является все еще 'корневым'. Уровень полномочий обозначается символом направо от заключительной квадратной скобки - эти #
, указывает, что корень, и %
указывает на типичного пользователя, который является, как Вы знаете уровень полномочий)
, я думаю, что это вызвано тем, что 'корень' считают богом и может сделать почти что-либо. Перепроверьте пользователя, которого Вы используете.
Поскольку Ваша оболочка должна считать файл для знания, что выполниться. При удалении доступа для чтения он не может читать, он так не знает то, что Вы хотите выполняемый.