Статьи из рубрики «linux»
Linux — дружественная операционная система. Она просто разборчива в выборе друзей.
Linux, потоки и FSUID
Известно, что в POSIX потоки одного процесса разделяют ID пользователя и группы. Иными словами, «легальным» путём создать потоки с разными UID не получится.
Но в Linux кроме UID/GID, EUID/EGID, SUID/SGID есть еще FSUID/FSGID — Filesystem User/Group ID, используемые ядром Linux для доступа к файловой системе.
Для изменения FSUID и FSGID можно использовать вызовы seteuid() и setegid() (так как при изменении действующего (effective) ID пользователя/группы изменяется и ID доступа к файловой системе), либо вызовы setfsuid() и setfsgid().
Понятно, что в многопоточном приложении изменение EUID или EGID может не быть возможным, так как затронет все потоки процесса. Но, так как FSUID/FSGID специфичны для Linux, стандарт POSIX ничего не говорит о том, должны ли эти атрибуты быть общими для всех потоков процесса или нет. Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: нетОкт
2010
Засада с wc -l
Всю жизнь считал, что результат выполнения команды wc -l — количество строк в файле. А вот и нет! Далее »
Окт
2010
Ошибка сборки модуля VMware vsock для ядра Linux 2.6.35
При сборке модуля vsock VMware Player 3.x или VMware WorkStation 7.1 для ядра Linux 2.6.35 могут возникать подобные ошибки компиляции:
CC [M] /tmp/vmware-root/modules/vsock-only/linux/af_vsock.o
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciStreamConnect’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3233: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3256: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3268: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciAccept’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3328: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3344: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3378: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciPoll’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3476: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciStreamSendmsg’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:4116: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:4153: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:4206: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciStreamRecvmsg’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:4440: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:4480: error: ‘struct sock’ has no member named ‘sk_sleep’
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:4546: error: ‘struct sock’ has no member named ‘sk_sleep’
Это не фатально, так как VMware может работать и без vsock, но при каждом запуске будет пересобирать и устанавливать модули заново. Неприятно, но лечится. Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: нетОкт
2010
R1Soft CDP с ядром 2.6.35
При попытке собрать модуль под ядро Linux 2.6.35 r1soft-cki выдаёт примерно следующий текст:
Waiting |
No binary module found
Gathering kernel information
Gathering kernel information complete.
Creating kernel headers package
Checking '/tmp/r1soft-cki.1286865605' for kernel headers
Unable to find a 'include/linux/autoconf.h'. This file is required to build a kernel module
Unable to find a valid source directory.
Please install the kernel headers for your operating system.
To install kernel headers execute:
apt-get install linux-headers-`uname -r`
Очевидно, что все требуемый пакеты установлены, иначе не было бы данной статьи. Не менее очевидно, что модуль ядра r1soft-cki в таких условиях создать не может. Далее »
Окт
2010
Ошибка сборки модуля VMware vmmon на 64-битной архитектуре
При сборке модуля vmmon VMware Player 3.x или VMware WorkStation 7.1 на 64-битной архитектуре могут возникать подобные ошибки компиляции:
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c: In function ‘IOMMU_SetupMMU’:
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c:156: error: implicit declaration of function ‘iommu_map_range’
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c: In function ‘IOMMU_VMCleanup’:
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c:403: error: implicit declaration of function ‘iommu_unmap_range’
К счастью, проблема решаема. Далее »
Автор: Wandering Soul, опубликовано в: Linux, комментариев: нетСен
2010
Дельта-бэкапы баз данных
На одном из серверов с большим числом пользователей у нас настроено автоматическое создание резервных копий баз данных — четыре раза в день. Стоит отметить, что размер сжатых резервных копий всех баз данных превышает 400 мегабайт. Таким образом, за один день на резервные копии баз данных уходит около двух гигабайт дискового пространства. Две недели — почти 30 гигабайт. Расточительство.
Для экономии места мы изобрели велосипед под названием «дельта-бэкап» (известный как разностный бэкап, differential backup) — мы храним одну полную резервную копию базы данных и список изменений.
Ввиду того, что клиентские сайты используют WordPress, разностное резервное копирование баз данных позволяет сэкономить очень много дискового пространства. Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: нетСен
2010
Error 13: Invalid or unsupported executable format на ext4
Если на файловой системе ext4 после обновления ядра и перезагрузки GRUB выдаёт ошибку
Error 13: Invalid or unsupported executable format
То переустанавливать Linux не нужно, есть более простой способ. Далее »
Автор: Wandering Soul, опубликовано в: Linux, комментариев: нетСен
2010
Как правильно использовать диапазон портов в –sport и –dport в iptables с использованием multiport
Ситуация: нужно закрыть UDP-порты в трёх диапазонах: 1…52, 54…122, 124…1024. При этом если стук в порт идёт из привилегированного порта (то есть с номером 0…1023), то соединение нужно просто сбрасывать, если же стук идёт с непривилегированного порта, то расценивать это как сканирование и выполнять какие-то действия.
Например, обращение к порту 137 по протоколу UDP может быть как атакой какого-нибудь червя, так и безобидным запросом от NetBIOS. И если запросы, исходящие от NetBIOS, вполне безобидны («рабочий» трафик), то сканирование портов обычно не так безобидно. Далее »
Автор: Wandering Soul, опубликовано в: Linux, комментариев: нетАвг
2010
Upstart, fork и daemon
У Upstart есть одна известная ошибка: неверное использование expect fork/expect daemon может подвесить initctl, после чего всякие start/stop/restart/reload <service> просто перестанут работать. Для полноты картины отмечу, что такой подвисший сервис не получится остановить и через /usr/sbin/service или /etc/init.d. Весёлая ошибка, но это еще не всё.
Есть еще одна тонкость: если программа использует fork(), то в конфигурационном файле upstart должна присутствовать строка expect fork. По аналогии можно подумать, что если программа использует daemon(), то в конфигурационном файле upstart должна присутствовать строка expect daemon. А вот и нет! Далее »
Апр
2010
ProFTPd, FTPS и iptables
Ситуация: есть сервер, на котором крутится ProFTPd, а iptables настроен так, чтобы не разрешать лишних соединений (политика по умолчанию — DROP). При этом есть желание, чтобы FTP-сервер работал по протоколу FTPS и поддерживал пассивные соединения. Далее »
Апр
2010
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

