В Windows теперь нужно писать ./my.exe
От: Shmj Ниоткуда  
Дата: 30.06.23 03:43
Оценка: +1
Зачем же? Лишняя сущность...
Re: В Windows теперь нужно писать ./my.exe
От: Философ Ад http://vk.com/id10256428
Дата: 30.06.23 03:57
Оценка: +4
Здравствуйте, Shmj, Вы писали:


Нужно? Кто сказал?

UPD: Кому нужно?
Всё сказанное выше — личное мнение, если не указано обратное.
Отредактировано 30.06.2023 3:58 Философ . Предыдущая версия .
Re: В Windows теперь нужно писать ./my.exe
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.06.23 05:23
Оценка: +2 -1
Здравствуйте, Shmj, Вы писали:

S>Зачем же? Лишняя сущность...


1. Где, когда, при каких условиях?
2. Нет, не лишняя. Доказано опытом Unix.
The God is real, unless declared integer.
Re[2]: В Windows теперь нужно писать ./my.exe
От: Философ Ад http://vk.com/id10256428
Дата: 30.06.23 05:44
Оценка:
Здравствуйте, netch80, Вы писали:

N>2. Нет, не лишняя. Доказано опытом Unix.


Что именно нелишняя сущность? Как доказано?
Всё сказанное выше — личное мнение, если не указано обратное.
Re: В Windows теперь нужно писать ./my.exe
От: karbofos42 Россия  
Дата: 30.06.23 06:56
Оценка: 1 (1) +1
Здравствуйте, Shmj, Вы писали:

S>Зачем же? Лишняя сущность...


В Windows или Powershell?
Сделали это для безопасности.
По умолчанию ищет только в переменной окружения PATH.
Хочешь запустить именно из текущего каталога — добавляй префикс ./
Re[3]: В Windows теперь нужно писать ./my.exe
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.06.23 07:02
Оценка: +1 :)
Здравствуйте, Философ, Вы писали:

N>>2. Нет, не лишняя. Доказано опытом Unix.


Ф>Что именно нелишняя сущность?


Явный путь даже для текущего каталога.

Ф> Как доказано?


Многочисленными проблемами безопасности при случайном или намеренно подсунутом запуске одноимённой программы из текущего каталога.
The God is real, unless declared integer.
Re[4]: В Windows теперь нужно писать ./my.exe
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.06.23 15:49
Оценка: +1
Здравствуйте, netch80, Вы писали:

N>Многочисленными проблемами безопасности при случайном или намеренно подсунутом запуске одноимённой программы из текущего каталога.


Можно перечислить хотя бы первые три из "многочисленных" проблем, а также описать варианты случайного и намеренного "подсовывания" программы?
Re: В Windows теперь нужно писать ./my.exe
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.06.23 17:16
Оценка: 1 (1)
Здравствуйте, Shmj, Вы писали:

S>Зачем же? Лишняя сущность...


Если это правда, то это как в UNIX.

В UNIX так сделано неспроста: выбор программы, которая запустится в ответ на команду, не должен зависеть от текущей директории. Это и небезопасно (мало ли что в текущей директории валяется, это может быть содержимое архива, скачанного из недоверенного источника) и в целом, может приводить к сюрпризам, усложняющим жизнь.
Re[4]: В Windows теперь нужно писать ./my.exe
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.06.23 17:19
Оценка:
Здравствуйте, netch80, Вы писали:

N>Многочисленными проблемами безопасности при случайном или намеренно подсунутом запуске одноимённой программы из текущего каталога.


В начале 70-х, когда UNIX только изобрели (а я уверен, что это решение было принято уже тогда) на безопасность всем было, по большому счету, начхать. Думаю, ребят скорее заботила консистентность поведения системы. Ну действительно, не дело это, когда выбор запускаемой программы зависит от текущей директории.
Re[2]: В Windows теперь нужно писать ./my.exe
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.06.23 17:26
Оценка: -1
Здравствуйте, Pzz, Вы писали:

Pzz>В UNIX так сделано неспроста: выбор программы, которая запустится в ответ на команду, не должен зависеть от текущей директории. Это и небезопасно (мало ли что в текущей директории валяется, это может быть содержимое архива, скачанного из недоверенного источника)


В UNIX архивы, скачанные из недоверенных источников, не только автоматически получают право на выполнение, но и автоматически исполняются?
Re[5]: В Windows теперь нужно писать ./my.exe
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.06.23 17:29
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Думаю, ребят скорее заботила консистентность поведения системы.


Вот разве что.

Pzz>действительно, не дело это, когда выбор запускаемой программы зависит от текущей директории.


Если все команды набираются вручную, и в каких-то каталогах лежат наборы тематических скриптов, то удобнее работать с ними из их собственного каталога, нежели прописывать в PATH или добавлять "./".
Re[3]: В Windows теперь нужно писать ./my.exe
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.06.23 17:39
Оценка: +5 :))) :))
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>В UNIX архивы, скачанные из недоверенных источников, не только автоматически получают право на выполнение, но и автоматически исполняются?


Ну вот ты выкачиваешь foo.tar.gz. Распаковываешь. Заходишь внутрь. А там лежит файл с именем ls, правами 0755 и таким вот содержимым:

#!/bin/sh
rm -rf $HOME


А ты, такой, говоришь ls стоя в этой внутренней директории, вынутой из архива. Ну, чтобы список файлов посмотреть. А потом уже всякое такое говоришь, уже не компьютеру, а ртом, чего я даже воображать не буду, чего говоришь.
Re[4]: В Windows теперь нужно писать ./my.exe
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.06.23 17:54
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну вот ты выкачиваешь foo.tar.gz. Распаковываешь. Заходишь внутрь. А там лежит файл с именем ls, правами 0755 и таким вот содержимым:


Pzz>
Pzz>#!/bin/sh
Pzz>rm -rf $HOME
Pzz>


Pzz>А ты, такой, говоришь ls стоя в этой внутренней директории, вынутой из архива. Ну, чтобы список файлов посмотреть.


Вы действительно полагаете, что именно подмена ls является наиболее существенным риском в этой схеме?

И что, tar по умолчанию распаковывает с правами выполнения? (я недостаточно близко знаком с унихами, не обращал на это внимания).
Re[5]: В Windows теперь нужно писать ./my.exe
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.06.23 17:58
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>И что, tar по умолчанию распаковывает с правами выполнения? (я недостаточно близко знаком с унихами, не обращал на это внимания).


tar распаковывает с теми правами, с которыми запаковано. А что он должен делать? И как сохранять точные копии набора файлов, если tar будет умничать?

UNIX-овский подход очень простой: файл делает исполняемым сочетание прав и положения в пути. Поэтому распаковать в просто какую-то временную директорию относительно безопасно (относительно — потому, что в имени файла может быть ESC-последовательность, которая "отразится" от терминала вредной командой — но это уже зловредство совершенно другого порядка)
Re[6]: В Windows теперь нужно писать ./my.exe
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.06.23 18:10
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>потому, что в имени файла может быть ESC-последовательность, которая "отразится" от терминала вредной командой — но это уже зловредство совершенно другого порядка)


ls по умолчанию такие символы экранирует.

$ touch `printf "\x1b[999m"`
$ ls
''$'\033''[999m'
$ ls -b
\033[999m
The God is real, unless declared integer.
Re[6]: В Windows теперь нужно писать ./my.exe
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 30.06.23 18:12
Оценка: -1
Здравствуйте, Pzz, Вы писали:

Pzz>tar распаковывает с теми правами, с которыми запаковано.


Если так, то это явная глупость.

Pzz>А что он должен делать?


Сбрасывать флаг E при распаковке, если явно не указано обратное (соответствующим ключом командной строки).

Pzz>И как сохранять точные копии набора файлов, если tar будет умничать?


К сохранению претензий нет — только к восстановлению (распаковке).
Re[7]: В Windows теперь нужно писать ./my.exe
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.06.23 18:12
Оценка:
Здравствуйте, netch80, Вы писали:

N>ls по умолчанию такие символы экранирует.


Ну он не всегда был таким умным...
Re[5]: В Windows теперь нужно писать ./my.exe
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.06.23 18:13
Оценка: 1 (1)
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, netch80, Вы писали:


N>>Многочисленными проблемами безопасности при случайном или намеренно подсунутом запуске одноимённой программы из текущего каталога.


Pzz>В начале 70-х, когда UNIX только изобрели (а я уверен, что это решение было принято уже тогда) на безопасность всем было, по большому счету, начхать. Думаю, ребят скорее заботила консистентность поведения системы. Ну действительно, не дело это, когда выбор запускаемой программы зависит от текущей директории.


А "в начале 70-х" как раз запуск из текущего каталога допускался.
Запрет пошёл, насколько помню, где-то при переходе к System III и ранним BSD.
The God is real, unless declared integer.
Re[6]: В Windows теперь нужно писать ./my.exe
От: Pzz Россия https://github.com/alexpevzner
Дата: 30.06.23 18:17
Оценка:
Здравствуйте, netch80, Вы писали:

N>А "в начале 70-х" как раз запуск из текущего каталога допускался.

N>Запрет пошёл, насколько помню, где-то при переходе к System III и ранним BSD.

О, я не знал.
Re[8]: В Windows теперь нужно писать ./my.exe
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 30.06.23 18:19
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, netch80, Вы писали:


N>>ls по умолчанию такие символы экранирует.


Pzz>Ну он не всегда был таким умным...


По-моему, таки очень давно, только умолчательная экранировка была другая — например просто писался '?' на все непечатные (!isprint(c)) символы (во FreeBSD я очень долго помню такой режим).
Ну и разумеется это всё если опознано что на терминал. Иначе экранировка не включалась.
The God is real, unless declared integer.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.