Шукати в цьому блозі

пʼятниця, 12 листопада 2010 р.

UUID

Задался вопросом, а откуда можно взять UUID устройств, для fstab'а, grub'а и т.д.
Всё оказалось проще чем думалось:
$ blkid 
/dev/sda9: UUID="34d86afb-97be-46aa-baa7-37ff65926829" LABEL="home" TYPE="reiserfs" 
/dev/sda1: LABEL="/" UUID="6d33b948-9e55-47b6-bfa5-52a1339624a8" TYPE="reiserfs" 
/dev/sda5: LABEL="/usr" UUID="a2b2ce57-fa58-4ca6-a997-3648f9c83e0d" TYPE="reiserfs" 
/dev/sda6: TYPE="swap" 
/dev/sda7: LABEL="/var" UUID="8821d5eb-e545-43e1-8d17-407e1e5e2126" TYPE="reiserfs" 
/dev/sda8: LABEL="/tmp" UUID="02af6195-2841-4ee9-8c0e-7c5b20a4b4e5" TYPE="reiserfs"

понеділок, 6 вересня 2010 р.

Списки управления доступом

Ну, что думаете, что система управления доступом в Linux'е заканчивается chown'ом и chmod'ом? Ошибаетесь - есть ещё ACL!

Итак, файловые системы extN, а так-же reiserfs (относительно других - просто не проверял) поддерживают ACL, но только в том случае когда они смонтированы с опцией acl:
sudo mount -o remount,acl /tmp

Конечно более кошерно это сделать через /etc/fstab:
/dev/cciss/c0d0p6 /tmp reiserfs rw,acl 0 0

Если acl активированы, управлять ими можно при помощи утилит setfacl и getfacl, которые устанавливаются с пакетом acl:
aptitude install acl

Попробуем разобраться что тут да к чему.

Создадит файл foo с правами 0x600:
~$ cd tmp
~/tmp$ touch foo
~/tmp$ chmod 600 foo
~/tmp$ ls -l foo
-rw------- 1 bar bar 0 Сен  6 13:57 foo

Глянем теперь в getfacl, что у нас получилось:
~/tmp$ getfacl foo
# file: foo
# owner: bar
# group: bar
user::rw-
group::---
other::---

Видим, что автоматически добавились три раздела, соответствующие обычным правам доступа. В дальнейшем эти разделы автоматически синхронизирутся с обычными правами доступа - chmod, chown - и в то же время обычные права доступа можно обновить через setfacl.
Создадим теперь несколько ACL'ов, добавим право на чтение и запись для пользователя mysql и только для чтения пользователю dovecot:
~/tmp$ setfacl -m u:mysql:rw foo
~/tmp$ setfacl -m u:dovecot:r foo
~/tmp$ getfacl foo
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
user:dovecot:r--
group::---
mask::rw-
other::---

Станет немного сложнее если захотет задать маску ACL. Маски используется при ограничении доступа явно поименованных пользователей и групп и не затрагивает права файла. Установим маску только для чтения и снова посмотрим на ACL:
~/tmp$ setfacl -m m::r foo
~/tmp$ getfacl foo
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-            #effective:r--
user:dovecot:r--
group::---
mask::r--
other::---

Обращаем внимание, что права для пользователя mysql были ограничены установленной маской; теперь это только чтение, а не чтение и запись.

Ну и напоследок, ACL можно удалить таким образом:
~/tmp$ setfacl -x u:dovecot: foo 
~/tmp$ getfacl foo 
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
group::---
mask::rw-
other::---


Кстати, все операции можно проводить не только с пользователями, но и с группами:
~/tmp$ setfacl -x u:dovecot: foo 
~/tmp$ getfacl foo 
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
group::---
mask::rw-
other::---

~/tmp$ setfacl -m g:dovecot:r foo 
~/tmp$ getfacl foo
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
group::---
group:dovecot:r--
mask::rw-
other::---

~/tmp$ setfacl -x g:dovecot: foo 
~/tmp$ getfacl foo
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
group::---
mask::rw-
other::---

Заметим, что команда ls -l пусть и не пытается отобразить расширенные ACL, но даёт понять, что они есть (знак + после стандартных прав доступа):
~/tmp$ ls -l foo
-rw-rw----+ 1 bar bar 0 Сен  6 13:57 foo

Кстати, getfacl и setfacl могут работать в контейнерной обработке. Например, чтобы скопировать права доступа с foo на foo1 достаточно сделать так:
~/tmp$ touch foo1
~/tmp$ getfacl foo | setfacl --set-file=- foo1
~/tmp$ getfacl foo
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
group::---
mask::rw-
other::---

~/tmp$ getfacl foo1
# file: foo1
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
group::---
mask::rw-
other::---

Ну и самое интересно. Можно указать унаследуемые от прав каталога ACL:
~/tmp$ mkdir acltest
~/tmp$ setfacl -d -m u:mysql:rw acltest
~/tmp$ getfacl acltest
# file: acltest
# owner: bar
# group: bar
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:mysql:rw-
default:group::r-x
default:mask::rwx
default:other::r-x

