LINUX.ORG.RU

Сообщения cyber_eagle

 

Компиляция .so из .a файлов

Доброго времени суток !

Возникла проблемма в неожиданном месте: во время сборки .so либы из .a либ (собранных с PIC) компилятор стрипает все символы из .a файлов (те. в получившимся .so не видны символы из .a), хотя если собрать .so просто из объектников, не запакованных в .a - то все отлично.

Пример:

gcc -shared object1.o objects.a

Все усугубляется тем, что в Makefile было бы очень удобно использовать сборку .so из .a файлов, дабы не таскать перечисления входящих в него объектников.

Кто нибудь решал подобную задачу ? Может есть какой флаг в gcc ?

Заранее благодарен !

 , ,

cyber_eagle ()

Shortcut в gnome-shell работает неправильно

Всем добра !

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic

# gnome-shell --version
GNOME Shell 3.28.3

Проблема в том, что «Ctrl+Shif+Z» (redo) не срабатывает в текстовых редакторах. Так же эту комбинацию нельзя забиндить в настройках гнома (напр Ctrl+Shif+X можно использовать).

Ктонибудь сталкивался с таким поведением ? Или как насчет workaround ?

Заранее спасибо !

 , , ,

cyber_eagle ()

Чем воспроизводить поток видео ?

Проблема в следующем: Я выкачиваю с сервера поток mpeg видео и хочу его сразу же воспроизводить. При этом при передаче, изза качества связи, могут быть задержки.

Я пробовал так:

socat tcp:192.168.77.77 7777 stdout | mplayer -
socat tcp:192.168.77.77 7777 stdout | cvlc /dev/stdin

Но в обоих вариантах и mplayer и vlc прекращают воспроизведение, как только поток приостанавливается. Как заставить проигрыватель дожидаться продолжения ?

 , , , ,

cyber_eagle ()

Capabilities в контейнере

1) Запускаю я значит контейнер командой (включаю все capabilities)

docker run -ti --cap-add=DAC_READ_SEARCH --cap-add=LINUX_IMMUTABLE --cap-add=NET_BROADCAST --cap-add=SYS_RAWIO --cap-add=IPC_LOCK --cap-add=IPC_OWNER --cap-add=SYS_MODULE --cap-add=SYS_PACCT --cap-add=SYS_BOOT --cap-add=SYS_NICE --cap-add=SYS_RESOURCE --cap-add=SYS_TIME --cap-add=SYS_TTY_CONFIG --cap-add=LEASE --cap-add=AUDIT_CONTROL --cap-add=SETFCAP --cap-add=MAC_OVERRIDE --cap-add=MAC_ADMIN --cap-add=SYSLOG --cap-add=WAKE_ALARM --cap-add=BLOCK_SUSPEND --cap-add=SYS_ADMIN --cap-add=NET_ADMIN --cap-add=SYS_PTRACE --cap-add=BLOCK_SUSPEND  kdeneon/plasma
2) Проверяю capabilities процесса 1 и процесса bash в контейнере
Capabilities for `12298': = cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend+eip

Capabilities for `1': = cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,37+ep

3) А дальше в контейнере:

root@25c5d7ef2355:~# mount -obind /home /mnt
mount: /mnt: bind /home failed.

Почему не могу монтировать внутри контейнера ?

PS: я знаю, что можно добавить --privileged. Но хочется разобраться с конкретным поведением )

 , , , ,

cyber_eagle ()

Dynamic ssh proxy

Добрый день!

Пытаюсь сделать юзера для dynamic forwarding.

Пока что получилось вот что:

Match User proxyssh #for proxy only
	X11Forwarding no
	AllowTcpForwarding local
        #TODO: deny local by mask 127/8
	ForceCommand false

Остался один важный момент: он не должен иметь возможность подключатся к портам на loopback (напр 127.0.0.1:80). Те я ищу возможность заблокировать форвардинг по маске 127/8.

Кто нибудь знает, как реализовать чтото подобное?

 , ,

cyber_eagle ()

Как изменить контролирующий терминал для нового процесса?

Вот например запускаю

# tty
/dev/pts/2
# ssh root@9.9.9.9 0</dev/pts/7 1>/dev/pts/7 2>/dev/pts/7
root@9.9.9.9's password:
Те несмотря на то, что все дескрипторы подменил, ssh открывает /dev/tty и пишет в текущий /dev/pts/2.

Как запустить процесс с новым контролирующим терминалом?

 , ,

cyber_eagle ()

unshare(CLONE_NEWUSER) после chroot() сходит с ума (возвращает EPERM)

Добрый день!

Собирать так: «gcc main.c --static»

#define _GNU_SOURCE
#include <sched.h>

int main() {
	if(unshare(CLONE_NEWUSER)!=0) {printf("unshare ERR\n"); return -1;};
	
	if (chroot("./")!=0) {printf("chroot ERR\n"); return -5;};
	chdir("/");
	
	sleep(5);
        return 0;
}

#define _GNU_SOURCE
#include <sched.h>

int main() {
        if (chroot("./")!=0) {printf("chroot ERR\n"); return -5;};
	chdir("/");
	
        if(unshare(CLONE_NEWUSER)!=0) {printf("unshare ERR\n"); return -1;};
	
	sleep(5);
        return 0;
}

Первый вариант работает, а второй - нет (unshare возвращает -1 EPERM (Operation not permitted)).

В манах такое поведение не описано. Чем это обусловленно? У кого нибудь возникали такие ошибки?

 , ,

cyber_eagle ()

Как сделать такую же ссылку, как в /proc/pid/root ?

Что это вообще такое? Это ведь не символьная ссылка точно, тккак через нее можно из чрута вылезти. Это не жесткая ссылка, тккак ссылается на другую фс. Это даже не никакой не bind, тккак другие фс при переходе по ней остаются на своих местах...

Вообщем я тоже хочу уметь создавать такие всемогущие линки)

В манах лгут: «This file is a symbolic link that points to the process's root directory» (Это неправда)

 , , ,

cyber_eagle ()

apache гдето находит старых пользователей

Здрасте!

Есть файлик /var/www/admin/.htaccess:

AuthName "admin"
AuthBasicAuthoritative Off
AuthMySQL on
AuthType Basic
AuthUserFile /dev/null

AuthMySQL_Authoritative on
AuthMySQL_Host localhost
AuthMySQL_User users
AuthMySQL_Password fuckit
AuthMySQL_DB users
AuthMySQL_Password_Table user_auth
AuthMySQL_Group_Table user_auth
AuthMySQL_Username_Field login
AuthMySQL_Password_Field password
AuthMySQL_Group_Field group
AuthMySQL_Group_User_Field login
AuthMySQL_Empty_Passwords Off
AuthMySQL_Encryption_Types Plaintext
AuthMySQL_Persistent on 
Auth_MySQL_Scrambled_Passwords on
require user admin admin2

В таком состоянии он позволяет авторизироватся пользователю admin по некоторому паролю, который нужно изменить.

Я создаю /etc/apache2/htpasswd с новыми паролями и меняю путь к нему «AuthUserFile /etc/apache2/htpasswd». И все нормально работает.

Мучает вот, что: если вернуть обратно «AuthUserFile /dev/null», то можно будет войти со старым пользователем. Отсюда вопрос: как найти htpasswd, который подтягивается при «AuthUserFile /dev/null»

 , ,

cyber_eagle ()

Почему iptables все портит???

Есть скрипт:

ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip link set pr1if0 up;
ip route add local 172.20.1.0 dev pr1if0;
ip route add 172.20.1.0/31 dev pr1if0 src 172.20.1.0;

ip netns exec pr1 ip link set lo up;
ip netns exec pr1 ip link set dev pr1if1 up;
ip netns exec pr1 ip address add 172.20.1.1/31 dev pr1if1;
ip netns exec pr1 ip route add default via 172.20.1.0 dev pr1if1 src 172.20.1.1;

#test
ping 172.20.1.1 -c1;
ip netns exec pr1 ping 172.20.1.0 -c1;
nc -lp 9040 -v -w 2 &
ip netns exec pr1 nc -v 172.20.1.0 9040 -w 2;

#clear
iptables -tnat -F && iptables -tfilter -F && ip netns del pr1;
exit;
- Все нормально работает, 1.1 пингуется, nc устанавливает соединение.

А теперь добавим правило iptables REDIRECT:

ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip link set pr1if0 up;
ip route add local 172.20.1.0 dev pr1if0;
ip route add 172.20.1.0/31 dev pr1if0 src 172.20.1.0;

ip netns exec pr1 ip link set lo up;
ip netns exec pr1 ip link set dev pr1if1 up;
ip netns exec pr1 ip address add 172.20.1.1/31 dev pr1if1;
ip netns exec pr1 ip route add default via 172.20.1.0 dev pr1if1 src 172.20.1.1;

iptables -t nat -A PREROUTING -p tcp -i pr1if0 -j REDIRECT --to-port 9040; #!!!! То, что добавили !!!!!

#test
ping 172.20.1.1 -c1;
ip netns exec pr1 ping 172.20.1.0 -c1;
nc -lp 9040 -v -w 2 &
ip netns exec pr1 nc -v 172.20.1.0 9040 -w 2;

#clear
iptables -tnat -F && iptables -tfilter -F && ip netns del pr1;
exit;
-Результат - все пингуется, но nc установить соединение не может.

Но если заменить «ip route add» на «ip address»:

ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip link set pr1if0 up;
ip address add 172.20.1.0/31 dev pr1if0; #!!!! ВМЕСТО ip route add !!!!!

ip netns exec pr1 ip link set lo up;
ip netns exec pr1 ip link set dev pr1if1 up;
ip netns exec pr1 ip address add 172.20.1.1/31 dev pr1if1;
ip netns exec pr1 ip route add default via 172.20.1.0 dev pr1if1 src 172.20.1.1;

iptables -t nat -A PREROUTING -p tcp -i pr1if0 -j REDIRECT --to-port 9040;

#test
ping 172.20.1.1 -c1;
ip netns exec pr1 ping 172.20.1.0 -c1;
nc -lp 9040 -v -w 2 &
ip netns exec pr1 nc -v 172.20.1.0 9040 -w 2;

#clear
iptables -tnat -F && iptables -tfilter -F && ip netns del pr1;
exit;
- То все опять работает - пингуется, соединение открывается.

Как так? Что произошло? Что творит ip address???

 , , , ,

cyber_eagle ()

Отладка iptables REDIRECT, который ведет себя нехорошо

Здрасте! Пытаюсь сделать вот, что: (цель: прокси для приложения с поощью namespace)

iptables -tnat -F && iptables -tfilter -F;

ip netns add pr1;
ip link add pr1if0 type veth peer name pr1if1;
ip link set dev pr1if1 netns pr1;

ip route add local 172.20.1.1 dev pr1if0;
ifconfig pr1if0 up;
ip route add 172.20.1.0/24 dev pr1if0 src 172.20.1.1;

ip netns exec pr1 ifconfig lo up;
ip netns exec pr1 ip route add local 172.20.1.2 dev pr1if1;
ip netns exec pr1 ifconfig pr1if1 up;
ip netns exec pr1 ip route add 172.20.1.0/24 dev pr1if1 src 172.20.1.2;
ip netns exec pr1 ip route add default via 172.20.1.1 src 172.20.1.2;

iptables -t nat -A PREROUTING -p tcp -i pr1if0 -j REDIRECT --to-port 9040;

