LINUX.ORG.RU

Сообщения LIKAN

 

multilib спровоцировал катастрофу

Форум — General

Раскомментировал multilib реп на х86_64. Тут же отвалился pacman и сеть. Перезагрузился, система больше не загружается. В какой момент я себе в ногу выстрелил?

 

LIKAN
()

Как изменить алгоритм хэширования пароля

Форум — Admin

В моём дистрибутиве используется DES для хэширования пароля, как его заменить на md5 например?

LIKAN
()

Множественный вызов seteuid

Форум — Development

Разбираюсь с кодом старенького фаззера системных вызовов. В коде присутствует вот такая штука:

seteuid(65536);
seteuid(65536);
(void)setgid(65536);
seteuid(65536);
Вопрос, зачем это делать столько раз?

 

LIKAN
()

Не получается смонтировать облачный диск при помощи davfs2

Форум — General

Не могу смонтировать диск mail.ru при помощи davfs2. Папку создал, юзера в группу добавил, и получаю такое:

# mount.davfs -o uid=1000 https://webdav.cloud.mail.ru/ /home/likan/mailru/
Please enter the username to authenticate with server
https://webdav.cloud.mail.ru/ or hit enter for none.
  Username: likan26.09@mail.ru
Please enter the password to authenticate user likan26.09@mail.ru with server
https://webdav.cloud.mail.ru/ or hit enter for none.
  Password:  
WARNING: gnome-keyring:: couldn't connect to: /home/likan/.cache/keyring-vr2zeQ/pkcs11: Отказано в доступе
p11-kit: failed to initialize module: gnome-keyring: An error occurred on the device
mount.davfs: Mounting failed.
301 Moved Permanently
Если верить гуглу, такое происходило от того, что люди писали http вместо https, но тут у меня все норм.

 ,

LIKAN
()

простейшая selinux политика

Форум — General

Пользователь с типом user_t хочет открывать файл /var/log/dmesg с типом var_log_t. Для этого в файле dmesgread.te создается политика следующего вида:

odule dmesgread 1.0;

require {
        type var_log_t;
        type user_t;
        class file open
        class file read
        class file getattr;
}

#============= user_t ==============
allow user_t var_log_t:file {open read getattr};
Применяю
# semodule -i  dmesgread.pp
Применяется подозрительно долго. Но попытка открыть /var/log/dmesg заканчивается Permission denied. В /var/log/audit/audit.log вижу вот такое
type=AVC msg=audit(1386355300.812:358): avc:  denied  { open } for  pid=9683 comm="cat" name="dmesg" dev=sda2 ino=786454 scontext=user_u:user_r:user_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=file
type=SYSCALL msg=audit(1386355300.812:358): arch=40000003 syscall=5 success=no exit=-13 a0=bf99c901 a1=8000 a2=0 a3=1 items=0 ppid=2774 pid=9683 auid=502 uid=502 gid=502 euid=502 suid=502 fsuid=502 egid=502 sgid=502 fsgid=502 tty=tty2 ses=2 comm="cat" exe="/bin/cat" subj=user_u:user_r:user_t:s0 key=(null)

Т е проблема с операцией open, хотя политикой она разрешена. В режиме permissive все открывается нормально. ЧЯНД?

 

LIKAN
()

Перехват исключений

Форум — Development

В литературе обычно натыкаюсь на такой вид вызова catch:

catch (openFile f ReadMode)
     (\e -> hPutStr stderr ("Couldn’t open " ++
            f ++
            ": " ++
            show e))
Почему обрабочик исключения имеет вид λ-терма, и что такое е?

ЗЫ. Начал изучать недавно, прошу больно не пинать.

 

LIKAN
()

Очепятки в книге по функциональному программированию

Форум — Development

В занимательной книженции Душкина «14 занимательных эссе о языке Haskell и функциональном программировании» в разделе про комбинаторы есть такой пример кода:

data Combinator = Var String
		| App Combinator Combinator
		| Lam String Combinator
  deriving Eq
instance Show Combinator where
  show (Var x)= x
  show (App x y) = case y of
     App _ _ -> showLam x ++
		"(" ++
		show y ++
		")"
     _	     -> showLam x ++
		showLam y
    where
	  showLam l@(Lam _ _) = "(" ++
	  			show l ++
				")"
	  showLam x	      = show x
  show (Lam x e) = "\\" ++
		   x ++
		   "."
		   ++ show e
