Статьи из рубрики «linux» RSS

Linux — дружественная операционная система. Она просто разборчива в выборе друзей.

Linux, потоки и FSUID

Известно, что в POSIX одного процесса разделяют ID пользователя и группы. Иными словами, «легальным» путём создать с разными UID не получится.

Но в кроме 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 ничего не говорит о том, должны ли эти атрибуты быть общими для всех потоков процесса или нет. Далее »

Автор: , опубликовано в: Linux, комментариев: нет
31
Окт
2010

Засада с wc -l

Всю жизнь считал, что результат выполнения команды wc -l — количество строк в файле. А вот и нет! Далее »

Автор: , опубликовано в: Linux, комментариев: 2
30
Окт
2010

Ошибка сборки модуля VMware vsock для ядра Linux 2.6.35

При сборке модуля vsock Player 3.x или WorkStation 7.1 для ядра 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, но при каждом запуске будет пересобирать и устанавливать модули заново. Неприятно, но лечится. Далее »

Автор: , опубликовано в: Linux, комментариев: нет
14
Окт
2010

R1Soft CDP с ядром 2.6.35

При попытке собрать модуль под ядро  2.6.35 r1soft-cki выдаёт примерно следующий текст:

[-]
View Code Text
Checking for binary module
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 в таких условиях создать не может. Далее »

Автор: , опубликовано в: Linux, Администрирование, комментариев: нет
14
Окт
2010

Ошибка сборки модуля VMware vmmon на 64-битной архитектуре

При сборке модуля Player 3.x или WorkStation 7.1 на 64-битной архитектуре могут возникать подобные ошибки компиляции:

/tmp/vmware-root/modules/vmmon-only//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’

К счастью, проблема решаема. Далее »

Автор: , опубликовано в: Linux, комментариев: нет
30
Сен
2010

Дельта-бэкапы баз данных

На одном из серверов с большим числом пользователей у нас настроено автоматическое создание резервных копий баз данных — четыре раза в день. Стоит отметить, что размер сжатых резервных копий всех баз данных превышает 400 мегабайт. Таким образом, за один день на резервные копии баз данных уходит около двух гигабайт дискового пространства. Две недели — почти 30 гигабайт. Расточительство.

Для экономии места мы изобрели велосипед под названием «дельта-бэкап» (известный как разностный бэкап, differential backup) — мы храним одну полную резервную копию базы данных и список изменений.

Ввиду того, что клиентские сайты используют WordPress, разностное резервное копирование баз данных позволяет сэкономить очень много дискового пространства. Далее »

Автор: , опубликовано в: Linux, комментариев: нет
28
Сен
2010

Error 13: Invalid or unsupported executable format на ext4

Если на файловой системе после обновления ядра и перезагрузки выдаёт ошибку

Error 13: Invalid or unsupported executable format

То переустанавливать не нужно, есть более простой способ. Далее »

Автор: , опубликовано в: Linux, комментариев: нет
25
Сен
2010

Как правильно использовать диапазон портов в –sport и –dport в iptables с использованием multiport

Ситуация: нужно закрыть UDP-порты в трёх диапазонах: 1…52, 54…122, 124…1024. При этом если стук в порт идёт из привилегированного порта (то есть с номером 0…1023), то соединение нужно просто сбрасывать, если же стук идёт с непривилегированного порта, то расценивать это как сканирование и выполнять какие-то действия.

Например, обращение к порту 137 по протоколу UDP может быть как атакой какого-нибудь червя, так и безобидным запросом от NetBIOS. И если запросы, исходящие от NetBIOS, вполне безобидны («рабочий» трафик), то сканирование портов обычно не так безобидно. Далее »

Автор: , опубликовано в: Linux, комментариев: нет
31
Авг
2010

Upstart, fork и daemon

У есть одна известная ошибка: неверное использование expect fork/expect daemon может подвесить initctl, после чего всякие start/stop/restart/reload <service> просто перестанут работать. Для полноты картины отмечу, что такой подвисший сервис не получится остановить и через /usr/sbin/service или /etc/init.d. Весёлая , но это еще не всё.

Есть еще одна тонкость: если программа использует fork(), то в конфигурационном файле upstart должна присутствовать строка expect fork. По аналогии можно подумать, что если программа использует daemon(), то в конфигурационном файле upstart должна присутствовать строка expect daemon. А вот и нет! Далее »

Автор: , опубликовано в: Linux, комментариев: 1
24
Апр
2010

ProFTPd, FTPS и iptables

Ситуация: есть сервер, на котором крутится , а настроен так, чтобы не разрешать лишних соединений (политика по умолчанию — DROP). При этом есть желание, чтобы -сервер работал по протоколу FTPS и поддерживал пассивные соединения. Далее »

Автор: , опубликовано в: Linux, комментариев: 1
10
Апр
2010