#test
nc -lp 9040 -v &
ip netns exec pr1 nc 172.20.1.1 789;

Проблема в том, что на 9040 соединения не приходят. Причем «ip netns exec pr1 ping 172.20.1.1» пингуется.

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

Может кто нибудь отлаживал такие вещи? Буду благодарен за подсказку)

 , , ,

cyber_eagle ()

wifi hotspot фильтрация mac

Доброго времени суток! Интересует следующий вопрос:

Возможно ли настроить отбрасывание кадров по мак адресу? (чтобы заблокировать передачу между подключенными устройствами...эдакое отключение macforwarding)

Те я так думаю, что это должно сработать средствами nl80211. Ведь это же он отвечает за пересылку кадров между устройствами??? При этом они будут видны в pcap, или нет?

Причем посмотрел бы вариант как с фильтрацией по мак адресу ethernet, так и по адресу передатчика.

Проблема возникла из спортивного интереса)

Заранее благодарю и извиняюсь за любопытство.

 , , ,

cyber_eagle ()

Соединение виртуальных интерфейсов...ИЛИ хочу то, не знаю что

Доброго ВС! Мучает навязчивая идея соединения двух tap интерфейсов так, чтобы выход одного был входом второго...

Вот например есть у меня две сетевухи, и я соединяю их выходы друг с дугом: получится эдакий loopback на двух интерфейсах.

Можно ли сделать так же с двумя tap интерфейсами???

 , , ,

cyber_eagle ()

Маршрутизация пакета с адресом назначения 127,0,0,1

Доброго времени суток!

Есть сервер. На сервер, через интерфейс wlp4s0 приходит пакет с адресом назначения 127,0,0,1 и отсеивается... те не маршрутизируется.

Вот таблицы:

/proc/net_> ip route show table all
default via 192.168.1.1 dev wlp4s0  proto static  metric 600 
192.168.1.0/24 dev wlp4s0  proto kernel  scope link  src 192.168.1.108  metric 600 
broadcast 127.0.0.0 dev lo  table local  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  table local  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  table local  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  table local  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.1.0 dev wlp4s0  table local  proto kernel  scope link  src 192.168.1.108 
local 192.168.1.108 dev wlp4s0  table local  scope host 
broadcast 192.168.1.255 dev wlp4s0  table local  proto kernel  scope link  src 192.168.1.108 

/proc/net_> ip rule list
0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default 

При этом ip_forwarding включен.

Что ему мешает быть переадресованым на loopback правилом «local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1 »?

 , ,

cyber_eagle ()

ptrace() и сигналы

Здравсте!

Не проходят сигналы приложению при трассировке. Те не вызывается обработчик в трассируемом приложении:

sigtest.c:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <syscall.h>
#include <sys/wait.h>
#include <unistd.h>
#include <errno.h>

void sig_handler(int signum) {
	write(1,"SIG\n",4);
	sleep(1);
}

void main() {
	signal(15, sig_handler);
	sleep(20);
	return;
}

dbgr.c:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <syscall.h>
#include <sys/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <errno.h>
#include <sys/user.h>
#include <inttypes.h>

int main(int argnum,char ** args) {
	int pid=atoi(args[1]);
	ptrace(PTRACE_ATTACH,pid, 0, 0);
	
	struct user_regs_struct regs;
	int wait_stat; 
	int rsig;
	 
	waitpid(pid,&wait_stat,0);
	while (WIFSTOPPED(wait_stat)) {
		ptrace(PTRACE_GETREGS,pid, 0,&regs);
		
		rsig=WSTOPSIG(wait_stat);
		dprintf(2," \n %d %"PRIx64"\n",rsig,regs.rip);
	
		if (ptrace(PTRACE_SINGLESTEP, pid, 0, 0) != 0) {perror("ptrace_singlestep"); return -1;};
		waitpid(pid,&wait_stat,0);
	}

}