i = Var "I"
k = Var "K"
s = Var "S"

free :: String -> Combinator -> Bool              
free x (Var y)	   = x == y
free x (App e1 e2) = free x e1 || free x e2
free x (Lam y e)   = free x e

transform :: Combinator -> Combinator
transform (Var x) = Var x
transform (App x y) = App (transform x)
                          (transform y)
transform (Lam x (Var y)) | x == y
  = i transform (Lam x e)
                          | (not . free x) e
  = App k (transform e) transform (Lam x l@(Lam y e))
                          | free x e
  = transform (Lam x (transform l))
transform (Lam x (App e1 e2))
  = App (App s (transform (Lam x e1)))
        (transform (Lam x e2))
Невооруженным глазом видны ошибки (естественно hugs его жрать отказывается). Тут е черт знает откуда взялась:
transform (Lam x (Var y)) | x == y
  = i transform (Lam x e)
Тут вообще синтаксически неверно:
                          | (not . free x) e
  = App k (transform e) transform (Lam x l@(Lam y e))
Я внес вот такие изменения:
transform :: Combinator -> Combinator
transform (Var x) = Var x
transform (App x y)= App (transform x)
						 (transform y)
transform e@(Lam x (Var y)) | x == y
  = App i (transform (Lam x e))
			  | (not . free x) e
  = App k (transform e) 
transform (Lam x l@(Lam y e))  | free x e
  = transform (Lam x (transform l))
transform (Lam x (App e1 e2))
  = App (App s (transform (Lam x e1)))
	(transform (Lam x e2))
Но как человек, увидевший haskell практически вчера, я своим изменениям естественно не доверяю. Правильно ли мне удалось уловить мысль автора?

Перемещено mono из talks

 

LIKAN
()

Помогите разобраться с разложением комбинатора в базисе

Форум — Talks

Сейчас осваиваю эссе Душкина, затормозился на комбинаторах. Задание разложить комбинатор Ψabcd = a(bc)(bd).Формальный алгоритм мне нигде найти не удалось, Душкин приводит несколько правил разложения, но каким образом эти правила применять, тоже не очень ясно. Посмотрел решения заданий в «Комбинаторная логика в программировании.» Вольфенгагена, там тоже не очень ясно, по какому принципу выбирается та иная схема преобразования. Где можно об этом понятно и доступно почитать?

LIKAN
()

Не могу понять принцип сравнения Double

Форум — Development
import Data.List
range :: (Double,Double)->(Double,Double)-> Double
range (x1,y1) (x2,y2) = sqrt((y2-y1)^2 + (x2-x1)^2)
 
list = sort [range (1.0,1.0) (1.0,4.0), range (1.0,1.0) (3.0, 1.0),  range (3.0,1.0) (1.0,4.0)]
 
test =  a == b
        where a = (head(reverse list))^2
              b = ((head (tail list))^2 + (head list)^2)

Получается, что а=13.0, b =13.0, но test возвращает false. В чем дело?

 

LIKAN
()

Объясните как работает iszero в λ-исчислении

Форум — Talks

Не могу разобраться. Вот есть λn.n(λx.false)true. Можете привести выкладки для λfx.x и, например, для λfx.fx. В книжках пишут, что мол слишком просто, чтоб доказывать. И можно ссылкочку на док-во (а лучше, на какое-нибудь доступное пособие)?

LIKAN
()

Чем открыть текстовый файл в 2 гб

Форум — General

Как прочитать что-нибудь из текстового файла весом в 2гб?

LIKAN
()

Доступ к виртуальной машине на удаленном хосте.

Форум — General

Есть удаленный хост с доступом по ssh. На хосте есть виртуалка под VirtualBox. Существует ли возоможность запустить эту виртуалку удаленно, ну и собственно перехватить управление этой машиной?

LIKAN
()

Compiz-core: В поисках glib.h

Форум — General

В попытках собрать compiz-fusion (debian-testing) запускаю make и получаю вот такую штуку:

In file included from /home/.../compiz/core/src/region.cpp:32:0:
/home/.../compiz/core/include/core/core.h:55:18: fatal error: glib.h: Нет такого файла или каталога
И вправду, в core.h написано:
 #include <glib.h>
Да вот незадача, glib.h поживает себе мирно в /usr/include/glib-2.0/glib.h. Как это объяснить системе сборки?

 ,

LIKAN
()

Не могу настроить учетку в Empathy

