Задать вопрос
Ответы пользователя по тегу Linux
  • Можно ли безопасно запустить программу (только stdin/stdout, легковесная виртуализация, jail)?

    xenon
    @xenon Автор вопроса
    Too drunk to fsck
    Помимо известных проектов (chroot, docker, podman, apparmor, selinux) ChatGPT посоветовал:
    - firejail
    - bubblewrap

    Я потестил firejail:

    mir ~ $ firejail --private --net=none dd if=/dev/zero of=BREAK bs=1K count=1
    Reading profile /etc/firejail/default.profile
    Reading profile /etc/firejail/disable-common.inc
    Reading profile /etc/firejail/disable-passwdmgr.inc
    Reading profile /etc/firejail/disable-programs.inc
    Warning: networking feature is disabled in Firejail configuration file
    
    ** Note: you can use --noprofile to disable default.profile **
    
    Parent pid 2406028, child pid 2406029
    Child process initialized in 55.43 ms
    1+0 records in
    1+0 records out
    1024 bytes (1.0 kB, 1.0 KiB) copied, 6.4323e-05 s, 15.9 MB/s
    
    Parent is shutting down, bye...
    mir ~ $ ls -l BREAK
    ls: cannot access 'BREAK': No such file or directory

    под firejail dd "записал" файл виртуально, на диске его нет, как видим. (но в /tmp будет писать на диск, а под рутом где-нибудь в /usr/lib - выругается, что read-only). Можно поиграть с настройками.

    Сеть тоже не работает (если отключить):

    mir ~ $ firejail --private --net=none ping 1.1.1.1
    ping: connect: Network is unreachable
    Ответ написан
    Комментировать
  • Как сделать sleep на N секунд либо до прихода HTTP запроса (асинхронный cron с http сервером)?

    xenon
    @xenon Автор вопроса
    Too drunk to fsck
    Был совет использовать Firebase Cloud Messaging (FCM), которым доставляются push уведомления на устройство. Немного странно, но похоже, его невозможно использовать на десктопе в качестве клиента (принимать сообщения). В python библиотеке нет кода для этого. Даже задал вопрос разработчику PyFCM, его ответ:

    You can only receive messages via an Android, iOS or web client https://firebase.google.com/docs/cloud-messaging#h...

    An iOS, Android, or web (JavaScript) client app that receives messages via the corresponding platform-specific transport service.



    Для себя решил так:

    from http.server import BaseHTTPRequestHandler, HTTPServer
    class RequestHandler(BaseHTTPRequestHandler):
            # implementation
    
    httpd = HTTPServer((self.address, self.port), RequestHandler)
    httpd.timeout = 1
            
    while True:
        httpd.handle_request()
        # check if quit


    Использование метода handle_request вместо serve_forever() позволяет нам получать управление каждый раз по обработке каждого запроса и проверять, не пора ли выйти или исполнить другие действия. А использование timeout=1 дает нам возврат через 1 секунду даже если запросов не было. В итоге
    Ответ написан
    Комментировать
  • Создание DNS сервера с ответом по умолчанию?

    xenon
    @xenon
    Too drunk to fsck
    Может быть проще на всех доменах прописывать алиасы (CNAME) на другое доменное имя, и тогда если надо всем "переехать" - то достаточно будет поменять только одну запись ?
    Ответ написан
  • Как выделить пользователю место на диске?

    xenon
    @xenon
    Too drunk to fsck
    Можно сделать (через dd) файл нужного размера, через mkfs его отформатировать и подмонтировать. Дать юзеру полномочия на эту файловую систему. Железно не выйдет за ее пределы.
    Ответ написан
    Комментировать
  • Собственный сервер mail рассылки?

    xenon
    @xenon
    Too drunk to fsck
    Не будет это толком работать. mailchimp и подобные потому и существуют, что если вы не хотите серьезно погружаться в сферу bulk mailing (учить всякие greylisting, DKIM, DCC, DMARC, SPF, DNSBL, FBL, ARF, а еще и SMTP и DNS, автоматически обрабатывать баунсы и ансабскрайбы) - а это займет серьезное время - то толком запустить это не получится. Сервисы рассылок существуют не потому, что дураки-клиенты не догадались сто тысяч раз в цикле письмо отправить, а потому что они дешевле, чем рассылать самому (время ведь тоже не бесплатное, и упущенная прибыль от недоставленных писем - реальная)

    1. MTA
    постфикс - как и любой другой MTA для обычного применения, не самый удачный вариант. Не факт, что справится. Он - для очень надежной доставки, а это плохо. Нужна быстрая и менее надежная.
    Если у вас сто тысяч получателей - среди них неизбежно будут "дохлые". Письма на них будут оставаться в очереди на несколько дней и постоянно будут происходит перепосылки. Попытки достучаться до мертвого сервера будут отнимать время, в которое не будет рассылаться прочая почта. Ну или придется очень хорошо его изучать, крутить настройки очереди. ( = тратить время, которое деньги).

    2. Спам
    Даже если вам кажется, что ваши письма кристально чистые - все равно, они будут попадать в спам. Хотя бы потому, что многие пользователи жмут кнопку "это спам" вместо отписки. И очень скоро почти вся ваша почта будет валиться в спам везде (даже для тех пользователей, которые хотят ее получать) и толку от рассылок не будет. Кроме того, будут абузы хостеру, и он очень скоро вас попросит, и придется переезжать на плохой и дорогой абузоустойчивый хостинг.
    Ответ написан
    Комментировать
  • Как удалить все неиспользуемые зависимости в Linux?

    xenon
    @xenon
    Too drunk to fsck
    apt autoremove может быть? (в новых debian'ах просто apt, не apt-get)
    Ответ написан
    Комментировать
  • Посоветуйте linux для x86 в специализированный прибор?

    xenon
    @xenon
    Too drunk to fsck
    Приходилось заниматься подобными вещами. Может мои соображения окажутся полезными:

    1. «Минимальный» дистрибутив. Если прямо вот на самом деле важно сделать как можно меньше его — то лучший вариант даже не Gentoo, а Linux From Scratch ( www.linuxfromscratch.org/index.html ). Это даже не дистрибут, а просто гайд, как самому из исходников создать систему. Я в свое время по ней делал системы и размером даже с 1 флоппи диск (1.44Мб!), и вообще тогдашние давние гайды и разные мини-линукса, сейчас менее актуальны уже, но все таки могут быть интересны.

    Чем скромнее будет дистрибут — тем меньше глюков и меньше всяких непонятных процессов в памяти, которые жрут и память и CPU.

    Если же размеры такого уж критического значения не имеют, и проливать кровь за каждый сэкономленный килобайт не будете — то лучше тот дистрибут, с которым сами ближе знакомы. Для меня это был бы дебиан или убунту, но для вас может быть и наоборот.

    2. GUI ооочень слабо завязан на дистрибут. Можете писать GUI например, на дебиане, а потом запустить на генту, просто поставив нужные библиотеки. И вообще — GUI — это ж ведь просто программа, как firefox или vim — ее не пишут под дистрибут, ее просто пишут. А под дистриб только потом чуть-чуть напильником подпиливают.

    3. Драйвер (модуль ядра) — вообще до дистриба не зависит. Важна только поддержка определенных версий дистрибом. (например, драйвер от 2.6 так просто на 3.0 не пойдет. Даже иногда внутри самой 2.6 после определенных изменений ядра, к новой версии нужно чуть дописывать драйвер, который писался для чуть более старой версии. Но внутри ветки, все эти изменения всегда очень небольшие).
    Ответ написан
    1 комментарий
  • Почему sshd логирует внутренний IP, а не внешний?

    xenon
    @xenon
    Too drunk to fsck
    Сделайте на машинке простенький .php с текстом вроде:
    echo "IP: ".$_SERVER["REMOTE_ADDR"];
    и посмотрите, что он выдаст если открыть его в браузере с той машины. Если 10.* адрес — то дело не в SSH, а как выше сказали, в прямом роутинге. Ну и еще как вариант, можете с этого сервера попингать адрес клиента — если он точно NAT'ится — пинги не пройдут.
    Ответ написан
    Комментировать