LINUX.ORG.RU

Сообщения constin

 

завернуть дочерний процесс в systemd

написал я скрипт, из которого я запускаю программку в бэкграунд.

типа вот:

test.sh

#!/bin/bash


monitor() {
    inotifywait -m -r -e attrib --format "%w%f" --fromfile /etc/default/inotifywait | while read TARGETFILE
    do
        [ "$(stat --format=%a $TARGETFILE)" -ne 660 ] && chmod 00660 $TARGETFILE
    done
}


monitor &

Если в systemd service file запихнуть test.sh, то она видит,что скрипт отработал и до свидания, сервис типа неактивен. Бэкгруанд пашет,( те команда inotifywait -m -r -e attrib --format «%w%f» --fromfile /etc/default/inotifywait весит в процессах и работает) но я не могу работать с этим всем как с сервисом. Я бы хотел дописать сприпту возможность reload/restart etc.

сама inotifywait может работать как демон, но при этом она будет писать аутпут в файл, а мне лень вылавливать события из файла.

P.S. Передаю горячий привет мейтейнерам самбы, которые выпилили force security mode в угоду ACL

 ,

constin
()

samba forse permissions

Привет, как запретить linux (виндовых нет) пользователям менять пермишшены на smb шаре?

Вот пример шары:

\[it]
path = /share/disk1/it
vfs objects = acl_xattr
msdfs root = no
writeable = yes
browseable = yes
public = no
dos filemode = no
hide unreadable = no
create mode = 0660
directory mode = 0770
force create mode = 0660
force directory mode = 0770
locking = 1
blocking locks = 1
strict locking = Auto
oplocks = 1
level2 oplocks = 1
fake oplocks = 0
csc policy = manual
valid users = @share_it_r @share_it_rw
force group = Domain Users
nt acl support = 0
inherit acls = 0
write list = @share_it_rw
inherit owner = no
inherit permissions = yes
read only = yes

мантим шару

sudo mount -t cifs  -o vers=1.0,user=$USER,cruid=$USER,sec=krb5 //servername/it /home/$USER/test
cd ~/test/

Ну и тест

touch file.test
ls -la file.test 
-rw-rw----+ 1 testuser Domain Users 0 Aug 31 13:52 file.test

chmod 600 file.test 
ls -la file.test 
-rw-------+ 1 testuser Domain Users 0 Aug 31 13:52 file.test

mkdir dir.test
ls -la | grep dir.test
drwxrwx---+  2 testuser  Domain Users         0 Aug 31 13:53 dir.test
chmod 600 dir.test/
ls -la | grep dir.test
drw-------+  2 testuser  Domain Users         0 Aug 31 13:53 dir.test

 

constin
()

опять avahi

Я даже написал небольшой сценарий от злости.

система : Все системы готовы?

процессы: да!

система: Пользователь хочет что-то распечатать. Диалоговое окно, выводи список принтеров!

Диалоговое окно: cups , давай сюда список твоих принтеров!

Cups: ok, держи.

Диалоговое окно: Вывожу спис....

Крик из жопы: Подождите!!!!

Все: бля**дь, кто это??!

Avahi : Это я , avahi! Не надо спешить... Меня разбудил d-bus! Сейчас я все сделаю пи**дато...

Диалоговое окно: Не надо ничего делать, пожалуйста, я уже готово отдать список принтеров!

avahi: а нихрена, давайте остановимся, потупим и подумаем.... А вдруг вот сейчас в сетке есть какой-нибудь новый нужный юзеру принтер...

Cups: да нихера, у меня отколючен дискавери, а значит юзеру нужен только тот список, что у меня!

Avahi : И все же настаиваю. Представляете, как он обрадуется, что я сама нашла ему новый принтер! Прямо как в винде!

Все: бл**яя.. ну давай уже быстрее.

Avahi : щаас. так , давайте еба**нем бродкаст. И подождем..

...

Проходит 15 секунд

...

avahi: да, походу новых принтеров нет, окно, выводи список.

Диалоговое окно и cups: ну а мы что говорили?

Юзер: вы там оху**ли все?

----------

avahi я давно сделал mask. И диалоговому окну оно больше не мешает. Но в логах машин через d-bus приложения постоянно пытаются дернуть avahi.

Aug  8 14:14:09 PXEdcfe07d6ba1f dbus-daemon[394]: [system] Activating via systemd: service name='org.freedesktop.Avahi' unit='dbus-org.freedesktop.Avahi.service' requested by ':1.57' (uid=2045 pid=1901 comm="/usr/bin/python /opt/openerp-client/bin/openerp-cl" label="unconfined")
Aug  8 14:14:09 PXEdcfe07d6ba1f dbus-daemon[394]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.Avahi.service': Unit dbus-org.freedesktop.Avahi.service is masked.

как бы им сказать, что его нет и что они могут жить без avahi?

 ,

constin
()

hostnamectl на readonly FS

Привет, дело происзходщит на PXE клиенте в режиме RO.

Начиная с Ubuntu 1804 при запуске команды hostnamectl set-hostname система выдает ошибку:

hostnamectl set-hostname "$new_hostname"
Could not set property: Failed to set static hostname: Read-only file system

Гугл вроде как говорит, что эту штука идет через DBUS. В Ubuntu1604 все было ок.

root@PXEaaaaaabbbbcc:/var# cat /etc/fstab 
# UNCONFIGURED FSTAB FOR BASE SYSTEM
proc /proc proc defaults 0 0
none /tmp tmpfs defaults 0 0
none /var/tmp tmpfs defaults 0 0
none /var/log tmpfs defaults 0 0
none /var/lib/lightdm-data/ tmpfs defaults 0 0
none /var/spool/cups tmpfs defaults 0 0
none /media tmpfs defaults 0 0
none /opt/pxe/tmpfs/ tmpfs defaults 0 0
none /var/lib/sss/db tmpfs defaults 0 0
none /var/lib/lightdm tmpfs defaults 0 0
none /var/lib/sss/gpo_cache tmpfs defaults 0 0
none /var/lib/sss/keytabs tmpfs defaults 0 0
none /var/lib/sss/mc tmpfs defaults 0 0
none /var/lib/sss/pipes tmpfs defaults 0 0
none /var/lib/sss/pubconf tmpfs defaults 0 0
none /var/lib/sss/pipes/private tmpfs defaults 0 0
none /etc/sssd tmpfs defaults 0 0
none /var/log/sssd tmpfs defaults 0 0
none /etc/apparmor.d/cache tmpfs defaults 0 0
none /var/cache/cups tmpfs defaults 0 0
# mount user profiles server
#XXXXXX:/home/_ldap /home/_ldap nfs rw 0 0

Вопрос, чтобы ей еще в tmpfs запихнуть?

 , , ,

constin
()

R.I.P. GitHub

Microsoft покупает GitHub. Сумма сделки — 7,5 миллиарда долларов.

Корпорация Microsoft подтвердила покупку GitHub — сервис для хранения, распространения и управления исходным кодом IT-проектов.

После завершения сделки, сообщается в официальном блоге Microsoft, пост генерального директора GitHub займет Нэт Фридман, известный, в числе прочего, как основатель компании Xamarin.

Подробности сделки, включая ее сумму, в сообщении Microsoft не раскрываются. По данным источников Bloomberg, Microsoft покупает GitHub за 7,5 миллиарда долларов. Сделка полностью будет проведена путем обмена акциями.

 

constin
()

Вопросы к докероводам про бэкапы.

У меня есть кейс, в котором мне нужно держать docker-compose докеры. Их там около 8 штук в связке. Мне совершенно непонятно как их бэкапить.

Все это должно работать на KVM виртуалке, сначала я думал, что создам lxc контейнер, в нем подниму докеры и буду бэкапить lxc. Но, как выяснилось, докеры не работают в lxc ( те иногда работают, но не всегда, не везде и не все, короче, это не про продакшен)

У них есть так же несколько volume. Те просто сделать снепшот zfs пула не выйдет.

Вопрос: какие есть best practice по бэкапу связок докеров? Желательно чтобы без страданий, снял снепшот и развернул его на другой машине моментально.

Ну и вообще хотелось бы поговорить о том, нахрен тогда это все нужно, если они не умеют бэкапиться? Для того, чтобы програмистам-виндоводам было удобно разворачивать это на своих виндах и кодить там? Причем тут продакшен?

 ,

constin
()

zsf-pool backup

Привет. У меня вопрос, если, допустим, у меня есть zsf-pool , размер которого равен почти полному объему реального диска. Больше дисков в системе нет. Допустим, lxc контейнер заполнил датой весь пул.

И вот в этот момент, я, предположим, хочу экспортировать lxc контейнер в виде имиджа на /webdav/smb/nfs шару. У меня получится? Или там экспорт только через снепшот , которого я не смогу сделать, потому что нет места?

 , ,

constin
()

как защитить symlink от удаления?

Вопрос в сабже, кому интересно можете ниже почитать, зачем мне это надо. Изначальная задача состоит в том, чтобы отдать разным пользователям разные принтеры. При этом в силу специфических причин cups не используется как отдельный принтсервер. Cups стоит на каждой пользовательской машине. Пользовательская машина при этом и не машина вовсе, а PXE readonly клиент.

В общем, юзер запускает PXE и на выходе должен ВИДЕТЬ только свои принтеры.

Средствами CUPS это сделать нереально. Реально разграничить доступ, но сделать принтера невидимыми нельзя. Поэтому при логине я подсовываю капсу конфиг в зависимости от группы пользователя.