Форум — Desktop

Debian testing, Gnome 3.4.2. В Emapthy не могу настроить учетки, т.е. жму на кнопку «Настроить учетную запись», и.... не происходить ничего. Тоже самое, если использовать Правка->Учетные записи (F4). Кто-то с таким непотребным поведением сталкивался?

 ,

LIKAN
()

Не компилится модуль ядра Catalyst 13.1 legacy.

Форум — Desktop

На такой вот оси

Linux LIKAN-PC 3.10-2-686-pae #1 SMP Debian 3.10.7-1 (2013-08-17) i686 GNU/Linux
Не собирается модуль ядра для проприетарных дров амд 13.1 legacy. Выплевывает вот такой вот лог http://pastebin.com/6Sx19G2v Поначалу жаловался, что мол не установлены заголовочные файлы ядра (хотя все сделал, как доктор прописал apt-get install linux-headers-$(uname -r)), видите ли, файлика ему вот такого не хватает : /lib/modules/3.10-2-686-pae/build/include/linux/version.h. Ну я и симлинкнул вот отсюда : /usr/include/linux/version.h. Это часом не было ошибкой?

LIKAN
()

Что такое KERNEL_ADDR в trinity ?

Форум — Development

В небезысвестном фаззере системных вызовов trinity для каждой поддерживаемой архитектуры задефайнена некая константа KERNEL_ADDR. Есть у кого идеи, что это такое, и как её определили? Глянуть можно тут

LIKAN
()

Как загрузить модуль в l4linux

Форум — General

Вопрос наверное оч глупый, но как загрузить модуль в l4linux? Для того чтоб воспользоваться insmod - ом, нужно как то скопировать файл модуля извне, как это сделать?

 

LIKAN
()

Использование системных вызовов в режиме ядра

Форум — Development

Можно ли находясь в режиме ядра использовать системный вызов? Есть например в файле /usr/src/linux-headers<версия>/include/linux/syscalls.h

asmlinkage long sys_open(const char __user *filename,
                                int flags, int mode);
Только вот это просто объявление функции, самой функции нет. Что делать, как мне использовать какой-нибудь open?

 

LIKAN
()

Как ядро определяет, какие модули грузить?

Форум — General

Сейчас речь идет не об оборудовании или ещё каких-либо жизненно важных функциях, а о сторонних приложениях, добавляющие свои модули. Те грубо говоря, есть приложение (kaspersky av),которое добавляет свой модуль в автозагрузку. Не понятно как оно это делает и не понятно каким этот модуль идет по очереди во время загрузки. В modules.order соответствующего модуля нет, так же нет его ни в /etc/modules, ни в modprobe.d.

 

LIKAN
()

msgget все время возвращает нули.

Форум — Development

Нужно создать 5 очередей сообщений, делаю следующим образом

void creatqIPC(){
	int key;

	key=ftok(logpath,1);
	printf("key=%d\n",key);
	if(qid1 = msgget(key, IPC_CREAT | 0660)==-1){
		printf("Can't create the queue\n");
		exit(1);
	}

	printf("QID = %d\n", qid1);

	key=ftok(logpath,2);
	printf("key=%d\n",key);	
	if(qid2 = msgget(key, IPC_CREAT | 0660)==-1){
		printf("Can't create the queue\n");
		exit(1);
	}

	printf("QID = %d\n", qid2);

	key=ftok(logpath,3);
	printf("key=%d\n",key);	
	if(qid3 = msgget(key, IPC_CREAT | 0660)==-1){
		printf("Can't create the queue\n");
		exit(1);
	}

	printf("QID = %d\n", qid3);

	key=ftok(logpath,4);
	printf("key=%d\n",key);	
	if(qid4 = msgget(key, IPC_CREAT | 0660)==-1){
		printf("Can't create the queue\n");
		exit(1);
	}

	printf("QID = %d\n", qid4);

	key=ftok(logpath,1234);
	printf("key=%d\n",key);	
	if(qid5 = msgget(key, IPC_CREAT | 0660)==-1){
		printf("Can't create the queue\n");
		exit(1);
	}

	printf("QID = %d\n", qid5);

}
qidn и logpath - глобальные, так вот на экране я вижу вот такое чудо
key=16867675
QID = 0
key=33644891
QID = 0
key=50422107
QID = 0
key=67199323
QID = 0
key=-771661477
QID = 0
Почему такое происходит?

 

LIKAN
()

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