Задать вопрос
Ответы пользователя по тегу Linux
  • Как общаться с процессом в Linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Вызов pidfd_open предназначен совсем для другого. Он нужен, чтобы мониторить состояние процесса с помощью операций ввода-вывода (в частности, таких, как select/poll). Для доступа к stdin/stdout/stderr процесса он не предназначен, это должны быть отдельные дескрипторы (причём разные).

    Для простоых применений достаточно использовать функцию popen. Если целью является разобраться в том, как это всё работает, то рекомендую написать простейшую программу с popen, затем погонять по ней strace (с ключом -f) и понять, что скрывается под капотом. В частности, понять, зачем там будут вызовы dup, fork и exec, как переопределяется stdin/stdout/stderr и всё такое.
    Ответ написан
    Комментировать
  • Как починить код запуска программы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Судя по всему, речь идёт о боте для Discord? Этот код не будет работать. И довольно очевидно, что с твоим текущим уровнем знаний Python шансов заставить это работать нет.
    Ответ написан
    Комментировать
  • Маршрутизация 2 eth с перенаправлением?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сервер не отправляет "с основного eth1". Интерфейс для отправки выбирается в процессе маршрутизации, а не до неё.

    ip route add 79.79.79.9 via шлюз_в_сети_где_адрес_78.78.78.3


    Это изменит в рантайме, после перезагрузки / переподключения к сети маршрут слетит и его надо будет прописывать заново. Чтобы поднимался автоматически, надо смотреть, какой механизм управления сетью используется (ifupdown/netplan/network-manager/network-scripts/dhcp client/итд/итп), и решать в зависимости от.
    Ответ написан
    Комментировать
  • Как сделать, чтобы из под любого пользователя создавались файлы и папки с определённой группой?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно использовать SGID (написали выше).

    Можно использовать default ACL, примерно так:

    setfacl -m g:developers:rwx -m d:g:developers:rwx -R /var/www/html
    setfacl -m u:www-data:rx -m d:u:www-data:rx -R /var/www/html
    setfacl -m u:www-data:rwx -m d:u:www-data:rwx -R /var/www/html/uploads


    Тогда для указанных пользователей и групп будут применяться доступы из ACL, а для новых файлов/каталогов - из default ACL.
    Ответ написан
    Комментировать
  • При попытке чтения каталога ls /root процесс зависает, как починить?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    По умолчанию ls не только читает каталог, но и делает stat на каждый файл, чтобы цветом показать их тип и executable bit. Это очень замедляет процесс.

    Обойти вызовом ls без параметров, заданных в alias ls:

    $ alias ls
    alias ls='ls --color=auto'
    $ ls # вызывает алиас
    $ 'ls' # вызывает обычный ls без параметров


    Но лучше не выводить в консоль (особенно если сервер открыт по сети) - это будет очень долго - а перенаправить в файл и потом просмотреть.

    'ls' /root > /tmp/list_of_files
    less /tmp/list_of_files


    Удалить файлы проще всего с помощью find:

    find /root -name 'index.html.*' -delete
    Ответ написан
    2 комментария
  • Настройка репликации между двумя веб серверами?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Если речь идёт о постоянной синхронизации именно файлов, то очень неплохо работает lsyncd. Только ни в коем случае нельзя пытаться использовать его для синхронизации в две стороны (путём запуска двух экземпляров), только в одну! (Я тестировал, даже если запись идёт только в одну сторону, иногда спонтанно случается синхронизация в неправильную сторону неполностью записанного файла)

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

    Разумеется, всё это не отменяет бэкапов и других организационных мер по развёртыванию и поддержке, но можно по возможности максимально снизить риск потери самых последних данных.
    Ответ написан
    3 комментария
  • Как записать несколько строк в файл bash?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В копилку к вышесказанному:

    echo -e "str1\nstr2\nstr3" >> file.txt
    Ответ написан
  • Как сделать полный бекап сайта через rsync?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В чём проблема? Там проще некуда.

    rsync -av --progress user@host:/path/to/site/ /local/directory/for/site/

    (слеши на концах путей нужны)

    Можно на лету сжимать, добавив ключ -z.

    Если случится обрыв, rsync при следующем запуске продолжит с того же места, а также учтёт изменившиеся с тех пор файлы.
    Ответ написан
    Комментировать
  • Как в си узнать какой пользователь вошёл в систему linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    man getuid
    man getpwuid

    Есть стандартные функции для подобных задач. Их использовать намного правильнее, чем парсить utmp (в который пользователь может не попасть, особенно если это неинтерактивный логин или su/sudo) и /etc/passwd (поскольку пользователи могут храниться не только в passwd, но и в winbind/ldap/nis/итд).
    Ответ написан
    Комментировать
  • Порекомендуйте замену vim?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это решается другим способом. Можно сделать готовый комплект конфигов (не только для vim), который в одну команду заливать на любой новый сервер (например, с помощью ansible). Круче vim всё равно мало что есть (пользуясь случаем, передаю большой привет emacs).
    Ответ написан
    Комментировать
  • Кастомная аутентикация Linux?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Использовать модуль pam_exec для вызова скрипта.
    Ответ написан
    Комментировать
  • Что такое файлы core на сервере?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Смотрим на любой core-файл с помощью утилиты file:

    $ file core.666
    core.666: ELF 64-bit LSB core file, x86-64, version 1 (SYSV), SVR4-style, from '/usr/bin/foobar', real uid: 0, effective uid: 0, real gid: 0, effective gid: 0


    Тут видно, что крэшился процесс foobar.

    Далее с помощью:

    gdb -c core.666

    можно поизучать, что там реально происходило, но это уже более сложно, особенно без отладочных данных и вообще с чужим кодом.

    С запуском scp всё это скорее всего не связано, ну разве что core-файл остаётся от самого sshd.
    Ответ написан
    Комментировать
  • Как вывести на экран приветствия в Linux Mint ip адрес?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    LinuxMint использует lightdm и slick-greeter. Как пишут в интернетах, там нельзя поменять текст сообщения, хотя можно скрыть hostname и настроить ещё немного опций. Чтобы чего-то сообщать юзерам, народ извращается с xmessage, zenity, gdialog и прочими инструментами, например.

    Вот в gdm можно поменять сообщение. Можно поменять используемый display manager в своей системе. Или только greeter. Это же Linux, тут много чего можно поменять по вкусу.
    Ответ написан
    Комментировать
  • Не запускается проект Github. Прошу помощи?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно не клонировать скрипт, а скачать его архивом, нажав Code-Download ZIP.

    Скрипт можно отредактировать локально, git для этого не нужен.

    В 18 строке падает из-за того, что скрипт берёт сенсор с индексом 1 (при нумерации с нуля), а массив сенсоров на этом компьютере имеет длину меньше 2, возможно даже, что нужные сенсоры ядро не понимает и список пустой. Вообще, скрипт, судя по этому месту, какой-то ацкий говнокод, который сломается просто от изменения порядка вывода сенсоров в модуле psutil. Фу на его автора.

    От себя советую избрать путь настоящего джедая: всё то же самое можно получать стандартными командами:

    Информация по процессорам: lscpu
    Информация по процессам: top или более красиво htop (выход у обоих по кнопке q)
    Информация по памяти: free -h
    Информация по сенсорам (температура, вентиляторы и всё такое): sensors
    Информация по месту на дисках: df -h
    Информация по блочным устройствам дисков: lsblk

    Доустанавливать надо будет только пакеты htop и lm-sensors.

    Ну или можно просто использовать виджеты для используемого десктопа.
    Ответ написан
    Комментировать
  • Как запретить программе доступ в интернет?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    1. Фильтровать по владельцу: iptables -m owner -h

    2. Использовать cgroups и фильтровать по ним: iptables -m cgroup -h

    3. Использовать отдельный network namespace без доступа в интернет: ip help netns

    4. Использовать docker с none-сетью: docker run -it --net=none my_awesome_image_for_application
    Ответ написан
    1 комментарий
  • Что хранится на файле gshadow и зачем редактировать?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    man gshadow всё объясняет.
    Ответ написан
  • Как можно заставить терминал в Ubuntu работать как Putty - вставлять из буфера по щелчку правой кнопкой мыши?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    https://launchpad.net/terminator (apt install terminator)
    В настройках поставить putty style paste. После этого менюшка переедет в двойной клик колесом.
    Ответ написан
    4 комментария
  • В чём преимущества и недостатки установок через apt и snap?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно понимать принципиальную разницу подхода:

    apt - установка из маленьких пакетов, вместе образующих большую и сложную систему, при этом софт может массово совместно использовать одни и те же файлы и библиотеки, благодаря чему экономится место на диске, оперативная память итд итп. Надо понимать, что apt - это пакетный менеджер для определённого вида пакетов (deb), хотя в своё время существовал вариант для rpm (может и сейчас существует, просто смысла в нём мало после появления yum).

    snap - установка большого приложения со всеми зависимостями, которые никак не использует остальной софт на этом же компьютере. Отсюда тратится лишнее место на диске и в оперативной памяти. Зато никаких проблем с зависимостями, плюс snap работает в любых системах и не завязан на конкретный менеджер пакетов и собственно пакетный формат.

    snap по большому счёту часто используют для установки тяжёлых приложений, которые может бысть сложно опакетить, особенно учитывая разнообразие присутствующих в мире дистрибутивов (debian/ubuntu и их клоны) разных версий. В то время как большинство штатного общеиспользуемого софта чаще распространяют в виде пакетов, идущих в составе дистрибутива или отдельно (в том числе в виде разных собранных под разные варианты систем пакетов).
    Ответ написан
    7 комментариев
  • Как через регулярные выражения написать "x" встречается больше 1 раза не подряд?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Например, так: x[^x]+x. Правда, смотря что считать "не подряд", вот "xxx" - это подряд или нет?
    Ответ написан
  • Как создать свое интернет радио нубу на VPS ubunu 16.04?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Сколько угодно статей в этих ваших интернетах. Например, https://habr.com/ru/post/239541/
    Ответ написан
    Комментировать