Поскольку PXE в режиме RO, то я не могу запихивать конфиг прямо к /etc/cups (хотя можно сделать ее tmpfs).

В папке /etc/cups лежит симлинк от файла printers.conf, он указывает printers.conf пользователя.

Все работает , пока не загрузишь систему в режиме RW. Cups использует /etc/cups как свой личный cache и запросто меняет там сам все что ему вздумается. Поэтому он набрасывается на несчастный симлинк, удаляет его и прописывает там свой файл.

Если не найду решения , то буду маунтить /etc/cups как tmpfs и копировать ее содержимое при логине пользователя.

chattr +i и chmod не работают с симлинками

 

constin
()

сети / странное

Простите , тут случайно будет немного винды, но вопрос по сетке и постить мне это некуда больше, а очень интересно. Попросили меня залезть через тимвивер, чтобы посмотреть локальный proxmox, были проблемы с сеткой. И в процессе дела надо было пингануть этот proxmox с виндового клиента, на который я собственно зашел.

Я пинганул и офигел, как так? У винды есть два интерфейса в сетях 10.10.10.0/24 и 192.168.2.0/24 дефолтовый гейт на 192.168.2.0

при попытке пинга чего-нибудь в сетке 10.10.10.0/24 пинг идет через гейтвей от 192.168.2.0/24

Это как вообще??

вот скрины интерфейсов и маршрутов

http://sdf.li/ip.png

http://sdf.li/route.png

Вроде как у дефолтного роута самая мелкая метрика, но машина не должна использовать роут при пинге в пределах бродкаст домена.

 

constin
()

Postfix greylist IPv6 by subnet

Привет. Нужна грейлистилка, которая умеет грейлистить подсетями и при этом умеет работать с IPv6.

Те если к нам постучался сервак с 30.30.30.1 , а потом постучался сервак c 30.30.30.2. ( с тем же отправителем и получателем), то мы пишем во временную белую таблицу 30.30.30.0/24

С этим проблем нет. Проблема в том, что я не могу найти грейлистилку, которая умеет такое с IPv6, а 50% в принципе не умеет никак обрабатывать IPv6.

 ,

constin
()

/etc/profile.d/ ldapsearch silence mode

в /etc/profile.d/ лежит скрипт, который при логине юзера лезет в ldap через kerberos ticket и перенаправляет вывод в файл. типа вот так:

ldapsearch  -H ldap://$ldap_ip:$ldap_port/ -b $ldap_basedn -Y GSSAPI   "(objectClass=univentionShare)" univentionShareHost univentionShareSambaValidUsers   univentionShareSambaName -LLL -o ldif-wrap=no | /usr/local/bin/pars.sh univentionShareSambaName   univentionShareHost univentionShareSambaValidUsers | sed 's/\@//g' | sed 's/\"//g'> /tmp/ucs_shares

так вот эта зараза выдает в аутпут ( помимо информации в файл) вот эту хрень, которая очень, блин, важна.

SASL/GSSAPI authentication started
SASL username: username@EXAMPLE.COM
SASL SSF: 56
SASL data security layer installed.

Соответственно ГУЕвая сессия думает, что произошла какая-то херня и выдает warning с этим тестом и надписью о том, что что-то возможно пошло не так, вы там проверьте, дяденька.

При этом скрипт отрабатывает и все хорошо.

Вопрос, как мне заставить ldapsearch не писать мне эту важную пургу о том, как именно он решил авторизоваться.

 

constin
()

Собрать информацию : xsession username - hostname

Привет, мне нужна динамическая таблица залогиненных в X сессию пользователей и именен хостов, чтобы саппорт мог быстро заходить к ним по vnc. Теоретически вариантов куча, можно автоматом заносить записи в ldap, можно собирать их в системой мониторинга, можно через какой-нить эластикс. Меня интересует best-practice. В идеале вообще комбаин , где по нажатию на юзера у саппорта открывается vnc сессия.

 

constin
()

dconf - сраный виндореестр

Надо прописать всех юзерам некоторые параметры.

dconf load не работает, если юзер не залогинен в иксы. те /etc/profile.d/ не работает. Так как запускается во время логина, но немножко до открытия иксовой сессии.

/etc/dconf/ && dconf update не рабает, те команду жрет, но ничего не меняется у пользователей.

su - $USERNAME -c «dconf load /blablbabla/ < blabla» тоже не работает из-за первого пункта.

Расскажите, как грамотно ( желательно не в активной юзерской сесси) импортировать всех юзерам параметры? А то я сейчас этот импорт начну в гуевый юзерский автостарст вставлять от злости.

 , ,

constin
()

RDP SSO

У меня есть сеть линуховых машин с kerberos и ldap интеграцией. AD на самбе. Есть пара win7 с древним софтом типа банковских клиентов в домене.

Тупая винда не умеет кушать керберос тикет при RDP коннекте. Есть какое-нибудь решение по сквозной авторизации при RDP коннекте с linux на винду?

 , ,

constin
()

kerberos kinit через keytab

Привет, не могу понять, как мне использовать керберос тикет из другого кеша.

создаю keytab файл

samba-tool domain exportkeytab --principal=user@BLABLA.EXAMPLE.COM /etc/user.keytab

делаю тикет с левым кешфайлом (/tmp/user.cc)

kinit -F -k -t /etc/user.keytab -c /tmp/user.cc user@BLABLA.EXAMPLE.COM

смотрю klist, он пустой, потому что по умолчанию смотрит в /tmp/krb5cc_$UID

klist: No ticket file:/tmp/krb55c_0

смотрю в klist по моему кэшу, тут все ок. Есть тикет.

klist -c /tmp/user.cc

...
Principal: user@BLABLA.EXMAPLE.COM
....

И вот теперь я, например, хочу заюзать этот тикет к скрипте или в команде. например в nsupdate

Чтобы nsupdate жрала керберос , ее надо запускать с ключем -g , но она не видит мой левый кэш. Она видит , что тикетов у меня нет.

Как мне использовать левый кэш тикет в сриптах?

 

constin
()

куда скидывать мануалы?

Я сделал по моему мнению довольно нехилую работу по документированию установки и настройки pxe клиента его окружения и всего-всего с нуля и до конца. Вот прям садись и через несколько часов у тебя будет работоспособная сетка с централизованным управлением , мониторингом,сетевыми ресурсами, сквозной авторизацией и тд и тп. Есть на лоре какой-нибудь раздел, где это останется на века и прославит меня ( ну или наоборот опозорит)? На хабр не хочу, там куча идиотов и рекламодателей, не хочу их кормить.

 

constin
()

pgp pass выдает запрос пароля на русском

Привет.При использовании хранилища паролей pass при запросе пароля на доступ к хранилищу в терминале, оно зачем-то пишет по русски, те пытается писать, но получается вот такая херня.


 │ ?~Rведи?~Bе ?~D?~@аз?~C-па?~@ол?~L                                │
                              │ дл?~O за?~Iи?~B?~K нового кл?~N?~Gа  

Но дело в том, что мне вообще не нужен тут русский язык и система у меня на английском. Где можно это убрать/поменять? Полагаю, что сам pass тут не причем,а херней страдает pgp

 ,

constin
()

cups classes запретить листинг принтеров группам пользователей

Мне нужно ограничить список принтеров по группам. Те юзер в группе group1 должен видеть ограниченное количество принтеров. Важное замечание, меня не особо интересует запрет печати, мне надо чтобы в принт диалоге были только те принтера, которые я ему указал.

Это возможно сделать?

 ,

constin
()

avahi-daemon - глючное говно. Возмущения пост.

Если бы вы знали, как у меня пригорает от systemd, но не будем о больном.

Avahi. avahi теперь везде по умолчанию и при удалении тянет за собой весь десктоп.

Avahi срала на ваши настройки dns и resolv и будет резолвить *.local как ей самое захочется ( можно пофиксить, но по умолчанию так)

avahi любит искать в сети различные сервисы, например принтеры. И срала она что в cups выключено обнаружение принтеров, она все равно будет вам впихивать левые сетевые принтеры в диалоге печати. Переодически подвешивая диалог, если пользователь печатает очень много.

Я ненавижу тебя avahi! И желаю неделю поноса мейнтейнерам , которые везде ее впихнули.

 

constin
()

PXE BOOT Hostname

Скажите, как бы мне заставить PXE boot client(Ubuntu) делать себе hostname вида МАК адрес без точек.domain.local, те что-нибудь типа 46ce95fd6a60.domain.local?

Все было бы чудесно, если бы работал /etc/network/interfaces, тогда бы я туда запихал

pre-up hostname $(cat /sys/class/net/*/address |  sed -n 1p | sed 's/\://g').domain.local

Но проблема в том, что PXE получает айпишник раньше, чем цепляет nfs с операционкой и поэтому срал он на все pre-up команды. Ну и в конфиге OS стоит iface ens18 inet manual и больше ничего.

Меню загрузки выглядит вот так:

LABEL pxe
MENU LABEL PXE
KERNEL pxe/vmlinuz-4.4.0-83-generic
APPEND root=/dev/nfs  initrd=pxe/initrd.img-4.4.0-83-generic nfsroot=192.168.0.135:/nfs/mate  ip=dhcp ro  quiet splash

конфиг dhcp

subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.50 192.168.0.168;
        option broadcast-address 192.168.0.255 ;
        option routers 192.168.0.1;
        option domain-search "domain.local";
        filename "/pxelinux.0";

 , , ,

constin
()

RSS подписка на новые темы