setuid на thread
в linux вроде можно, как? POSIX
в linux вроде можно, как? POSIX
Вдруг захотелось разобраться и написал для себя, как ни странно всё работает, решил поделиться.
Позволяет выбирать разное поведение для разных окон. Например, для окон с мессенджерами можно зафиксировать только русскую раскладку. Программа также позволяет использовать как встроенные графические так и текстовые языковые метки. Инфу по раскладкам берет налету из Xorg.
Собственно хотелось бы дополнительных еще идей, чего не хватает еще?
или это невозможно из за децентрализованной системы доставки обновлений. вобщем у кого первым в Linux сорвет крышу из за политики?
делаю один свой проект, с авторизацией через pam. по простому типа логин менеджер графический, нужно авторизоваться и сессию пользователю делать.
на этапе pam_open_session получаю ошибку типа:
pam_loginuid(login:session): Cannot open /proc/self/loginuid: Permission denied
при этом, в этот момент процесс у меня запущен под uid 0, и я проверяю там права на запись есть…
так же смотрел исходники pam_loginuid там обычный open(O_NOFOLLOW|O_RDWR)
вот тут они:
https://github.com/linux-pam/linux-pam/blob/master/modules/pam_loginuid/pam_loginuid.c
я конечно могу выкинуть pam_loginuid, но хочу разобраться и как то же все системные сервисы эту проверку проходят….
вообщем хрень какая то, переехал с centos6 на centos7.9.2009.. ставил новую систему + пару разделов своих оставил, и вот lvm не видит pv внутри lv.
тест такой:
lvcreate -L4G -n test_pv1 vg_xennode2
pvcreate /dev/vg_xennode2/test_pv1
тут ошибка:
Device /dev/vg_xennode2/test_pv1 excluded by a filter.
могу кинуть дамп от pvcreate -vvv
но слишком много мусора.
решения из гугла приводят к кейсу что надо wipefs делать, но мне непомогает это.
Да и смотри дальше, у меня дополнительно мигрировало 100гб в виде pv (так его проще через pvmove + iscsi мигрировать в онлайне), вайпать рабочие данные нехотелось бы .
pvdisplay /dev/vg_xennode2/devel_pv1
Failed to find device for physical volume "/dev/vg_xennode2/devel_pv1"
то что оно рабочее 100% через losetup + pvdisplay /dev/loop0 я все там вижу и vg норм активируется.
все дело каких то внутренних фильтрах LVM в релизе centos7, причем конфиги все default, filter и global_filter я не правил, да и не помогает это.
Понятно что все эти данные я вытащу, но осадочек остался… энтерпрайз ахтунг!
Кто юзает centos7 хотелось бы подтверждения баги
сама ошибка от Xvfb
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
(EE)
Fatal server error:
(EE) Failed to activate virtual core keyboard: 2(EE)
через консоль просто командой запускается нормально без ошибок
/usr/bin/Xvfb :99 -nolisten tcp -screen 0 1024x768x24
через код с ошибкой, вот код
/* g++ -Wall -otest test.cpp -std=c++14 */
#include <errno.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
#include <syslog.h>
#include <sys/wait.h>
#include <chrono>
#include <thread>
#include <atomic>
#include <cstdlib>
#include <iostream>
std::atomic<bool> running;
void signal_handler(int sig)
{
syslog(LOG_DEBUG, "signal receive: %d", sig);
if(sig == SIGTERM || sig == SIGINT)
running = false;
}
int main(int argc, char** argv)
{
openlog("test_case", LOG_PERROR, LOG_USER);
signal(SIGTERM, signal_handler);
signal(SIGINT, signal_handler);
signal(SIGCHLD, SIG_IGN);
signal(SIGHUP, SIG_IGN);
int pid = fork();
if(0 > pid)
{
syslog(LOG_ERR, "fork failed");
return -1;
}
if(0 == pid)
{
syslog(LOG_DEBUG, "child zone");
signal(SIGTERM, SIG_DFL);
signal(SIGINT, SIG_IGN);
signal(SIGHUP, SIG_IGN);
signal(SIGCHLD, SIG_IGN);
int res = execl("/usr/bin/Xvfb", "Xvfb", ":99", "-nolisten", "tcp", "-screen", "0", "1024x768x24", (char*) NULL);
if(res < 0)
syslog(LOG_ERR, "execl failed: %s", strerror(errno));
_exit(0);
}
syslog(LOG_DEBUG, "main running");
running = true;
using namespace std::chrono_literals;
while(running)
std::this_thread::sleep_for(100ms);
closelog();
return 0;
}
selinux выключен, любые идеи... и кто и что там еще может какие лимиты срабатывать?
проблема в том что min_element берет по умолчанию первый элемент в качестве результата, делать remove_if а если контейнер только для чтения?
вот пример, результат 20, мне нужно «not found»
#include <utility>
#include <vector>
#include <iostream>
#include <algorithm>
int main()
{
std::vector< std::pair<bool, int> > v = { {false, 20}, {false, 3}, {false, 11}, {false, 7}, {false, 12} };
auto it = std::min_element(v.begin(), v.end(),
[](const std::pair<bool, int> & p1, const std::pair<bool, int> & p2)
{
if(p1.first && p2.first)
return p1.second < p2.second;
return p1.first;
});
if(it != v.end())
std::cout << (*it).second << std::endl;
else
std::cout << "not found" << std::endl;
return 0;
}
на удаленном ресурсе, обновили 1С, собственно я тоже под линукс 1С обновил, но там выползла новая зависимость на libwebkitgtk-3.0, раньше не было, вообщем почти все поборол.. заткнулся на этом
template <typename T, typename... Arguments>
class CrossThreadTaskImpl final : public CrossThreadTask {
public:
CrossThreadTaskImpl(T* callee, void (T::*method)(Arguments...), Arguments&&... arguments)
{
m_taskFunction = [callee, method, arguments...] {
(callee->*method)(arguments...);
};
}
};
gcc-4.8, ошибки такие
error: expected ‘,’ before ‘...’ token
m_taskFunction = [callee, method, arguments...] {
^
error: expected identifier before ‘...’ token
error: parameter packs not expanded with ‘...’:
m_taskFunction = [callee, method, arguments...] {
^
error: expansion pattern ‘arguments’ contains no argument packs
(callee->*method)(arguments...);
как бы это переписать, лямбду распакую, туплю с множественным аргументом
X.Org X Server 1.17.4, xorg-x11-drv-intel-2.99.917-0.4.20151111
при использовании драйвера intel - (EE) No devices detected.
при использовании драйвера modesetting - (EE) Device(s) detected, but none match those in the config file. no screens found(EE)
работает только vesa
выхлоп lspci
00:02.0 VGA compatible controller: Intel Corporation Device 5902 (rev 04) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device 3113
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 11
Region 0: Memory at de000000 (64-bit, non-prefetchable) [size=16M]
Region 2: Memory at c0000000 (64-bit, prefetchable) [size=256M]
Region 4: I/O ports at f000 [size=64]
Expansion ROM at <unassigned> [disabled]
Capabilities: [40] Vendor Specific Information: Len=0c <?>
Capabilities: [70] Express (v2) Root Complex Integrated Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
ExtTag- RBE+ FLReset+
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed unknown, Width x0, ASPM unknown, Latency L0 <64ns, L1 <1us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed unknown, Width x0, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [ac] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [d0] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100 v1] #1b
Capabilities: [200 v1] Address Translation Service (ATS)
ATSCap: Invalidate Queue Depth: 00
ATSCtl: Enable-, Smallest Translation Unit: 00
Capabilities: [300 v1] #13
вроде intel, но что за чип, как его заставить работать?
для проверки запустил голый Xorg (1.17.4) + xterm,
как только дам команду ck-launch-session нагрузка на проц увеличивается до 100%
кто в курсе, что ему (ConsoleKit 0.4.1) надо?
увидел на geekbrains тест:
int p = 20, n = 12;
n *= --p << 1 + p++ / 10;
чисто логически по таблице приоритетов я развернул так:
(p - 1) << (1 + (p - 1) / 10)
у меня clang, gcc разных версий выдает разный результат - 912, 960.
кто в курсе, у них какой ответ считается верным результатом?!
Сделан в виде сервиса DBus. Реализован протокол Штрих 1.12 (+добавлена команда открыть смену 0xE0 из нового протокола 2.0.24).
Преимущество - работает в любых тулкитах (bash, javascript, c++, perl, python и.т.д), можно расшарить через сеть. Есть пример чтения таблиц на Qt.
https://github.com/ShtrikhFRDBusService/shtrikh-fr-dbus-service
Написан на perl, в торговых условиях используется в больше 2 лет.
subj
в наличии есть различный парк процессоров и серверных и десктопных, так вот разброс значений от 60GB до 1GB независимо от новизны моделей.
subj
вообщем появилось время, по совету друзей посмотрел, начал осваивать. :D
глупые вопросы пользователя: вообще почему игра заточена под большой монитор? В игре используются тайлы на 16, запустил на старом ноуте с 1024 по ширине, и так что за хрень, нафига их (тайлы) еще уменьшать до 12? на экране из за масштабирование полное УГ. как изменить размер ttf шрифта? вроде простое желание, место на экране есть, а поменять никак.
мне нужно мониторить один девайс, подключается через usb/lp0. так вот при чтении из порта, (например как head -c 10 /dev/usb/lp0 > dump.log)
я постоянно получаю в dmesg:
usb 1-8.1: USB disconnect, address 11
drivers/usb/class/usblp.c: usblp0: removed
usb 1-8.1: new full speed USB device using ehci_hcd and address 12
usb 1-8.1: configuration #1 chosen from 1 choice
drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 12 if 0 alt 0 proto 2 vid 0x0F25 pid 0x0012
лог dbus-monitor:
signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/Manager; interface=org.freedesktop.Hal.Manager; member=DeviceRemoved
string "/org/freedesktop/Hal/devices/usb_device_f25_12_1000001_usbraw"
signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/Manager; interface=org.freedesktop.Hal.Manager; member=DeviceRemoved
string "/org/freedesktop/Hal/devices/usb_device_f25_12_1000001_if0_printer_noserial"
signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/Manager; interface=org.freedesktop.Hal.Manager; member=DeviceRemoved
string "/org/freedesktop/Hal/devices/usb_device_f25_12_1000001_if0"
signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/Manager; interface=org.freedesktop.Hal.Manager; member=DeviceAdded
string "/org/freedesktop/Hal/devices/usb_device_f25_12_1000001_if0"
signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/Manager; interface=org.freedesktop.Hal.Manager; member=DeviceRemoved
string "/org/freedesktop/Hal/devices/usb_device_f25_12_1000001"
signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/Manager; interface=org.freedesktop.Hal.Manager; member=DeviceAdded
string "/org/freedesktop/Hal/devices/usb_device_f25_12_1000001"
signal sender=:1.0 -> dest=(null destination) path=/org/freedesktop/Hal/Manager; interface=org.freedesktop.Hal.Manager; member=DeviceAdded
лог udevmonitor:
UEVENT[1338781979.608634] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/usbdev1.16_ep02
UEVENT[1338781979.608705] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/usbdev1.16_ep84
UEVENT[1338781979.608732] remove@/class/usb_endpoint
UEVENT[1338781979.608756] remove@/class/usb/lp0
UEVENT[1338781979.608781] remove@/class/usb
UEVENT[1338781979.609313] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0
UEVENT[1338781979.609356] remove@/class/usb_device/usbdev1.16
UEVENT[1338781979.609423] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/usbdev1.16_ep00
UEVENT[1338781979.609450] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1
UDEV [1338781979.609920] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/usbdev1.16_ep02
UDEV [1338781979.611013] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0/usbdev1.16_ep84
UDEV [1338781979.611699] remove@/class/usb_endpoint
UDEV [1338781979.613078] remove@/class/usb/lp0
UDEV [1338781979.614045] remove@/class/usb_device/usbdev1.16
UDEV [1338781979.615263] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/usbdev1.16_ep00
UDEV [1338781979.718809] remove@/class/usb
UDEV [1338781979.815417] remove@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0
UEVENT[1338781979.871570] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1
UEVENT[1338781979.871837] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/usbdev1.17_ep00
UEVENT[1338781979.871878] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/1-8.1:1.0
UDEV [1338781979.873121] add@/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8.1/usbdev1.17_ep00
UEVENT[1338781979.874227] add@/class/usb/lp0
как бы узнать, это косяк девайса или есть возможность пофиксить перезагрузку драйвера?
баг: Любой авторизованный пользователь домена может получить доступ к файловой системе.
Причем администратор домена получает полный права к файловой системе сервера.
Для воспроизведения бага необходимо:
1. настроенный ldap сервер
2. nsswitch.conf настроен, getent passwd выдает список пользователей
3. samba как домен контроллер настроен на ldap (большая часть параметров пропущена)
[global]
security = user
passdb backend = ldapsam:ldap://ldap.server
[homes]
read only = no
browseable = no
Проверить очень просто, на клиенте, из под пользователя домена,
открываем например ресурс:
\\server\dbus
на redhat5, centos5, я получаю / сервера.
Других дистрибутивов у меня нет, проверить не могу.
а причина в том что:
# grep dbus /etc/passwd
dbus:x:81:81:System message bus:/:/sbin/nologin
т.е. параметр passdb backend = ldapsam отрабатывается не корректно?
Сразу напишу, параметр invalid users = bin,daemon,dbus,avahi и т.п. не поможет.
Я конечно отправил баг в bugzilla.redhat.com, его закрыли с пометкой:
> If you want to secure access to shares created via the [homes] mechanism,
> please follow the instructions from the Samba Howto Collection:
> «Why Can Users Access Other Users' Home Directories?»
> (https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/securing-
> samba.html#id2619170).
>
> In short: you can restrict access to only the authenticated user by setting
> «valid users = %S» in the [homes] section. You will also find this setting
> in our default smb.conf file that we ship with the samba package.
Т.е. возможно меня они не поняли (google translate :), т.к. зачем мне valid users?
на ресурс [homes] должны подключаться все пользователи домена,
и пользователь домена и так эксплуатирует эту уязвимость,
опять же параметр invalid users не работает (он и не должен работать в данной ситуации).
Собственно я нашел как решить данную проблему,
всех системных пользователей добавил в отдельный файл как ресурсы в /var/tmp и ограничил правами.
Вопрос какой?!
Действительно так и должно быть?
Моя обеспокоенность здесь не уместна?
интересует именно samba-3.0.33-3.38.el5_8 как домен контроллер кто использует?
не linux но достало.. в какие то моменты вектор возвращает отрицательный size, т.е. для 72 элементов возвращает -72
проект вдоль и поперек причесан через valgrind.
в нормальном linux и windows все нормально, но периодически в wince где gcc версии 4.4.0. ни кто про такое не слышал?
сейчас пофиксил типа (в хидере bits/stl_vector.h):
size_type
size() const
{ return size_type(abs(this->_M_impl._M_finish - this->_M_impl._M_start)); }
следующие → |