среда, 23 ноября 2011 г.

FTP на домашнем сервере

Вот никогда не думал, что потребуется FTP дома, а тут прога в телефоне хочет именно этот протокол.  Пришлось поднять FTP.  Далее кратко описано как и что.

FTP серверов под линукс есть несколько.  После быстрого гугления я остановился на ProFTPD.  Вот тут есть пример толкового конфига с внятными пояснениями.  Есть и рекоммендаци на случай, если надо открыть доступ "снаружи".  Я как раз этим конфигом и воспользовался- мне и надо-то, что анонимный доступ на чтение в одну директорию и только из локалки.

Вот что получилось.

Устанавливаем сервер
На вопрос, как запускать, я ответил- через initd, НЕ standalone.  Много клиентов у этого сервера не будет.
sudo apt-get install proftpd

Правим /etc/shells
sudo vim /etc/shells

Туда добавляем:
/bin/false

Создаем директорию для обмена
sudo mkdir /home/FTP-shared

Создаем юзера
sudo useradd userftp -p password -d /home/FTP-shared -s /bin/false
Пароль password надо заменить на реальный.

Создаем директории для скачки/закачки
sudo mkdir /home/FTP-shared/public
sudo mkdir /home/FTP-shared/upload

Назначаем права
sudo chmod 755 /home/FTP-shared
sudo chmod 755 /home/FTP-shared/public
sudo chmod 777 /home/FTP-shared/upload

Правим конфиг
sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old
sudo vim /etc/proftpd/proftpd.conf

Туда добавляем (перед секцией Global):

<Limit LOGIN>
AllowUser userftp
DenyALL
</Limit>

<Directory /home/FTP-shared>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>

<Directory /home/FTP-shared/public/*>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>

<Directory> /home/FTP-shared/upload/>
Umask 022 022
AllowOverwrite on
<Limit READ RMD DELE>
DenyAll
</Limit>

<Limit STOR CWD MKD>
AllowAll
</Limit>
</Directory>


<Anonymous /home/FTP-shared>
   User userftp
   Group nogroup
   UserAlias anonymous userftp
   MaxClients 8 "Max number of clients reached (%m)"
   DisplayChdir .message

  <Directory *>
   <Limit WRITE>
    DenyAll
   </Limit>
  </Directory>
</Anonymous>

Правим /etc/fstab
sudo vim /etc/fstab

Туда добавляем путь, который будет доступен по FTP:
/stuff/books /home/FTP-shared/public none bind 0 0

Итоги
После рестарта сервера (не FTP, а компьютера), анонимному пользователю (и пользователю userftp) будет доступно содержимое директории /stuff/books- только на чтение из /home/FTP-shared/public.  Также, пользователь userftp сможет создавать директории и файлы в /home/FTP-shared/upload.

Проверено с помощью Total Commander и проги в телефоне.

воскресенье, 5 сентября 2010 г.

Монтируем NTFS раздел

Сначала надо создать директорию, куда будем монтировать и указать права, чтобы все могли читать и писать:

sudo mkdir /media/ntfs
sudo chmod 777 /media/ntfs

Надо узнать, что это за раздел (sdaX или UUID). Выполняем команду

sudo blkid

/dev/sda1: UUID="32BC7A86BC7A447F" TYPE="ntfs"
/dev/sda3: LABEL="DISK_D" UUID="183CA8473CA8222C" TYPE="ntfs"
/dev/sda5: UUID="684620ab-0bec-45b2-8aa7-d874a1c0867e" TYPE="ext4"
/dev/sda6: UUID="417c722d-aba4-4f58-a847-91d1eb9e5019" TYPE="swap"

Монтировать можно временно:

sudo mount -t ntfs-3g /dev/sda3 /media/ntfs

... или постоянно:

sudo vim /etc/fstab

В конец файла добавляем:

# ntfs partition
UUID=183CA8473CA8222C /media/ntfs ntfs-3g defaults,users 0 3

И перемонтируем все разделы:

sudo mount -a


суббота, 27 февраля 2010 г.

Установка ICC 11.1 на клиенте Ubuntu 9.10

Интеловский компилятор становится все более и более популярным среди линуксоидов, и, мол, хорошо оптимизирует для родных процов. Вот и я решил посмотреть, что это за зверь, поскольку процессоры AMD не юзаю, использую только Intel.

Установка на Ubuntu- это вам не кнопки нажимать. Никаких "sudo apt-get install icc". Интел постарался усложнить жизнь по максимуму, хотя пересобирать из исходников ничего не придется. Вот тут расписано (по-английски) что и как надо сделать для установки на 32- и 64-х битные Ubuntu 9.10 и на старые версии ОС. Также, указано, какую Java скачать/установить для графического дебаггера IDB. Я тут кратко изложу про 32-х битную Ubuntu 9.10 только в плане компилятора, до дебаггера пока руки не дошли.

Во-первых, надо установить вот что (занятно, для установки готового компилятора нужен GCC):
  • gcc
  • build-essential
  • g++
  • rpm
Потом надо установить старую библиотеку The GNU Standard C++ Library V3 из репов Lenny. На открывшейся странице скачиваем deb-пакет с libstc++5 для i386 и устанавливаем с помощью GDebi.

Затем надо скачать собственно ICC 11.1, для чего надо его сначала найти, вот ссылка. После подтверждения лицензии, откроется страница для скачивания, надо только кликнуть на нужный компилятор, и зарегистрироваться. Золотой ключик переписывать с экрана не обязательно, он должен прийти по мылу, как и адрес, где можно наконец-то скачать вожделенный компилятор (700 Mb с хвостиком).

Далее, скаченный архив надо распаковать. Затем, в консоли перейти в поддиректорию с файлами компилятора и запустить install.sh. В процессе надо будет выбрать, как устанавливать- для всех пользователей или только для текущего, еще раз принять лицензионное соглашение, затем указать, куда ставить.

После того, как компилятор установился, надо запустить скрипт для установки переменных среды. В моем случае это
$ source ~/intel/Compiler/11.1/069/bin/iccvars.sh ia32

Проверяем, что компилятор установлен:
$ icc --version

Да, для компиляции C++ надо вызывать icpc. icc- это для С.

HTML документация:
~/intel/Compiler/11.1/069/Documentation/en_US/documentation_c.html

суббота, 30 января 2010 г.

Раскраска SSH

Вот надоело любоваться на черно-белый промпт в SSH. Решил таки сделать его как на Ubuntu Desktop.

Цвет включается так. На сервере открываем ~.bashrc, находим в нем вот этот кусок. Когда на сервер заходим по SSH, то всегда выполняется ветка else. Правим, чтобы не выполнялась вообще. Код цвета я не знаю, но меня и дефолтный устраивает. Накрайняк можно в man посмотреть...


if [ "$color_prompt" = yes ]; then    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
 

четверг, 28 января 2010 г.

Wake On LAN

Я тут решил таки настроить WOL на сервере. А то непорядок получается- погасить я его удаленно могу, а вот включить- фиг.

Сначала надо разобраться с железом.

Ясное дело, надо убедиться, что BIOS поддерживает этот самый WOL. Мне, например, повезло, и включать в моем древнем BIOSе вообще ничего не понадобилось. Хотя, я по опциям и прошелся, но ничего не нашел, пришлось гуглить. Оказалось, что все включено по умолчанию и выключается какой-то мутной хренью в Power Manangement.

У меня сервер подключен к роутеру шнурком, так что проблемы с WOL over Wi-Fi у меня нет вообще. У кого сервер висит на вайфае- гугль вам в помощь.

Также, хорошо бы, чтобы у сервера был static IP.

Теперь настроим софт.

Я все делал как описано вот в этом посте. Там все по-английски, да и воды много. Плюс, в новой убунте чуток поменялся скрипт halt (поменяли опцию -i на $netdown, см. п. 7 внизу), о чем ниже. Вкратце, на сервере надо сделать вот что.

1. Поставить ethtool на сервер:
sudo apt-get install ethtool

2. Запомнить MAC адрес сервера и сетевой интерфейс:
ifconfig | grep HW

Смотрим, что там больше всего похоже на правду- какой MAC адрес знаком роутеру, тот интерфейс и надо использовать.

3. Создать скрипт wakeonlanconfig:
cd /etc/init.d/
sudo vim wakeonlanconfig

4. ... и записать в него:
#!/bin/bash
ethtool -s eth0 wol g

У меня интерфейс eth0, у вас может быть другой, см. п.2.

5. ... и еще установить и запустить наш скрипт:
sudo chmod +x /etc/init.d/wakeonlanconfig
sudo update-rc.d -f wakeonlanconfig defaults
sudo /etc/init.d/wakeonlanconfig

6. Неплохо бы и проверить, что скрипт работает:
sudo ethtool eth0

Должен написать что-то типа
Supports Wake-on: pg
Wake-on: g

7. Поправить скрипт halt, чтобы питание на сетевуху не вырубалось:
sudo vim /etc/init.d/halt

Ищем строчку типа "halt -d -f -i $poweroff $hddown" и убираем -i, чтобы было
halt -d -f $poweroff $hddown

В новой убунте -i заменили на переменную $netdown.

8. Вырубить сервер:
sudo halt

Смотрим, что с сетевухой. У меня, например, на ней после halt сразу же погас светодиод. Как это лечить- написано ниже. Если светодиод не погас, то

9a. Поставить wakeonlan на клиенте:
sudo apt-get install wakeonlan

9b. С клиента послать магический пакет:
wakeonlan AA:BB:CC:DD:EE:FF

MAC надо взять из п.2.

Отмечу, что иногда магический пакет теряется, поэтому слать их надо понастойчивей- раза два-три.

10. Дебажить, если сервер не хочет оживать.
Вот здесь, опять же по-английски, сказано, что проверять. Я тут перевел.

a) Смотрим, как настроен наш eth0 (или что там у вас):
cat /sys/class/net/eth0/device/power/wakeup

Если говорит "disabled", то надо добавить вот такую строку в /etc/init.d/wakeonlanconfig:
echo enabled > /sys/class/net/eth0/device/power/wakeup

b) Находим sysfs node сетевой карты:
lspci -tv

Ищем Ethernet Controller или что-то подобное. Например, получилось
+-1d.7 Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
+-1e.0-[0000:03]----08.0 Intel Corporation 82562EZ 10/100 Ethernet Controller
+-1f.0 Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge

В нашем случае- sysfs node = 1e.0

c) Находим Device сетевой карты в списке wakeup:
cat /proc/acpi/wakeup

Ищем там все тот же sysfs node. Например получили:
Device S-state Status Sysfs node
USB1 S3 disabled pci:0000:00:1d.0
USB2 S3 disabled pci:0000:00:1d.1
USB3 S3 disabled pci:0000:00:1d.2
USB4 S3 disabled pci:0000:00:1d.3
USBE S3 disabled pci:0000:00:1d.7
SLOT S5 disabled pci:0000:00:1e.0

Значит, нам нужен Device SLOT.

d) Добавляем наш Device в /etc/init.d/wakeonlanconfig.

Вот такую строку надо добавить в конец /etc/init.d/wakeonlanconfig:
echo SLOT > /proc/acpi/wakeup

У меня заработало только после такой правки конфига.

Если надо будить машину по интернету, то можно пробросить порт 9 UDP на роутере. Я это не пробовал.

вторник, 26 января 2010 г.

Отличный, отличный пост про Vim

Не знаю, кто как, а я на своем сервере все редактирую в Vim. Т.е. запускаю его раз в месяц, чтобы поправить какой-нить конфиг, потом нажимаю Insert, правлю, потом Esc, потом :wq и все. Это потому что еще что-то (:wq) из vi помню с институтских времен.

А тут в Deepen C++ - просто отличный пост. Со шпаргалкой по клавишам, с плагинами и пр. Бум вникать.

суббота, 23 января 2010 г.

Про SSH

Я вот тут собрал с хабра ссылки про SSH.

  • Псевдоним соединения (конфиг с именем юзера, сервера, номером порта)
  • Авторизация по ключу (RSA)
  • Передача файлов по команде scp
  • X11 графика через SSH
SSHFS:
Для Windows: Dokan SSHFS

  • Автоматическая повторная авторизация (controlmaster, controlpath)
  • Туннелирование по SSH
Туннели и порты: