понедельник, 23 января 2012 г.

Почему скрипт не может быть setuid

Подробно вся тема раскрыта здесь. По-английски, да.
А если кратко - ядро Linux, как и ядра других *nix-like операционных систем, отрабатывая системный вызов на исполнение какого-либо файла, игнорирует suid/sgid биты атрибутов файла, если файл начинается с #! - то есть если это любой скрипт. Он запустится. Но запустится с правами того пользователя, который его запустил.
Из соображений безопасности. Так задумано. Обоснование - по ссылке...

четверг, 19 января 2012 г.

Шпаргалка по Aptitude

Продолжая ту же тему... Я как-то всегда предпочитал использовать чисто консольные и как можно более лёгкие утилиты, соответственно с aptitude особо не общался - apt-get вроде бы позволял сделать то же самое...
Но когда нужно было установить MariaDB вместо MySQL (эксперименты =) в результате мы всё равно вернулись к MySQL) - aptitude смогла предложить вариант удаления/установки пакетов, разрешающий зависимости, в полуавтоматическом режиме. Кстати, не надо торопиться прерывать её работу, если она предлагает вариант разрешения зависимостей, вас не устраивающий - мне она почему-то каждый раз предлагала сначала что-то вроде "оставить всё как есть и ничего не устанавливать". Ответьте ей "нет", возможно, несколько раз, и посмотрите разные варианты. Вполне возможно, что один из них вам подойдёт.
Ссылки:
Шпаргалка по Aptitude
Управление deb-пакетами с помощью aptitude: командный режим
Aptitude: особенности интерактивного режима

понедельник, 16 января 2012 г.

FAQ по apt-get в Debian (Ubuntu)

Продолжая тему работы с пакетами в Debian... Только ссылки:
Отличный FAQ по apt-get в Debian (Ubuntu)
Оригинал

пятница, 13 января 2012 г.

Debian - как откатить версию пакета

Иногда как что-нибудь обновишь... лучше бы не обновлял =) Сегодня это был php5-fpm из репозитория dotdeb.
Как из командной строки сделать downgrade?
Элементарно, вообще-то (возможно, придётся указывать -f... это лучше сначала сделать вместе с -s -V и внимательно прочитать вывод команды):
apt-get install php5-fpm=5.3.8...............
Упс... а какая версия стояла до того? И какие версии, собственно, вообще доступны?
Можно напрямую залезть в pool репозитория... но это же неудобно! А если репозиториев несколько?
Открыл для себя удобную утилиту - apt-show-versions. C ключом -a и именем пакета она выдаёт именно то, что надо - список доступных версий пакета. С указанием, из какого репозитория доступны. По умолчанию в минимальном дебиане не установлена, пакет так и называется apt-show-versions.
Опять не то - владелец dotdeb выкладывает в репозитории только последние версии пакета, убирая предыдущие...
Ага, оказывается, есть archives.dotdeb.org - там лежат некоторые из старых версий пакетов с dotdeb...
В результате откат на старую версию пакета был выполнен в непродвинутом варианте - скачал оттуда пакеты с предыдущей версией php и установил нужные мне через dpkg -i p1.deb p2.deb p3.deb ...
PS. В принципе, apt-show-version не обязателен - информацию о том, какая версия пакета из какого репозитория доступна и какая установлена в системе, можно извлечь из очень подробного вывода apt-cache showpkg name-of-package. Но вывод apt-show-versions компактней и удобней.

воскресенье, 8 января 2012 г.

Mplayer и VDPAU в Ubuntu - решение проблем с притормаживающим видео

У меня до сих пор стоит Ubuntu 10.10 Maverick Meerkat (в Lucid Lynx, 10.04 LTS, проблема та же). И с самого момента установки я ужасно страдаю от того, что VDPAU здесь работает гораздо хуже, чем когда у меня стояла 9.10 и mplayer из ppa, собранный с поддержкой VDPAU - при старте HD video (960x720, H.264) первые несколько секунд видео тормозит и "прыгает". Потом всё стабилизируется, но неприятно же...
Только сегодня до меня дошло, что в данных дистрибутивах до сих пор MPlayer первый, а ведь давно уже существует Mplayer2!
Цитата отсюда:
Much better support for VDPAU functionality on NVIDIA cards
Мгновенно найдена вот эта инструкция... далее понятно:
sudo add-apt-repository ppa:ripps818/coreavc
sudo apt-get update
sudo apt-get install mplayer
MPlayer у меня уже стоял, он просто обновился из этого ppa до 2-й версии...
...И тут же запущенный mplayer -vo vdpau -vc ffh264vdpau вполне плавно и безо всяких прыжков прокрутил начало HD video...
В 11.10 Oneiric Ocelot и альфе 12.04, насколько я понял, данная проблема отсутствует - MPlayer в репозиториях уже второй... Но многие до сих пор используют 10.04 LTS. Так что, возможно, кому-то и пригодится ;)

вторник, 20 декабря 2011 г.

Lubuntu 11.10 - расшарить "Общедоступные"

Преамбула: средний непродвинутый офисный пользователь, пересаженный из-под оффтопика =) в какую-нибудь linux-based desktop operating system, обычно хочет в числе прочего лазить по сети на другие машины и скидывать туда свои файлы / забирать выложенные / редактировать их прямо по сети - и не хочет задумываться о том, как именно это работает =)
В Ubuntu 10.04.3 LTS - до сих пор используем, консервативный и вылизанный Gnome 2 без сырых нововведений незаменим на машинах пользователей - это почти решалось средствами GUI (большинство уже знает - контекстное меню каталога, "Общий доступ", как именно это работает без прав администратора - искать по ключевым словам samba usershare). Почти - потому что у пользователей возникали естественные вопросы: "А почему это он мне файл в общедоступные положил, а я теперь его ни редактировать, ни стереть не могу?"
Всё правильно, права доступа. Да, Ubuntu хватает интеллекта назначить доступному для всех на чтение-запись каталогу права rwxrwxrwx. Но "net usershare ..." почему-то не умеет писать от имени владельца юзершары - по крайней мере, я не нашёл, как это сделать именно в юзершаре. По умолчанию nobody/nogroup, и права доступа тоже по умолчанию - право на запись имеет только владелец.
Обходил проблему указанием в /etc/samba/smb.conf глобальных директив (всё равно шара будет одна) create mask = 0666 и directory mask = 0777 - некрасиво, невозможно сделать средствами GUI и тяжело объяснять пользователям...
Сейчас пытаюсь переходить на Lubuntu - минималистичный такой desktop, libreoffice & thunderbird заменили на abiword+gnumeric & sylpheed (как минимум abiword не очень хорошо понимает документы word, но никто не мешает снести и поставить то, что удобно и привычно)... в общем-то есть всё, что действительно необходимо, и нет ничего лишнего!
Отличная вещь.
Юзершар - нет.
В смысле, нет плагина (или что там в нём) к PCManFM (файловый менеджер в Lubuntu), который умел бы делать юзершары из GUI.
В процессе поиска решения была найдена утилита system-config-samba, про которую я как-то раньше не знал =) Решение тоже не идеальное, но для одного пользователя получилось сделать общедоступный каталог и заставить самбу работать с этой шарой от имени самого пользователя, а не nobody. Что не очень хорошо с точки зрения безопасности =) , но раз уж допускаем нецентрализованный бардак с доступными на запись сетевыми каталогами у каждого пользователя, то чего уж тут... пусть так =)

Итак, пошаговая инструкция.
Терминал.
sudo apt-get install samba system-config-samba python-glade2
Последнее нужно для system-config-samba, эта утилита написана на питоне, и в пакет явно забыли добавить зависимость... Без python-glade2 из GUI system-config-samba запускается на долю секунды и сразу закрывается - даже сам факт запуска трудно заметить, как будто вообще ничего не происходит...
GUI.
Кнопка с ласточкой - Системные - Samba.
Ваш пароль. Предполагается, что ваш пользователь имеет права администратора. После установки Lubuntu единственный созданный в процессе установки пользователь их имеет =)
В открывшемся окне уже указан один общедоступный каталог, с названием ресурса print$. Чтобы он вам когда-то пригодился, у вас должен быть установлен принтер, в сети должны быть Windows-машины, которые нужно подключать по сети к этому принтеру и при этом обязательно автоматически устанавливать драйвер принтера... который ещё надо скачать с сайта CUPS и положить в print$, да не просто так, а выполнив дополнительные действия с конфигом самбы... В общем, интересующиеся читают man cupsaddsmb, а я у себя так никогда этого и не делал - тут слишком мало машин с Windows, и их можно просто напрямую подключить к CUPS - они умеют печатать через IPP (кроме Windows 7 Starter Edition, увы...)
Offtopic off =) Просто не трогайте этот ресурс, он стандартный системный.
Настройка - Параметры сервера. При желании можно указать workgroup - вашу машину будут видеть в этой рабочей группе, здесь сделал рабочие группы по комнатам, среди полусотни пользователей искать нужную машину стало удобнее =)
Опять оффтопик: имя машины самба берёт по умолчанию из имени хоста. Если почему-то надо его сменить - редактировать (с правами администратора, конечно) /etc/hostname и затем поправить в /etc/hosts хотя бы строку, в которой старое имя хоста и 127.0.1.1. Разумеется, чтобы имя сменилось в самбе, нужно перезапустить хотя бы самбу =)
Вкладка Безопасность. Режим аутентификации меняем на Ресурс. Гостевая учётная запись - ставим того пользователя, для которого создаём общедоступный каталог, это важно!!!
Нажимаете OK. Нажимаете зелёный плюс (или Файл - Добавить ресурс, то же самое). Каталог: нажимаете Обзор, находите от корня файловой системы /home/user/Общедоступные (а почему мы не в домашней папке пользователя? - а потому, что вы сейчас root! =), OK. Ставите птички Запись разрешена и Виден. Вкладка Доступ: включаете радиокнопку Предоставить доступ всем.
Всё.
Конфигурация сетевого каталога записана в /etc/samba/smb.conf, можно полюбоваться. Самба уже перезапущена. Доступ по сети к данному конкретному каталогу осуществляется с правами вашего пользователя, так что даже менять права доступа к папке Общедоступные не нужно...
Очевидный недостаток: если в системе два и более пользователя - "общедоступные" можно сделать только кому-то одному. Но в офисах в основном один пользователь, автоматически логинящийся в систему, под которым за компьютером может сидеть кто угодно, правда ?-)

Необходимый бантик. Запустите PCManFM ("Файловый менеджер"). Введите в строку адреса network:///, нажмите ввод - знакомая картина? Теперь выберите Закладки - Добавить закладку, и у вас будет что ответить на вопрос "а как тут в сеть зайти?"
smb:/// - это, насколько я понял, почти то же самое, но через network:/// ещё должны быть видны AFP-шары. Когда-то хотел попробовать сделать "Общедоступные" через AFP, но столкнулся с (забыл какими) трудностями. Если есть быстрый и аккуратный метод использовать AFP для того же, что здесь сделано через SMB - оставьте, пожалуйста, в комментах ссылку, и комьюнити будет вам благодарно ;)
Менее необходимый, но тоже нужный бантик: если вы хотите, чтобы при просмотре network:/// сразу показывались машины, принадлежащие не к рабочей группе WORKGROUP, а, например, к YOUR_WG - введите в терминале gconftool-2 -t string -s /system/smb/workgroup YOUR_WG

четверг, 7 июля 2011 г.

Установка Debian Squeeze на маршрутизатор - с самого начала

Всё предельно просто и прозрачно. Почти всё: на экране Software selection убираем птички не только с Graphical desktop environment, но и со Standard system utilities. Зачем? А зачем туда NFS server запихали по умолчанию? Вот и я не знаю. Но он мне не нужен, и я не хочу его после установки удалять - я хочу, чтобы он и не устанавливался. Туда же почтовый сервер... не факт, что именно на этой машине он нужен... но даже если и нужен - вместе со Standard system utilities ставится exim, а я привык к postfix и не вижу смысла менять удобный привычный инструмент.
При снятии этой птички теряем очень нужный мне less. Потом доставляю.
В результате получается не очень-то компактная система, больше 200 МБ - ну да ладно уже... вроде бы с помощью debootstrap можно установить "совсем базовую" систему Debian, вообще без лишних деталей... но необходимое количество телодвижений для настройки такой системы начинает резко возрастать - придётся вспомнить всё, что нужно с вашей точки зрения для нормальной работы системы... и это при том, что про большую часть этих пакетов вы обычно и не вспоминаете - ну вот rsyslogd, скажем :) логи пишутся как-то сами, да? :)))
Так что - остановился на вот таком варианте.
Мне нужен там и apache, и php, и mysql - но птички Web server и SQL database я не ставил. Апач мне нужен не тот, что по умолчанию, а mpm-itk. А вместо привычной программистам MySQL инсталлятор Debian ставит PostgreSQL... я не хочу сказать, что это плохо, но программисты почему-то хотят MySQL. Хотя, возможно, здесь это уже будет MariaDB...
Правда, вот птички DNS server и SSH server я поставил :) - тут вроде нормально... Вместе с bind9, правда, ставится lwresd, я пока не разбирался, нужен ли он - разрешение имён работает, и хорошо...
Результат меня почти устроил.
В первую очередь на установленной системе делаю sudo apt-get update && sudo apt-get upgrade - обновлений мало, но они есть ;) (опять какая-то дыра в bind9, насколько я помню...)
Затем устанавливаю пакеты less, bash-completion - удобнейшая вещь, под Ubuntu я очень привык к работе автодополнения не только по файловой системе, но и по командам того же apt-get. И, что ещё приятнее, именам устанавливаемых / удаляемых пакетов - не всегда я помню имя пакета с точностью до каждого символа, да и длинные они бывают, запомнить трудно, набирать долго =) И command-not-found - не настолько нужная вещь, да и немаленький python за собой зависимостью тянет, но вот нравится мне, когда в ответ на имя отсутствующей в системе команды bash не просто отвечает command not found, а выдаёт внятную и иногда очень уместную подсказку - какой пакет нужно поставить, чтобы команда появилась :)

В следующей серии - настройка интернет-подключения через pptp ;) Простая вещь, правда? Аккуратная, правильная настройка, полностью соответствующая идеологии построения системы Debian =)