~/tmp$ cd acltest
~/tmp/acltest$ touch foo
~/tmp/acltest$ getfacl foo
# file: foo
# owner: bar
# group: bar
user::rw-
user:mysql:rw-
group::r-x   #effective:r--
mask::rw-
other::r--

Насколько часто пользоваться acl - дело каждого, тут не может быть универсальных советов.

setfacl -m u:foo:rw файл(ы)
| |  |  |
| |  |  +-- права rwx
| |  |
| |  +----- пользователь (или группа) заданные по имени или uid/gid
| |
| +-------- u = пользователь
|           g = группа
|           o = другие
|           m = маска
+--------- -m = изменить ACL
-x = удалить ACL

субота, 21 серпня 2010 р.

Назначение пароля и прав в MySQL

Так интенсивно пользуюсь, что забываю чаще чем хотелось бы.

Назначаем права и пароль пользователю на хосте (в данном случае права на все действия):
GRANT ALL ON база.* TO пользователь@хост IDENTIFIED BY 'пароль';
Если приложение старо как мир то может понадобиться вот такая хитрая манипуляция по назначению старого формата пароля:
SET PASSWORD FOR пользователь@хост = OLD_PASSWORD('пароль');
Ну и не забываем о том, что все изменения по назначению прав и паролей надобно применить:
FLUSH PRIVILEGES;

вівторок, 17 серпня 2010 р.

nginx теперь есть в репозитории для Debian'а

Ну коль кое-кто очень скромно упомянул обо мне в своей заметке то теперь настал мой черёд.
Итак, Сергей Петручок скромненько так был анонсировал мне новость, что был добавлен в uploader'ом в Debian.org.ua, после чего, не менее скромно заметил, что nginx теперь имеет свой репозиторий на сервере ftp2.debian.org.ua. Точнее не так, заметил, что благодаря усилиям и стараниям Олега Милаенко (omnix, OLEG-RIPE) был создан неофициальный репозиторий nginx, ну и далее по-тексту...

Что-же требуется для того чтобы обрести счастье и начать получать обновления для nginx "на автомате"? Да, собственно, немного:
# echo "deb http://ftp2.debian.org.ua/debian-dou/ lenny main" >> /etc/apt/sources.list

# gpg --keyserver keys.gnupg.net --recv-keys 0A3D4789
gpg: requesting key 0A3D4789 from hkp server keys.gnupg.net
gpg: key 0A3D4789: public key "Debian.org.ua Custom Repository " imported
gpg: Total number processed: 1
gpg:               imported: 1

# gpg --armor --export 0A3D4789 | apt-key add -
OK
Репозиторий содержит сборки не только для lenny, но и для squeeze, что вдвойне приятно. Конечно же для того чтобы получить репозиторий для squeeze необходимо первую команду поменять на:
# echo "deb http://ftp2.debian.org.ua/debian-dou/ squeeze main" >> /etc/apt/sources.list
Собственно всё. Теперь через aptitude можете установить nginx, а те у кого он раньше был установлен из deb-пакета смогут получить обновления.
Огромное человеческое спасибо Олегу и Сергею ;)

четвер, 24 червня 2010 р.

Выдержка из спецификации базовой станции Airmax MicroMAX

Честно спионерено с сайта Unidata.
Rx Sensitivity (BER 10-6) &SNR @ BW=10MHz Rx Sensitivity, dBm SNR, dB
64QAM3/4
64QAM1/2
16QAM3/4
16QAM1/2
QPSK3/4
QPSK1/2
BPSK
-74
-77
-82
-84
-88
-90
-94
21.0
19.5
15.5
12.0
9.0
6.5
3.0

середа, 16 червня 2010 р.

Познавательный тест "Шпрехен зи руссиш?"

Шпрехен зи руссиш?


Шпрехен зи руссиш?
Шпрехен зи руссиш?Тест на знание заимствованных слов, имён собственных и других хитростей русского языка. Такой небольшой «диктант» , позволяющий проверить вашу грамотность.
Александр прошел этот тест с результатом:
4 ошибки. Отличный результат! Я горжусь вами! Более высокий уровень знаний требуется только профессионалам, работающим с языком.
Пройти тест "Шпрехен зи руссиш?"
Все познавательные тесты на ШколаЖизни.ру

вівторок, 15 червня 2010 р.

Fix: Cyanogen 5.0.x на Dream и акселерометр.

Обновил себе прошивку с KiNgxKxlick 1.9 до Cyanogen 5.0.7, а затем до 5.0.8-test4, но заметил неприятный глюк - перестал нормально работать акселерометр. Вернулся на KiNgxKxlick 1.9 - работает. Т.е. это не физических глюк. Сегодня решил таки его побороть и было найдено простое и элегантное решение проблемы:
su
rm /data/misc/akmd* /data/misc/rild*
reboot
Всё элегантно и просто. :)