Если запустить sigtest и в течении 20 секунд подключится к нему через dbgr, а затем отправить сигнал 15 процессу sigtest, то он его проигнорирует, хотя dbgr выведет сообщение

5 7fc478feb2f0
 
15 7fc478feb2f0
.

Собственно вопрос: как можно пропустить сигнал в приложение, не останавливая трассировку?

 , , ,

cyber_eagle ()

Чтото тормозит загрузку линукса?

Наблюдаю такую картину:

#systemd-analyze blame
14.996s dev-sda4.device
12.865s systemd-tmpfiles-setup-dev.service
1.440s NetworkManager.service
.......
На sda4 находится корневая фс. Таким образом она очень замедляет загрузку системы. При этом монтирование напр sda1 после запуска занимает меньше секунды.

В логах в глаза кинулось вот что:

[    8.183262] EXT4-fs (sda4): re-mounted. Opts: errors=remount-ro
[    8.585898] systemd-journald[355]: Received request to flush runtime journal from PID 1
[   20.892784] EDAC MC: Ver: 3.0.0

Смущает большое время перед EDAC.

 , ,

cyber_eagle ()

Надежность ext4.........

Всем здасте! После сброса питания получил нерабочую фс. Восстановить никак не получается:

/mnt_> for i in $(dumpe2fs /dev/sda1 2>/dev/null | grep -i superblock | awk '{print $4}' | awk -F , '{print $1}'); do fsck -b $i /dev/sda1; sleep 1; done
fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)                                                                                            
/dev/sda1 has unsupported feature(s): metadata_csum                                                                     
e2fsck: Get a newer version of e2fsck!                                                                                  
fsck из util-linux 2.27.1                                                                                               
e2fsck 1.42.13 (17-May-2015)                                                                                            
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1                                                
                                                                                                                        
The superблок could not be read or does not describe a valid ext2/ext3/ext4                                             
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4                                                
ФС (and not swap or ufs or something else), then the superблок                                                          
is corrupt, and you might try running e2fsck with an alternate superблок:                                               
    e2fsck -b 8193 <устройство>                                                                                         
 or                                                                                                                     
    e2fsck -b 32768 <устройство>                                                                                        
                                                                                                                        
fsck из util-linux 2.27.1                                                                                               
e2fsck 1.42.13 (17-May-2015)                                                                                            
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1                                                
                                                                                                                        
The superблок could not be read or does not describe a valid ext2/ext3/ext4                                             
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4                                                
ФС (and not swap or ufs or something else), then the superблок                                                          
is corrupt, and you might try running e2fsck with an alternate superблок:                                               
    e2fsck -b 8193 <устройство>                                                                                         
 or                                                                                                                     
    e2fsck -b 32768 <устройство>                                                                                        
                                                                                                                        
fsck из util-linux 2.27.1                                                                                               
e2fsck 1.42.13 (17-May-2015)                                                                                            
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1                                                
                                                                                                                        
The superблок could not be read or does not describe a valid ext2/ext3/ext4                                             
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4                                                
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Bad magic number in super-block при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Недопустимый аргумент при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Недопустимый аргумент при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Недопустимый аргумент при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Недопустимый аргумент при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Недопустимый аргумент при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>

fsck из util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
fsck.ext4: Недопустимый аргумент при попытке открыть /dev/sda1

The superблок could not be read or does not describe a valid ext2/ext3/ext4
ФС.  If the устройство is valid and it really contains an ext2/ext3/ext4
ФС (and not swap or ufs or something else), then the superблок
is corrupt, and you might try running e2fsck with an alternate superблок:
    e2fsck -b 8193 <устройство>
 or
    e2fsck -b 32768 <устройство>


Как с таким боротся? Не может ведь быть такого, что все блоки покрашились...

 , , ,

cyber_eagle ()

Как работает команда source???

Всем здоровья! Смущает меня странная работа команды source ".".

Тккак в директориях из PATH я ее не нашел, то скорее всего она встроена в bash. Тогда понятно как она запускает скрипты...

НО только что я попробовал запустить 'source ranger' - он выполнился и поменял текущую директорию после закрытия. Хотя это вовсе не bash скрипт (он написан на python). Так же оказалось, что source ranger запускает python ranger в дочернем процессе bash (те ничем не отличается от обычного запуска без source)...

Каким образом она запускает скрипт (в частности python) так, чтобы потом получить его переменные окружения, и почему она отказывается запускать бинарные файлы, если python так же запускается как дочерний процесс??

 , , ,

cyber_eagle ()

hibernate в kubuntu17.04

Здравствуйте! Система намертво зависает с черным экраном при выходе со спящего режима. Перед зависанием, какое-то время идет считывание с диска.

Ждущий работает нормально.

OS: Ubuntu 17.10 artful
Kernel: x86_64 Linux 4.13.0-32-generic
DE: KDE 5.38.0 / Plasma 5.10.5
CPU: Intel Core i3-3220 @ 4x 3.3GHz
GPU: GeForce GTX 660 Ti
RAM: 1049MiB / 7929MiB
Swap: 12GB
nvidia_driver: nvidia_384

Перед этим были Mint 18, ubuntu-gnome 17, ubuntu 16. Все нормально выходили с hibernate.

По поводу логов: никаких crash в /var/log нет. в syslog:

Feb  8 19:08:38 PLOTVA baloo_file: message repeated 897 times: [ KDE Baloo File Indexer has reached the inotify folder watch limit. File changes will be ignored.]
Feb  8 19:09:22 PLOTVA NetworkManager[622]: <info>  [1518109762.8500] manager: sleep requested (sleeping: no  enabled: yes)
Feb  8 19:09:22 PLOTVA NetworkManager[622]: <info>  [1518109762.8501] manager: sleeping...
Feb  8 19:09:22 PLOTVA NetworkManager[622]: <info>  [1518109762.8503] manager: NetworkManager state is now ASLEEP
Feb  8 19:09:22 PLOTVA whoopsie[667]: [19:09:22] offline
Feb  8 19:09:23 PLOTVA systemd[1]: Reached target Sleep.
Feb  8 19:09:23 PLOTVA systemd[1]: Starting Hibernate...
Feb  8 19:09:23 PLOTVA kernel: [  115.938274] PM: Hibernation mode set to 'platform'
Feb  8 19:09:23 PLOTVA systemd-sleep[1144]: Suspending system...
------------{Здесь около 50 нулевых байт, которые никак не скопировать...и дальше лог после хардрезета}
Feb  8 19:10:59 PLOTVA rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="555" x-info="http://www.rsyslog.com"] start
Feb  8 19:10:59 PLOTVA rsyslogd: rsyslogd's groupid changed to 108
Feb  8 19:10:59 PLOTVA rsyslogd: rsyslogd's userid changed to 104
Feb  8 19:10:59 PLOTVA rsyslogd-2039: Could not open output pipe '/dev/xconsole':: No such file or directory [v8.16.0 try http://www.rsyslog.com/e/2039 ]
Feb  8 19:10:59 PLOTVA rsyslogd-2007: action 'action 9' suspended, next retry is Thu Feb  8 19:11:29 2018 [v8.16.0 try http://www.rsyslog.com/e/2007 ]
Feb  8 19:10:59 PLOTVA kernel: [    0.000000] microcode: microcode updated early to revision 0x1c, date = 2015-02-26
Feb  8 19:10:59 PLOTVA kernel: [    0.000000] random: get_random_bytes called from start_kernel+0x42/0x4e6 with crng_init=0
Feb  8 19:10:59 PLOTVA kernel: [    0.000000] Linux version 4.13.0-32-generic (buildd@lgw01-amd64-016) (gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3)) #35-Ubuntu SMP Thu Jan 25 09:13:46 UTC 2018 (Ubuntu 4.13.0-32.35-generic 4.13.13)
------------{дальше нормальный запуск...}
Те на том месте, где должен быть лог при выходе из спящего режима , находится кучка нулевых байт.

Аналогичная система на ноуте: После перехода в спящий режим включается, но сессия не восстанавливается (как обычный запуск). В логах нашел следующее:

Feb  8 19:33:38 PLOTVA2 systemd[1]: Activating swap /dev/disk/by-uuid/ddf77a1f-c9d6-464f-a34f-998d67160822...
Feb  8 19:33:38 PLOTVA2 swapon[444]: swapon: /dev/sda5: software suspend data detected. Rewriting the swap signature.

 , ,

cyber_eagle ()

Сайдэффект при вызове dlsym

Доброго ВС! Дорабатывал proxychains и словил крайне интересную ошибку... Изолировал ее на сколько мог:

#undef _GNU_SOURCE
#define _GNU_SOURCE

#include <sys/types.h>
#include <sys/param.h>

#include <dlfcn.h>
#include <errno.h>
#include <fcntl.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <inttypes.h>

#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>

void *dlsy7(void *, const char *); //special load from patched libdlsy7.so

void *(*true_dlopen)(const char *filename, int flags)=NULL;
void *(*true_dlsym)(void *handle, const char *symbol)=NULL;


void *dlopen(const char *filename, int flags) {
	if(true_dlopen==NULL) {
		true_dlopen=dlsym(RTLD_NEXT,"dlopen");
	};

	void * res=true_dlopen(filename,flags);

	printf("DLOPEN %s res = 0x%" PRIx64 "\n",(char *)filename,(unsigned long int)res);
	
	return res;
}


void *dlsym(void *handle, const char *symbol) {
	printf("DLSYM %s 0x%" PRIx64,symbol,(unsigned long int)handle);

	if(true_dlsym==NULL) {
		true_dlsym=dlsy7(RTLD_NEXT,"dlsym");
	};

	void *res,*res1;

	//res1=true_dlsym(handle, symbol); //DECOMENT THIS AND PROG WILL WORK
	res=dlsy7(handle, symbol);

	printf(" res = 0x%" PRIx64 " res1 = 0x%" PRIx64 "\n",(unsigned long int)res,(unsigned long int)res1);

	return res;
};

Собираю так

gcc main.c -fPIC -shared /usr/lib/x86_64-linux-gnu/libd7.so.2 -o libdltest.so && sed -i "s|libdl.so.2|libd7.so.2|g" ./libdltest.so && echo -e "\e[32mDONE\e[0m"
libd7.so.2 - Это предварительно обработанная libdl.so.2 с измененным именем символа dlsym на dlsy7 (чтобы можно было подменять вызов dlsym) Тесты:
LD_PRELOAD=./libdltest.so xed   #Работает
LD_PRELOAD=./libdltest.so chromium-browser

Using PPAPI flash.
--disable-new-tab-first-run --enable-user-scripts --ppapi-flash-path=/usr/lib/adobe-flashplugin/libpepflashplayer.so --ppapi-flash-version=
DLSYM dlopen 0xffffffffffffffff res = 0x7f5270541f70 res1 = 0x7f5271cc4568
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLSYM dlopen 0xffffffffffffffff res = 0x7f588926ef70 res1 = 0x7f588a9f1568
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLOPEN /usr/lib/chromium-browser/libwidevinecdmadapter.so res = 0x5564cafc6510
DLOPEN /usr/lib/adobe-flashplugin/libpepflashplayer.so res = 0x5564cafc7640
DLOPEN /usr/lib/chromium-browser/libwidevinecdm.so res = 0x5564cafc7190
DLOPEN libgdk-3.so.0 res = 0x7f5271c92000
DLSYM gdk_set_allowed_backends 0x7f5271c92000 res = 0x7f526b3183d0 res1 = 0x0
DLOPEN (null) res = 0x7f5271cc7168
DLSYM gtk_progress_get_type 0x7f5271cc7168 res = 0x0 res1 = 0x7f5271c97000
DLSYM localtime 0xffffffffffffffff res = 0x7f5270d1f930 res1 = 0x7ffd2e955040
DLSYM localtime64 0xffffffffffffffff res = 0x0 res1 = 0x7ffd2e955040
DLSYM localtime_r 0xffffffffffffffff res = 0x7f5270d1f920 res1 = 0x7ffd2e955040
DLSYM localtime64_r 0xffffffffffffffff res = 0x0 res1 = 0x7ffd2e955040
[13398:13398:0102/154843.197714:ERROR:browser_main_loop.cc(293)] Gtk: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported

В хроме возникла ошибка... Теперь раскоментируем строчку, помеченную //DECOMENT THIS AND PROG WILL WORK И опять проверяем
LD_PRELOAD=./libdltest.so chromium-browser

Using PPAPI flash.
--disable-new-tab-first-run --enable-user-scripts --ppapi-flash-path=/usr/lib/adobe-flashplugin/libpepflashplayer.so --ppapi-flash-version=
DLSYM dlopen 0xffffffffffffffff res = 0x7fb079af2f70 res1 = 0x7fb079af2f70
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLSYM dlopen 0xffffffffffffffff res = 0x7f6c2d6baf70 res1 = 0x7f6c2d6baf70
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLOPEN liblttng-ust-tracepoint.so.0 res = 0x0
DLOPEN /usr/lib/chromium-browser/libwidevinecdmadapter.so res = 0x5587d9ed3510
DLOPEN /usr/lib/adobe-flashplugin/libpepflashplayer.so res = 0x5587d9ed4640
DLOPEN /usr/lib/chromium-browser/libwidevinecdm.so res = 0x5587d9ed4190
DLOPEN libgdk-3.so.0 res = 0x7fb07b243000
DLSYM gdk_set_allowed_backends 0x7fb07b243000 res = 0x7fb0748c93d0 res1 = 0x7fb0748c93d0
DLOPEN (null) res = 0x7fb07b278168
DLSYM gtk_progress_get_type 0x7fb07b278168 res = 0x0 res1 = 0x0
DLOPEN libgail.so res = 0x0
DLSYM gtk_progress_get_type 0x7fb07b278168 res = 0x0 res1 = 0x0
DLOPEN libatk-bridge.so res = 0x0
DLSYM gtk_progress_get_type 0x7fb07b278168 res = 0x0 res1 = 0x0
DLOPEN /usr/lib/x86_64-linux-gnu/gio/modules/libgvfsdbus.so res = 0x558143a37180
DLSYM g_module_check_init 0x558143a37180 res = 0x0 res1 = 0x0
DLSYM g_module_unload 0x558143a37180 res = 0x0 res1 = 0x0
DLSYM g_io_module_load 0x558143a37180 res = 0x7fb06a1b7e20 res1 = 0x7fb06a1b7e20
DLSYM g_io_module_unload 0x558143a37180 res = 0x7fb06a1b7f70 res1 = 0x7fb06a1b7f70
DLOPEN /usr/lib/x86_64-linux-gnu/gio/modules/libgiognomeproxy.so res = 0x558143a38c00
DLSYM g_module_check_init 0x558143a38c00 res = 0x0 res1 = 0x0

#Дальше длинный лог, а за ним нормальный запуск хрома....
Тоесть записав результат true_dlsym в никуда мы получили совсем другое выполнение программы, хотя res и res1 ничем не отличаются... Получается, что dlsym имеет какойто сайдэффект, связанный с регионом памяти, в которой она находится??? Подскажите. как такое может быть? Как gtk связан с libdl? Почему такое происходит только в хроме?

 , ,

cyber_eagle ()

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