The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Уязвимости в утилите fsck для F2FS, позволяющие выполнить код на этапе проверки ФС"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Уязвимости в утилите fsck для F2FS, позволяющие выполнить код на этапе проверки ФС"  +/
Сообщение от opennews (ok), 15-Окт-20, 23:51 
В штатной утилите fsck для файловой системы F2FS, предназначенной для работы с накопителями на основе Flash-памяти, выявлены две уязвимости (CVE-2020-6105, CVE-2020-6108), приводящие к перезаписи областей памяти за пределами выделенного буфера при проверке специально модифицированной файловой системы. Уязвимости могут быть эксплуатированы для выполнение кода с правами суперпользователя во время проверки ФС. Проблемы устранены в пакете f2fs-tools 1.14...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=53896

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от JL2001 (ok), 15-Окт-20, 23:51   –36 +/
"rust не нужен" говорили они
"C не дыра (в головах разработчика)" говорили они

ах да, я же это уже писал.... регулярно.... повторение - мать учения?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6, #10, #29, #31, #40, #43, #51, #59, #63, #69

2. Сообщение от Ананимус (?), 15-Окт-20, 23:53   +9 +/
Ждём визжащих про неправильных программистов сишников.
Ответить | Правка | Наверх | Cообщить модератору

3. Сообщение от topin89email (ok), 16-Окт-20, 00:00   +7 +/
"При этом для эксплуатации уязвимости атакующий должен иметь физический доступ к накопителю или временно получить права root для записи на уровне блочного устройства."

Ага, чтобы получить root, нужно сначала получить root. Отличная уязвимость.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #7, #12

5. Сообщение от Аноним (5), 16-Окт-20, 00:08   –3 +/
" Ключевые слова: f2fs, fsck, f*** "
Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от анонимуслинус (?), 16-Окт-20, 00:25   +3 +/
а теперь пожалуйста пример кода на раст без unsafe при работе с файловыми системами.)))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #8, #49, #54

7. Сообщение от anonymous (??), 16-Окт-20, 00:33   +2 +/
Так через флэшку же можно или ещё как.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #15

8. Сообщение от Аноним (8), 16-Окт-20, 00:43   +/
Вот пример кода, который записывает несколько байт в файловый дескриптор №1. А уж его можно направить в файл файловой системы. Выглядит впечатляюще, но поверьте, это еще далеко не все возможности раста!

fn main() {
  println!("Hello World!");
}

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #9, #38

9. Сообщение от Аноним (9), 16-Окт-20, 01:08   +5 +/
Это не пример работы с файловой системой.
А запись в файл сделает уже другая программа, которая написана скорее всего не на Rust.
0:1 не в пользу Rust, round 2, fight!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #74

10. Сообщение от Crazy Alex (ok), 16-Окт-20, 01:16   +3 +/
Ну не неси чушь, а? Bounds checking прекрасно делается в любом языке. И тормоза от него - тоже в любом языке, почему обычно и не используется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #11, #22

11. Сообщение от JL2001 (ok), 16-Окт-20, 01:38   –3 +/
> Ну не неси чушь, а? Bounds checking прекрасно делается в любом языке.
> И тормоза от него - тоже в любом языке, почему обычно
> и не используется.

в расте 3/4 bounds checking - времени компиляции, не?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #21

12. Сообщение от kmeaw (?), 16-Окт-20, 02:03   +/
Часто телефон можно увести в специальный режим, позволяющий читать/писать флешку.
Или выпаять её и переписать на программаторе.

Тогда телефон выполнит код злоумышленника во время загрузки, и вся хитроумная схема с запрятыванием неизвлекаемого ключа в аппаратное хранилище станет бесполезной.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

13. Сообщение от Анонимный (?), 16-Окт-20, 05:57   –3 +/
Астрологи объявили неделю уязвимостей в линукс
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #16

15. Сообщение от Аноним (15), 16-Окт-20, 06:29   +/
В смартфоне ч/з флешку? Круто.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #17, #72

16. Сообщение от Аноним (15), 16-Окт-20, 06:31   –3 +/
При этом любая эксплуатация "уязвимости" в Linux (а также процесс заражения зловредами) начинается с ввода в консоли su или sudo, далее пароля рута, и понеслось.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #18

17. Сообщение от Аноним (17), 16-Окт-20, 06:35   +/
По моему уже все смартфоны умеют OTG. Через него можно подключит флешку.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #23

18. Сообщение от Аноним (17), 16-Окт-20, 06:46   –1 +/
Инженеры из компании Google выявили серьёзную уязвимость (CVE-2020-12351) в свободном Bluetooth-стеке BlueZ, используемом в дистрибутивах Linux и Chrome OS. Уязвимость, которой присвоено кодовое имя BleedingTooth, позволяет неавторизированному атакующему без участия пользователя организовать выполнение своего кода на уровне ядра Linux через отправку специально оформленных Bluetooth-пакетов.

Где тут команда sudo? Проверки файловых систем в Linux происходят так же автоматически, как и автозапуски в WinXP.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #25

19. Сообщение от Козлетто (?), 16-Окт-20, 06:57   +1 +/
>и добиться выполнения своего кода с повышенными привилегиями на этапе загрузки, что может использоваться для обхода механизма верифицированной загрузки Android

Так это же хорошо. Загрузчики и андроиды рутовать можно

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #30

21. Сообщение от Аноним (21), 16-Окт-20, 07:29   +/
Не-не.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

22. Сообщение от Аноним (75), 16-Окт-20, 07:39   +4 +/
Если у тебя вместо массивов, указатели на неопределенную область памяти без границ, как в самом лучшем языке всех времен, то проверку на выход за границы ты не сделаешь
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #46

23. Сообщение от Аноним (15), 16-Окт-20, 07:39   +/
> Через него можно подключит флешку.

Чтобы взломать или зловреда посадить?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #26

25. Сообщение от Аноним (15), 16-Окт-20, 07:51   +/
> специально оформленных Bluetooth-пакетов

Кто-то держит включенный Bluetooth, скажем, на ноутбуке? Ну чепуха же.

Где вижу опасность уязвимости, это в смартфонах для подключения беспроводных гарнитур и автомобильных мультимедиа системах для подключения опять же смартфона. Но речи о них не шло.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #28, #42, #56

26. Сообщение от Аноним (17), 16-Окт-20, 08:00   +/
> Чтобы взломать или зловреда посадить?

Посадить зловреда, который сольёт все ключи и пароли, а так же предоставит полный удалённый доступ и прокси-сервер злоумышленнику.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #32

28. Сообщение от Аноним (17), 16-Окт-20, 08:08   –2 +/
> Кто-то держит включенный Bluetooth, скажем, на ноутбуке? Ну чепуха же.

Где то он не включен по умолчанию? Или каждый пользователь Linux это компьютерный гуру? Если бы это было так, то дистрибутивы были бы не нужны.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

29. Сообщение от Аноним (29), 16-Окт-20, 08:09   +/
Даже если и предположить что Раст может защитить от случайной уязвимости, что не так. Как Раст защитит от уязвимости которую автор кода добавил специально?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #47

30. Сообщение от пох. (?), 16-Окт-20, 09:06   –5 +/
Вот и китайский товарищмайор так же думают, а то палкувжоппу, как у вас, рюйских - фу как негигиенично!

Специальную флэшку через otg чпок - и ты ему можешь уже ничего не разблокировать.

Виноват, конечно, сасунг, неправильный си, кто угодно кроме модных-современных тенденций думать за пользователя (надо ли ему вообще монтировать флэшку с f2fs внезапно появившуюся в его смартфоне, и тем более - еще и fsck запускать). Он же ж - т7пой, нельзя ему ничего решать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

31. Сообщение от Enikemail (ok), 16-Окт-20, 09:11   –1 +/
И что тогда от fsf останется?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

32. Сообщение от 1 (??), 16-Окт-20, 09:31   +/
Зачем ему сажать зловреда от рута, когда у него итак есть рут и ещё и флешка вставлена ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #34

33. Сообщение от Аноним (33), 16-Окт-20, 09:44   –1 +/
F2FS эта та самая файловая система, которая до сих пор не стабилизировала свой формат?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #37, #60

34. Сообщение от Аноним (17), 16-Окт-20, 09:50   –1 +/
Зачем злоумышленнику root? Yеужели Ваша DE требует пароля при подключении флешки?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #55

37. Сообщение от Аноним (37), 16-Окт-20, 10:14   +/
Нет, то была другая.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33

38. Сообщение от анонимуслинус (?), 16-Окт-20, 10:21   +4 +/
огнепоклонники раста так и не поняли, что вся эта хваленая безопасность раста только в программах не касающихся работы с памятью и железом. что впрочем не так уж и мало, но никак нельзя претендовать на язык системного уровня. да с unsafe можно влезть и в системный уровень, но тогда все отличие раста от таких как с/с++ пропадает. все дело в том, что работа с системными ресурсами сама по себе не безопасна и требует знания и понимания. Чего в последнее время хотят избежать(разработчика быстрее и дешевле подготовить) , отчего и весь этот вой о безопасности или не безопасности языков. но на системном уровне нет абсолютно безопасных языков. вот и все.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #44, #45

40. Сообщение от Ordu (ok), 16-Окт-20, 10:39   –1 +/
> повторение - мать учения?

Это кому как. Людям, отрицающим уязвимости линукса и доказывающим что они не уязвимости, потому что они веруют в догму, что линукс неуязвим, можно хоть кол на голове тесать, и всё равно никакая мать не поможет им научится.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #48

42. Сообщение от Аноним (42), 16-Окт-20, 11:46   –1 +/
Связываю телефон с компьютером через блютуз для звонка через компьютер. Так что да, держат.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

43. Сообщение от Аноним (43), 16-Окт-20, 12:04   +5 +/
https://www.opennet.ru/openforum/vsluhforumID3/122119.html#96

Раст не нужен.

С нужен.

Ядра ОС которые некорректно выделяют память не нужны, как и дистры которые их используют.

Повторяй, заучивай.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

44. Сообщение от Аноним (44), 16-Окт-20, 12:15   +2 +/
>огнепоклонники раста так и не поняли

вот же тупые. Судя по неспособности смузихлебов написать программу работы с файловыми системами без unsafe их недоязык даже операции с файлами не может без него выполнять.
Настоящие программисты как писали на чистом Си, так и пишут.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

45. Сообщение от JL2001 (ok), 16-Окт-20, 12:18   –1 +/
> огнепоклонники раста так и не поняли, что вся эта хваленая безопасность раста
> только в программах не касающихся работы с памятью и железом. что
> впрочем не так уж и мало, но никак нельзя претендовать на
> язык системного уровня. да с unsafe можно влезть и в системный
> уровень, но тогда все отличие раста от таких как с/с++ пропадает.
> все дело в том, что работа с системными ресурсами сама по
> себе не безопасна и требует знания и понимания. Чего в последнее
> время хотят избежать(разработчика быстрее и дешевле подготовить) , отчего и весь
> этот вой о безопасности или не безопасности языков. но на системном
> уровне нет абсолютно безопасных языков. вот и все.

вон там выше в новости ошибка при работе с железом? или ошибка при работе с обычным масивом, которая не требует unsafe?

зы: для чего требуется unsafe при "работе с памятью" ? на сколько я знаю - там приходится делать ансейф только в случаях когда алгоритмически нельзя сделать однозначное владение (например, связаный список)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #58

46. Сообщение от JL2001 (ok), 16-Окт-20, 12:22   –1 +/
> Если у тебя вместо массивов, указатели на неопределенную область памяти без границ,
> как в самом лучшем языке всех времен, то проверку на выход
> за границы ты не сделаешь

а зачем такая неопределённая область памяти то??
драйвер всегда знает чего и сколько он запросил и получит от железа
надо только принудить программиста вписать проверку на размер
rust с этим справляется, а C - нет

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #52, #57

47. Сообщение от JL2001 (ok), 16-Окт-20, 12:49   +/
> Как Раст защитит от уязвимости которую автор кода добавил специально?

не мешайте тёплое с мягким!!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

48. Сообщение от Michael Shigorinemail (ok), 16-Окт-20, 13:17   –1 +/
Kuzma's mother?..
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40 Ответы: #50

49. Сообщение от Аноним (49), 16-Окт-20, 13:26   +/
Это наверное просто вы сами ниасилили со своим Си-головного-мозга или просто найти не смогли. Всё там хорошо. Учите матчасть.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

50. Сообщение от Ordu (ok), 16-Окт-20, 13:42   –1 +/
> Kuzma's mother?..

Я достаточно точно выразился: никакая мать не поможет. Мышление выправить себе можно только самостоятельно, тут _ничто_ не поможет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48

51. Сообщение от ведмедев (?), 16-Окт-20, 15:28   +/
фрактал,.. как ты уже надоел в каждой теме свой фанатизм выпячивать. почему тебе не др***я на руст одному? обязательно нужно всем показывать свою "инклюзивность"?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

52. Сообщение от qwe (??), 16-Окт-20, 15:35   –2 +/
> надо только принудить программиста вписать проверку на размер
> rust с этим справляется, а C - нет

И как сие принуждение избавляет от ошибок при "вписывании" проверки границ?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

54. Сообщение от Аноним (54), 16-Окт-20, 17:39   +1 +/
Что значит пожалуйста? А платить кто будет? 15 млн. не меньше ваша просьба стоит
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

55. Сообщение от Аноним (55), 16-Окт-20, 17:43   +/
Как запустить fsck флешки на телефоне если там просят пинкод?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

56. Сообщение от Аноним (55), 16-Окт-20, 17:45   +/
Кажется Apple держит. По крайней мере на планшете он не вырубается. Точнее вырубается, но на следующий день они заботливо его включают, а то глупый юзер забудет включить и будет возмущаться.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #68

57. Сообщение от Сишникemail (?), 16-Окт-20, 17:52   –2 +/
Жесть какая. А если у меня попадание указателя в выделенную память гарантируется алгоритмом, всё равно тратить такты на проверку?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #66

58. Сообщение от анонимуслинус (?), 16-Окт-20, 17:55   +/
fsck утилита однозначного и полного владения памятью, в данном случае памятью флеш накопителя, при этом она еще и форматированием занимается. напиши без unsafe. я не говорил что раст плохой язык в пространстве пользователя для выполнения обычных задач и даже с unsafe  для работы с железом. но при использовании unsafe он теряет все свои преимущества и становится на один уровень с с/с++.( хотя я считаю это просто уровень программистов низковат вот и делают ляпы не проверив). просто идолопоклонство неуместно. это еще один язык. если уж на то пошло то я бы выделил D.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #61, #62, #64, #67

59. Сообщение от Сишникemail (?), 16-Окт-20, 18:16   +/
А то раст не дыра? Ещё какая - на гитхабчике вашего любимого раста 5к+ багов висит, а тут 1 нашли - и сразу кудахтать.
https://github.com/rust-lang/rust/issues
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

60. Сообщение от microsoft (?), 16-Окт-20, 18:35   –2 +/
Это btrfs,до сих пор.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #70

61. Сообщение от Аноним (44), 16-Окт-20, 18:36   +/
любому нормальному программисту это очевидно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

62. Сообщение от Аноним (44), 16-Окт-20, 19:25   +/
>fsck утилита однозначного и полного владения памятью, в данном случае памятью флеш накопителя

почему?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

63. Сообщение от Аноним (63), 16-Окт-20, 20:51   –2 +/
Раст безопасен говорили они. На расте легко писать говорили они.

Они говорили и говорили. Но так ничего и не написали.

Ах нет, написали. Приветсвенное окошко для гнома. Супер.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

64. Сообщение от анонн (ok), 16-Окт-20, 21:21   +/
> но при использовании unsafe он теряет все свои преимущества и становится на один уровень с с/с++.

А все почему? А все потому что гладиолус!
(советую ознакомится с матчастью, а не следовать древней местной традиции выискивания взглядом знакомых слов и додумывания "как оно там должно работать")

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #65

65. Сообщение от анонимуслинус (?), 16-Окт-20, 22:39   +/
вам само название unsafe ничего не говорит? нет? ну ладно. это незащищенный от ошибок режим, опасный короче)))) так вам наверное станет яснее. нет я в курсе что раст может проводить операции с файлами в защищенном режиме, но fsck это не операции с файлами -0 это операции с самой файловой системой, требующей доступ к самому железу, а в расте с этим однозначно потребуется работа через unsafe. повторяю не работа с файлами, с самим железом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #73, #75

66. Сообщение от JL2001 (ok), 17-Окт-20, 00:35   +/
> Жесть какая. А если у меня попадание указателя в выделенную память гарантируется
> алгоритмом, всё равно тратить такты на проверку?

в расте компилятор (по слухам) умеет достаточно неплохо вычислять диапозоны значений и может выпиливать провеоку в компайлтайм

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57 Ответы: #71

67. Сообщение от JL2001 (ok), 17-Окт-20, 00:37   –1 +/
> я бы выделил D.

почему его?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

68. Сообщение от Карабьян (?), 17-Окт-20, 00:44   +/
Не врубается сам, легко можно нечаянно включить, но новость с уязвимостью про другую систему
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56

69. Сообщение от Аноним (69), 17-Окт-20, 02:32   +/
> ах да, я же это уже писал.... регулярно

не пробовал вместо комментариев на опеннете код писать? показал бы всем, как надо

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

70. Сообщение от Аноним (70), 17-Окт-20, 08:14   –1 +/
ЧТо за чушь?

The filesystem disk format is stable: https://btrfs.wiki.kernel.org/index.php/Main_Page#Stability_...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60 Ответы: #78

71. Сообщение от Сишникemail (?), 17-Окт-20, 12:03   +1 +/
Не только раст так умеет, java тоже например, но там это работает только в простейших случаях типа такого for(int i = 0; i < array.length; i++) some(array[i]). Более продвинутый ли анализатор в расте - сомнительно, разработка технологий не должна полагаться на верования. Действительно продвинутый анализатор позволил бы писать как в языках с автоматическим управлением памятью, но с управлением ей во время компиляции.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66

72. Сообщение от anonymous (??), 17-Окт-20, 12:32   +/
Почему только смартфон? F2FS доступна только на смартфонах?

А вообще да, это, например, путь к root-ованию. Или это путь ко взлому телефона вашей жены (для установки туда программ-шпионов)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

73. Сообщение от анонн (ok), 17-Окт-20, 14:07   +1 +/
>> ознакомится с матчастью, а не следовать древней местной традиции выискивания взглядом знакомых слов и додумывания "как оно там должно работать"
> вам само название unsafe ничего не говорит? нет? ну ладно. это незащищенный от ошибок режим, опасный короче))))

---
The only things that are different in Unsafe Rust are that you can:

Dereference raw pointers
Call unsafe functions (including C functions, compiler intrinsics, and the raw allocator)
Implement unsafe traits
Mutate statics
Access fields of unions

It’s important to understand that unsafe doesn’t turn off the borrow checker or disable any other of Rust’s safety checks
---

> так вам наверное станет яснее. нет я в курсе что раст может проводить операции с файлами в защищенном режиме, но fsck это не операции с файлами -0 это операции с самой файловой системой, требующей доступ к самому железу, а
> в расте с этим однозначно потребуется работа через unsafe. повторяю не
> работа с файлами, с самим железом.

Яснопонятно. Очередной опеннетный Эксперт по системному программированию в целом (и по ржавчине в частности)
Хинт:  читать поблочно из /dev/*блокдевайс*/ можно даже на жопоскрипте.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65

74. Сообщение от Ананимус (?), 17-Окт-20, 14:23   +/
> А запись в файл сделает уже другая программа, которая написана скорее всего не на Rust.

А не ты очень умный, да?

$ ./rust-program >file

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #77

75. Сообщение от Аноним (75), 17-Окт-20, 16:37   –1 +/
Сразу видно человека который хорошо разбирается в языках программирования
Отварите пожалуйста мне на вопрос, для общего развития, чем отличается запастись и чтения в файл, от записи и чтения в файл блочного устройства флешки, например /dev/sdb
Получается если в в файл устройства без unsafe писать нельзя то и в обычные файлы тоже нельзя?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65 Ответы: #76

76. Сообщение от анонн (ok), 17-Окт-20, 19:27   +1 +/
> Сразу видно человека который хорошо разбирается в языках программирования

Обращайтесь.

> Отварите пожалуйста мне на вопрос, для общего развития, чем отличается запастись и чтения в файл, от записи и чтения в файл блочного устройства  флешки, например /dev/sdb

Ничем и многим
(есть нюансы, но мне лень гадать, на что "типа намекает" очередной комментатор. Факт в том, что в никсах
cat /dev/sdb|od -tx1
демонстрирует мифический "прямой доступ к железу".
Впрочем, в винде, если не "соптимизнули" в новых версиях, то не намного сложнее - CreateFile(PhysicalDrive-что-то-там), читай и пиши - не хочу.
)

> Получается если в в файл устройства без unsafe писать нельзя то и в обычные файлы тоже нельзя?

Получается, если нафантазировать про unsafe в целом и работу ржавчины с устройствами в частности, то многое будет нельзя. Или можно - тут уж от фантазии зависит.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75

77. Сообщение от Аноним (9), 18-Окт-20, 12:36   +1 +/
Не включайте дурака, за открытие файла и запись в него в данном случае отвечает не запущенна программа. Программа просто отработает и выплюнет в stdout текст и все, никакой работы с файлами тут нету
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74 Ответы: #79, #80, #104

78. Сообщение от vakorol (?), 19-Окт-20, 12:02   +/
Там же: "The Btrfs code base is under heavy development."
Это, в общем-то, всё, что нужно знать про Btrfs, разрабатываемую с 2009 года.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70

79. Сообщение от Ананимус (?), 19-Окт-20, 17:26   +/
> Не включайте дурака, за открытие файла и запись в него в данном
> случае отвечает не запущенна программа. Программа просто отработает и выплюнет в
> stdout текст и все, никакой работы с файлами тут нету
> за открытие файла запись в него в данном случае отвечает не запущенна программа

За открытие файла отвечает шелл. За запись отвечает программа, лол. Или по твоему за запись в дескриптор write()'ами тоже шелл отвечает? :D

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #81

80. Сообщение от Ананимус (?), 19-Окт-20, 17:37   +/
> Не включайте дурака, за открытие файла и запись в него в данном
> случае отвечает не запущенна программа. Программа просто отработает и выплюнет в
> stdout текст и все, никакой работы с файлами тут нету

Просвещайся, лалка:

$ cat test.c
#include <err.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

int
main(void)
{
    struct stat st = {0};

    if (fstat(1, &st) == -1)
        err(1, "failed to stat stdout");

    printf("inode = %d\n", st.st_ino);

    return 0;
}
$ gcc -o test test.c
$ ./test >lol
$ cat lol
inode = 4108440
$ stat -c 'inode = %i' lol
inode = 4108440
$ cat lol
inode = 4108440

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #83

81. Сообщение от Аноним (9), 19-Окт-20, 17:37   +/
Просили показать работу с файловой системой без unsafe
> За открытие файла отвечает шелл

Вот на этом вы сами поставили точку. Шелл вам все подготовил, значит задача уже провалена.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79 Ответы: #82, #84

82. Сообщение от Ананимус (?), 19-Окт-20, 17:39   +/
> Просили показать работу с файловой системой без unsafe
>> За открытие файла отвечает шелл
> Вот на этом вы сами поставили точку. Шелл вам все подготовил, значит
> задача уже провалена.

Сделай open сам, кто тебе мешает-то? :D

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81

83. Сообщение от Аноним (9), 19-Окт-20, 17:44   –1 +/
Каюсь, был не прав. Но зато как мы быстро перешли к Си!
Один фиг файловый дескриптор просто так из воздуха не появляется
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80 Ответы: #86

84. Сообщение от анонн (ok), 19-Окт-20, 17:54   +/
> Просили показать работу с файловой системой без unsafe


fn main() {                                                                            
    println!("{}", std::fs::read_to_string("/etc/hosts").expect("Не шмогла я!"));      
}

Или вон, оф. пример прямо из доков:
https://doc.rust-lang.org/std/io/index.html

use std::io;
use std::io::prelude::*;
use std::fs::File;

fn main() -> io::Result<()> {
    let mut f = File::open("foo.txt")?;
    let mut buffer = [0; 10];

    // read up to 10 bytes
    let n = f.read(&mut buffer)?;

    println!("The bytes: {:?}", &buffer[..n]);
    Ok(())
}


Дальше-то что?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81 Ответы: #85

85. Сообщение от Аноним (9), 19-Окт-20, 18:03   +/
А потом мы берем, открывает исходники, и ищем unsafe внутри вызываемых функций из std::io или std::fs::File или std::fs::read_to_string.
Какой шанс что мы найдем unsafe?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84 Ответы: #89, #91

86. Сообщение от Ананимус (?), 19-Окт-20, 18:22   +/
> Каюсь, был не прав. Но зато как мы быстро перешли к Си!

Ну раста-то ты не знаешь.

> Один фиг файловый дескриптор просто так из воздуха не появляется

Нет, он появляется через open(). В расте open делается так:

let mut file = File::open("foo.txt")?;

Покажи мне, пожалуйста, unsafe.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #83 Ответы: #87

87. Сообщение от Аноним (9), 19-Окт-20, 18:27   +/
ну он может скрываться внутри вызовов File::open, тут надо смотреть исходники
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86 Ответы: #88

88. Сообщение от Ананимус (?), 19-Окт-20, 18:32   +/
> ну он может скрываться внутри вызовов File::open, тут надо смотреть исходники

Он точно скрывается в вызовах крейта libc, вопрос в том, что скрывается он там причинам довольно тривиальным -- FFI.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #87 Ответы: #93

89. Сообщение от Ананимус (?), 19-Окт-20, 18:42   +/
> А потом мы берем, открывает исходники, и ищем unsafe внутри вызываемых функций
> из std::io или std::fs::File или std::fs::read_to_string.
> Какой шанс что мы найдем unsafe?

И находим их в libc. Вопрос в том, что это меняет-то? Сам вызов std::fs::File вполне себе safe и наличие unsafe FFI вызовов не влияет на корректность программы, если сами FFI вызовы корректны. Я подозреваю, что не облажаться в десяти строках типа "дернули сискол и обернули в тип" авторы раста смогли.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #90, #92

90. Сообщение от Ананимус (?), 19-Окт-20, 18:49   +/
>> А потом мы берем, открывает исходники, и ищем unsafe внутри вызываемых функций
>> из std::io или std::fs::File или std::fs::read_to_string.
>> Какой шанс что мы найдем unsafe?
> И находим их в libc. Вопрос в том, что это меняет-то? Сам
> вызов std::fs::File вполне себе safe и наличие unsafe FFI вызовов не
> влияет на корректность программы, если сами FFI вызовы корректны. Я подозреваю,
> что не облажаться в десяти строках типа "дернули сискол и обернули
> в тип" авторы раста смогли.

Вот например, "страшный и ужасный unsafe в работе с файлами":

        let fd = cvt_r(|| unsafe { open64(path.as_ptr(), flags, opts.mode as c_int) })?;

Страшно, да?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89

91. Сообщение от анонн (ok), 19-Окт-20, 18:51   +/
> А потом мы берем, открываем исходники, и ищем знакомые слова внутри, попутно додумывая "как оно там на самом деле работает", делая при этом умный и загадочный вид в комментариях!

Поправил, не благодарите.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85

92. Сообщение от анонн (ok), 19-Окт-20, 18:58   +/
>  "дернули сискол и обернули в тип" авторы раста смогли.

(Комментаторы хором) Во-о-о-оот! Мы так и знали!
*Вариант анекдота про челябинских лесорубов и японскую бензопилу*


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89

93. Сообщение от Аноним (9), 19-Окт-20, 19:01   +/
Т.е. возвращаясь к исходному вопросу
> а теперь пожалуйста пример кода на раст без unsafe при работе с файловыми системами.)))

Отдельно замечу - корректность кода в unsafe не рассматривается, вопрос был в наличии unsafe.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88 Ответы: #94, #95

94. Сообщение от Ананимус (?), 19-Окт-20, 19:05   +/
unsafe конкретно в работе с файлами нет. Т.е. функции, которые ты дергаешь (std::File::open, например) -- safe. Есть unsafe блоки при работе с libc, но у тебя как бы не вариантов -- любой FFI вызов (в том числе asm) это unsafe просто по определению -- ты передаешь работу ядру/другой библиотеке/etc.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93 Ответы: #96

95. Сообщение от Ананимус (?), 19-Окт-20, 19:05   +/
> Т.е. возвращаясь к исходному вопросу
>> а теперь пожалуйста пример кода на раст без unsafe при работе с файловыми системами.)))
> Отдельно замечу - корректность кода в unsafe не рассматривается, вопрос был в
> наличии unsafe.

unsafe конкретно в работе с файлами нет. Т.е. функции, которые ты дергаешь (std::File::open, например) -- safe. Есть unsafe блоки при работе с libc, но у тебя как бы не вариантов -- любой FFI вызов (в том числе asm) это unsafe просто по определению -- ты передаешь работу ядру/другой библиотеке/etc.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93

96. Сообщение от Аноним (9), 19-Окт-20, 19:12   –1 +/
Ну как бы о чем и была в начале речь, без unsafe вы не можете открыть файл.
Я хз зачем так яростно отстаивать или оправдывать неверную точку зрения.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #94 Ответы: #97

97. Сообщение от Ананимус (?), 19-Окт-20, 19:29   +/
> Ну как бы о чем и была в начале речь, без unsafe
> вы не можете открыть файл.
> Я хз зачем так яростно отстаивать или оправдывать неверную точку зрения.

Потому что разговор шел в контексте очередной сишной дыры с памятью.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #96 Ответы: #98

98. Сообщение от Аноним (9), 19-Окт-20, 22:16   +/
Ну я прицепился к тому, что без unsafe можно с файлами работать.
imho низкоуровневые вещи типа драйверов и прочих все таки еще за C/asm, rust там делать пока что нечего.
Мб в будущем ситуация поменяется, но пока так.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #97 Ответы: #99

99. Сообщение от Ананимус (?), 19-Окт-20, 22:28   +/
> imho низкоуровневые вещи типа драйверов и прочих все таки еще за C/asm, rust там делать пока что нечего.

Откуда этот вывод-то?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #98 Ответы: #100

100. Сообщение от Аноним (9), 20-Окт-20, 03:09   +/
+потому что в этой области придется обмазаться unsafe по самое немогу. Если я правильно понимаю, часть гарантий раста сохранится,но лишь часть.
+сильно сомневаюсь, что будет достигнут паритет по скорости с С в данном случае.
+через годик другой посмотрим, мб они собственный компилятор и runtime таки доделают. Слишком сырой еще язык
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #99 Ответы: #101

101. Сообщение от Ананимус (?), 20-Окт-20, 07:17   +/
> потому что в этой области придется обмазаться unsafe по самое немогу.

И этот вывод сделан откуда? В работе с файлами, как мы только что выяснили, unsafe присутствует только в одном месте -- FFI (либо raw syscall, либо вызов в libc). Весь остальной код safe.

> Если я правильно понимаю, часть гарантий раста сохранится,но лишь часть.

Если твой unsafe блок содержит только FFI вызов, то сохраняются все гарантии. Потому что unsafe это всего лишь блок кода, где разрешены определенные вещи (raw pointers, например, или вызов ассемблерной/сишной функции). Твой растовый код ниже по стеку не становится менее надежным от этого.

> сильно сомневаюсь, что будет достигнут паритет по скорости с С в данном случае.

Мьютексы в расте быстрее, чем pthreads. rustls, которая TLS библиотека, быстрее openssl и жрет меньше памяти.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #100 Ответы: #102

102. Сообщение от Аноним (9), 20-Окт-20, 12:21   +/
Я про область написания драйверов, т.е. прямая работа с железом.
Вы наверное специально проигнорировали это, привели левые примеры, с некорректным сравнением.
Вести дискуссию с такими приемами я не хочу, поэтому самоотстраняюсь.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #101 Ответы: #103

103. Сообщение от Ананимус (?), 20-Окт-20, 12:59   +/
> Я про область написания драйверов, т.е. прямая работа с железом.
> Вы наверное специально проигнорировали это, привели левые примеры, с некорректным сравнением.

Признайся, ты драйвера в глаза не видел.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #102

104. Сообщение от якиткосатка (?), 23-Окт-20, 22:44   +/
а он и не выключал.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру