PDA

Просмотр полной версии : Передача файлов на ПК по TCP



PavelGO
14.03.2018, 16:25
Здравствуйте, программисты.

На СПК207 создаю различные архивы на SD. Нужно сливать их по сети на ПК, но доступ нужен только для чтения архивов - пользовательский.

Веб сервер кодесис помахал мне с ПХП.
httpd не хочет запускаться. Это было бы наиболее легким путём.

Посоветуйте, пожалуйста, пути решения?

capzap
14.03.2018, 17:08
httpd не хочет запускаться.
http://www.owen.ru/forum/showthread.php?t=17003&p=134541&viewfull=1#post134541

PavelGO
15.03.2018, 16:09
Забанили в поиске. Спасибо. Запускается. В линухе я 0. Не просвятите, почему rc.local и остальные в /etc заменяется на старый после перезагрузки?

capzap
15.03.2018, 16:12
это нормальная практика для подобного рода устройств, при загрузке разворачивается сжатый образ операционки

PavelGO
15.03.2018, 16:30
Как же мне запустить сервер? Из проекта можно? Или на сокетах вообще делать? На 2.3 syslibsocket хороша. А тут что порекомендуете?

capzap
15.03.2018, 16:50
Честно, не сильно верю, что в спк linux в виде лайв диска, скорее всего дело в чем то другом, более вероятно что там диск только для чтения, хотя не понятно почему работает до перезагрузки, на сокетах тоже нормально должно работать

Осинский Алексей
15.03.2018, 17:00
А тут что порекомендуете?

После настройки перезагрузите ПЛК командой /sbin/reboot
Это сохранит внесенные изменения.

PavelGO
15.03.2018, 18:01
Спасибо. Получилось в загрузку добавить. Остался один вопрос как заставить его вывести список файлов? Типа как к в апаче Options Indexes.

Что имею:
httpd - ему плевать на права файла, но и список содержимого рут директории он не выводит. CGI не умеет.

thttpd - выдаёт файлы только без права X и умеет строить индекс директории. Печаль только в том, что SD формата fat32 примонтирована и право Х там неизменяемо. Получаем: The requested URL '/1.csv' resolves to a file which is marked executable but is not a CGI file; retrieving it is forbidden.

Отформатировал SD в ext2. Работает что мне нужно, но размер накопителя не опознаётся и карта не монтирована.

PavelGO
18.03.2018, 14:56
Пробую перемонтировать карту памяти с правами:
/bin/mount -t vfat -o sync,rw,noexec,remount,fmask=7133,dmask=7022 /dev/mmcblk0p1 /mnt/ufs/media/mmcblk0p1
А в mount всё равно:"
/dev/mmcblk0p1 on /mnt/ufs/media/mmcblk0p1 type vfat (rw,sync,noexec,relatime,fmask=0022,dmask=0022,cod epage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)"

Осинский Алексей
18.03.2018, 15:28
Пробую перемонтировать карту памяти с правами:
/bin/mount -t vfat -o sync,rw,noexec,remount,fmask=7133,dmask=7022 /dev/mmcblk0p1 /mnt/ufs/media/mmcblk0p1
А в mount всё равно:"
/dev/mmcblk0p1 on /mnt/ufs/media/mmcblk0p1 type vfat (rw,sync,noexec,relatime,fmask=0022,dmask=0022,cod epage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)"

Скажите пожалуйста, какую задачу Вы решаете, выполняя эту команду?
Что Вы ожидаете увидеть после ее выполнения?

capzap
18.03.2018, 15:30
а чего Вы такими записями хотите достичь?
Напомню, что линукс в контроллерах работает под пользователем root, поэтому он не может быть ни пользователем из группы, ни чужим пользователем, как то защищать файлы от других бессмысленно
ЗЫ
выдаёт файлы только без права Xа зачем испольнять файлы, Вам нужно только читать и писать

PavelGO
19.03.2018, 09:51
Убрать права на выполнение с SD. Она FAT и права 755 при монтировании даны, а чтобы thttpd отдавал файлы ему нужно 644.

capzap
19.03.2018, 10:08
Убрать права на выполнение с SD. Она FAT и права 755 при монтировании даны, а чтобы thttpd отдавал файлы ему нужно 644.

ну кто это Вам сказал? Какие то неправильные материалы Вы читаете по линуксу. http://help.ubuntu.ru/wiki/%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D 0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0_un ix
Монтируйте обычным способом, а затем находясь в директории примените команду chmod для всех файлов

Осинский Алексей
19.03.2018, 10:08
Убрать права на выполнение с SD. Она FAT и права 755 при монтировании даны, а чтобы thttpd отдавал файлы ему нужно 644.

Я могу ошибаться (в Linux не силен), но под "нужны права 644" понимается "не ниже, чем 644" т.е. thttpd должен отдавать файлы с 755.

PavelGO
19.03.2018, 10:17
Тоже не силён, но в мануале http://www.acme.com/software/thttpd/thttpd_man.html:

PERMISSIONS

thttpd is also picky about file permissions. It wants data files (HTML, images) to be world readable. Readable by the group that the thttpd process runs as is not enough - thttpd checks explicitly for the world-readable bit. This is so that no one ever gets surprised by a file that's not set world-readable and yet somehow is readable by the HTTP server and therefore the *whole* world.

The same logic applies to directories. As with the standard Unix "ls" program, thttpd will only let you look at the contents of a directory if its read bit is on; but as with data files, this must be the world-read bit, not just the group-read bit.

thttpd also wants the execute bit to be *off* for data files. A file that is marked executable but doesn't match the CGI pattern might be a script or program that got accidentally left in the wrong directory. Allowing people to fetch the contents of the file might be a security breach, so this is prohibited. Of course if an executable file *does* match the CGI pattern, then it just gets run as a CGI.

In summary, data files should be mode 644 (rw-r--r--), directories should be 755 (rwxr-xr-x) if you want to allow indexing and 711 (rwx--x--x) to disallow it, and CGI programs should be mode 755 (rwxr-xr-x) or 711 (rwx--x--x).

PavelGO
19.03.2018, 10:25
ну кто это Вам сказал? Какие то неправильные материалы Вы читаете по линуксу. http://help.ubuntu.ru/wiki/%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D 0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0_un ix
Монтируйте обычным способом, а затем находясь в директории примените команду chmod для всех файлов

Пробовал. chmod не отработает по fat. Если форматировать в ext, права даю и всё работает. Заказчик этот вариант отверг, сославшись на не соблюдение РЭ СПК.

capzap
19.03.2018, 10:39
так Вы сами запутались и других начали путать, она это папка или директория, файлы это либо они либо он, получается что в 12-ом пост-е хотите присвоить директории 644
по моей ссылке во втором посте так и показано 755 для директории и 644 для файлов
тот пример, который Вы откопали с fmask и dmask тоже правильный, хотя насчет первой семерки не уверен, более привычно глядеть командой ls -al с какими правами что подключилось

capzap
19.03.2018, 10:41
Пробовал. chmod не отработает по fat. Если форматировать в ext, права даю и всё работает. Заказчик этот вариант отверг, сославшись на не соблюдение РЭ СПК.
chmod это команда линукса, у него нет разделения с этой ФС работаю, а с этой нет, всё должно выполняться, ни когда с этим проблем не было

ЗЫ если у Вас microSD так может дело в том что она заблокирована на запись, ведь по сути у Вас выясняется нb mount не работает ни chmod

PavelGO
19.03.2018, 11:14
Запись на SD идёт. Архивы пишутся. Mount отрабатывает - пробовал менять noexec - cgi переставали запускаться. А вот на fmask mount не реагирует.

UPD Не реагирует с remount. После umount права устанавливаются. Но в автомате монтирование сделать всё равно не получится, поскольку /usr/sbin/sd_mount - read only. Малой кровью, видимо, скачивание архивов не реализовать.

Права настроить так и не удалось. Задача решена с помощью cgi sh.