Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 16

Блок цитаты закрыт сразу после блока кода. Не знаю, почему отображается неправильно.
Посмотрел код, вижу обратное. Могу даже картинку привести, но лень: там и так всё тривиально :-)
Ключевое слово blockquote.
Полезная штука, а почему нельзя ограничиться условием getline(1) =~ "^#!"?
По-моему, шелл будет пытаться запустить любой скрипт с shebang
может, паранойя?
$ touch tmp
$ vim test
$ ls
test tmp
$ cat test
#!/bin/rm tmp
$ chmod +x test
$ ./test
$ ls
$

Вобщем, я бы еще проверял, что после /bin идет. =)
Вообще-то упомянутый скрипт только упрощает жизнь, излишне перегружать его какими-либо проверками безопасности.

Юниксвей — позволить пользователю самому решать, что он делает.
Предположим крайнюю ситуацию. Вы, к примеру, пошли пить кофе, а в это время добрый дядька подправил первую строчку на #!/bin/rm -rf /. Вы возвращаетесь на рабочее место, и, ничего не подозревая, запускаете свой скрипт с правами root`а?) А лишнее условие скрипт не перегрузит, а лишь обезопасит.
Как правило, люди перед уходом пить кофе сохраняют написанное. Соответственно, если добрый дядечка напакостит, атрибут уже будет проставлен. Да и никто не помешает ему в конце концов самому выполнить тот же chmod :)
и если какой то дядечка захочет напакостить имея доступ к вашему компу — он вполне сможет придумать что и похитрее
и что дальше? первая строчка идет как комментарий. Она будет проигнорирована интерпретатором
сори протупил
ну и ничего не случится, ибо шелл обработает сию строчку как /bin/rm "-rf /"
Приведенный трюк по удалению одного файла (если права позволяют) сработает, а вот, например, ключи «rf» rm уже не получит, как верно заметил coldflame.

С другой стороны, #!/bin/rm в качестве первой строки это дрогуй очень распространенный трюк, спомощью которого делаются «одноразовые» сценарии, которые сразу самоуничтожаются после выполнения, что порой очень полезно.

Last but not least, если у злонамеренного пользователя есть доступ к системе во время отсутствия хозяина, то это грубое нарушение базовых правил безопасности и, соглашаясь с sergicus, следует отметить, что редактирование подобного исполняемого файла далеко не самое ужасное из возможных вариантов развития событий. :) Блокировать экран нужно, отходя от рабочего места, что ли… %) Приведенный способ должен облегчить жизнь в первую очередь хозяину, а об упомянутом случае должна заботиться политика безопасности.
Спасибо за «silent», а то я всё думал, как отучить вим моргать при перегенерации tags :)
au BufWritePost * if getline(1) =~ "^#!.*/bin/"|silent !chmod a+x %|endif
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации