Для того, чтобы примонтировать WebDAV в FreeBSD 9.2 нам нужно установить порт:

pkg_add fusefs-sshfs

cd /usr/ports/sysutils/fusefs-wdfs/
make install clean

/usr/local/etc/rc.d/fusefs start

Создаём точку монтирования:

mkdir /home/user/yandex.disk

Монтируем таким образом:

wdfs https://webdav.yandex.ru /home/user/yandex.disk -o accept_sslcert,username=LOGIN,password=PASSWORD

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

sysctl vfs.usermount=1

chmod 766 /dev/fuse

chmod 766 /dev/fuse0

/usr/local/etc/rc.d/fusefs restart

Добавляем в автозагрузку:

echo ‘fusefs_enable=”YES”‘ >> /etc/rc.conf

Возможно, на каком-то из этапов понадобится подгрузить модуль:

kldload fuse_module/fuse.ko

Почему-то часто забываю как правильно написать формат команды в /etc/sudoers (во FreeBSD /usr/local/etc/sudoers), чтобы вызывать sudo su без ввода пароля, оставлю же это здесь:

user     ALL=(ALL) NOPASSWD: ALL

 

Для того чтобы установить VNC Server на Ubuntu linux и при этом загружался нормальны рабочий стол, а не чёрно-белая хрень, нужно выполнить следующее:

sudo apt-get install vnc4server

Если Вы используете lxde или у Вас она по крайней мере установлена, то далее нужно отредактировать файл ~/.vnc/xstartup и привести его к такому виду:

 

#!/bin/sh

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourceslxpanel &

/usr/bin/openbox-session &
/usr/bin/lxsession -s LXDE &

Далее запускаем vncserver, вводим пароль дважды и подключаемся к хосту по адресу x.x.x.x:1, где 1 — это номер виртуального экрана.

Чтобы остановить vncserver необходимо выполнить следующее:

vncserver -kill :1

где :1 — это номер виртуального экрана.

Если нужно запустить vncserver с особым разрешением, для этого запускаем его следующим образом:

vncserver -geometry 800×600

Это всё.

Пришлось мне как-то разрабатывать на Java проект, который был завязан на работе с базой данных MySQL. Я нашёл в Сети класс, который удобно работает с SQLite, и переделал его для работы с MySQL, собственно сделать это было нетрудно, дополнительно в этот класс можно добавить несколько методов для удобной работы, но это уже на Ваше пожелание. Собственно, для своих задач эти методы я создавал, а Вам они будут скорее всего не пригодятся, оставлю самые общие лишь.

Добавлены некоторые методы, возвращающие массив объектов из базы данных, переделать можно по своему усмотрению.

Уточняю, этот класс работает с базой данных минуя ORM, т.е. не использует ORM.

package example.Database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class MySQLConnect {

    private Connection con = null;

    public MySQLConnect() {
        //для того, чтобы подключение можно было сделать позже
    }

    public MySQLConnect(String url, String port, String dbName, String login, String pass) {
        setConnection(url, port, dbName, login, pass);
    }

    public MySQLConnect(String url, String dbName, String login, String pass) {
        setConnection(url, "3306", dbName, login, pass);
    }

    public void setConnection(String url, String port, String dbName, String login, String pass) {
        try {
            if (port == null) {
                port = "3306"; // если порт не указан, то порт по умолчанию
            }
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://" + url + ":" + port + "/" + dbName, login, pass);
        } catch (ClassNotFoundException ex) {
            System.err.println("MySQLdb: Cannot find this db driver classes. Install com.mysql.jdbc driver!");
        } catch (SQLException e) {
            System.err.println("MySQLdb: Cannot connect to " + dbName);
        }
        if (con != null) {
            System.out.println("Connection to DB established successfully.");
        }
    }

    public Connection getConnection() {
        return con;
    }

/*	метод, выполняющий просмотр базы данных, по сути не нужный,
*	т.к возвращает лишь успешно ли выполнена операция, но для
*	примера выполнения запроса, оставлю 
*/
    public boolean executeQuery(String query) {
        try {
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery(query);
            rs.close();
            st.close();
            return true;
        } catch (SQLException e) {
            System.err.println("There are problems with the query " + query + " in method "executeQuery"");
            e.printStackTrace();
            return false;
        }
    }

    public void executeUpdate(String query) { //метод, выполняющий изменения в БД
        try {
            PreparedStatement statement = con.prepareStatement(query);
            statement.executeUpdate();
        } catch (SQLException e) {
            System.err.println("There are problems with the query " + query + " in method "executeUpdate"");
            e.printStackTrace();
        }
    }

    public Object[][] getQueryResultByParam(String query, String idColumnName, String param) {
        try {
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery(query);

            ArrayList idArrayList = new ArrayList();
            ArrayList dataArrayList = new ArrayList();

            while (rs.next()) {
                idArrayList.add(rs.getString(idColumnName));
                dataArrayList.add(rs.getString(param));
            }

            Object[][] result = new Object[2][];

            result[0] = idArrayList.toArray();
            result[1] = dataArrayList.toArray();

            rs.close();
            st.close();
            return result;
        } catch (SQLException e) {
            System.err.println("There are problems with the query " + query + " in method "getQueryResultByParam"");
            e.printStackTrace();
            return null;
        }
    }

    public Object[][] getQueryResultByParam(String query, String param) {
        return this.getQueryResultByParam(query, "id", param);
    }

    public Object[][] getParam(String tableName, String param) {
        return this.getQueryResultByParam("SELECT id, " + param + " FROM " + tableName + " WHERE deleted = '0' ORDER BY id", "id", param);
    }
}

Речь идёт о том, как сделать чтобы к графической среде можно было удалённо подключиться под определённым пользователем (или любым, но предварительно зарегистрированным и прописанным в конфиге), но при этом на реальном компьютере/сервере среда фактически была выключена, т.е. работала, но виртуально, на виртуальном экране (который мы при подключении прописываем через двоеточие, например 192.168.1.1:2, где «:2» — это не порт подключения, а виртуальный экран удалённого компьютера/сервера.

Установить vnc-server для Mandriva 2011.0 достаточно просто, для этого запускаем консоль, в которой пишем:

su

вводим пароль суперъюзера,

urpmi vnc-server

Ниже приводится описание шагов, необходимых для настройки постоянного рабочего стола с помощью VNC в Red Hat Enterprise Linux 4.

Первым делом следует установить пароль на VNC-сервере. Для этого зарегистрируйтесь в системе и выполните команду vncpasswd. Сервис VNC не запустится, пока вы не установите пароль.

Далее, с помощью команды su — получите права пользователя root и отредактируйте файл /etc/sysconfig/vncservers. Для настройки двух постоянных рабочих столов, одного для пользователя fred, а другого для joe (который предпочитает больший размер рабочего стола, чем fred), этот файл должен выглядеть как Пример 1. Файл /etc/sysconfig/vncservers.

# The VNCSERVERS variable is a list of display:user pairs.
#
# Uncomment the line below to start a VNC server on display :1
# as my ‘myusername’ (adjust this to your own). You will also
# need to set a VNC password; run ‘man vncpasswd’ to see how
# to do that.
#
# DO NOT RUN THIS SERVICE if your local area network is
# untrusted! For a secure way of using VNC, see
# <URL:http://www.uk.research.att.com/vnc/sshvnc.html>.

VNCSERVERS=”1:fred 2:joe”

# fred’s VNC options
VNCSERVERARGS[1]=”-geometry 1024×768″

# joe’s VNC options
VNCSERVERARGS[2]=”-geometry 1280×1024″

Пример 1. Файл /etc/sysconfig/vncservers

Для запуска всех рабочих столов VNC во время загрузки системы, активируйте сервис VNC командой chkconfig vncserver on (вы должны иметь права root). Чтобы запустить рабочие столы VNC немедленно, выполните команду service vncserver start. Оба пользователя смогут теперь подключиться клиентами VNC, fred к дисплею 1, а joe к дисплею 2.

Сессия рабочего стола по-умолчанию в VNC очень простая, использует менеджер окон twm. Вероятно, вы захотите работать с вашим обычным менеджером окон. Для этого, отредактируйте файл /home/username/.vnc/xstartup и удалите символ # из двух строк, следующих за строкой Uncomment the following two lines for normal desktop.

Session ID в строке адреса браузера мешает, когда необходимо дать ссылку на определённую тему форума, приходится вручную обрезать URL, удаляя из него запись вида &sid=xxxx, но неопытные пользователи могут этого не сделать, в результате чего опубликовать на другом ресурсе свой SID, что может быть чревато угоном аккаунта.

Для того чтобы cookies корректно работали, необходимо чтобы некоторые директивы файла php.ini были настроены следующим образом:

session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0

После чего необходимо внести следующие изменения в php-файл inсludes/funсtions.php скрипта phpBB:

После кода

// Assign sid if session id is not specified
if ($session_id === false)
{
$session_id = $_SID;
}

необходиомо добавить:

global $user;
if ($user->data[‘user_id’] == ANONYMOUS)
{
$session_id = false;
}

После чего &sid=xxx исчезает из строки адреса браузера, что позволяет дать нормальную ссылку на определённую тему.

Установка

Прежде, чем вы сможете управлять дисковыми квотами, необходимо установить соответствующее ПО. Пакет со всем необходимым называется quota. Установить его легко и просто:

  1. откройте терминал;
  2. войдите в систему от имени root при помощи команды su;
  3. выполните команду: yum install quota;
  4. согласитесь со всеми зависимостями;
  5. завершите установку.

Теперь вы готовы приступить к процессу настройки дисковых квот. Команды, описываемые ниже, требуют привилегий суперпользователя, так что не забудьте войти в систему от его имени при помощи команды su.

Настройка

Первым делом необходимо отредактировать файл /etc/fstab, чтобы система знала, к каким разделам применять квоты. Далее в примерах предположим, что каталог /home в вашей системе смонтирован из отдельного раздела. Допустим, изначально фрагмент нашего /etc/fstab, в котором монтируется /home выглядел так:

/dev/VolGroup00/LogVol02    /home     ext3     defaults     1 2

Поскольку мы собираемся управлять квотами для пользователей, то как раз эту строку и будем модифицировать, добавив опцию монтирования usrquota. Примерно так должна выглядеть строка после модификации:

/dev/VolGroup00/LogVol02     /home     ext3     defaults,usrquota     1 2

После того, как /etc/fstab будет отредактирован и сохранён, соответствующая файловая система должна быть смонтирована заново, чтобы изменения вступили в силу. Прежде, чем вы перемонтируете файловую систему, убедитесь в том, что она никем не используется. Заставьте всех пользователей покинуть систему или принудительно завершите их работу, после чего перемонтируйте файловую систему:

mount -o remount /home

Создание базы данных

Несмотря на то, что теперь ваша система знает о том, что для файловой системы включены дисковые квоты, она пока ещё понятия не имеет, как с этим работать. Прежде, чем квоты начнут приносить нам пользу, необходимо сперва определить текущее положение дел, то есть, кто и сколько занимает дискового пространства в данный момент. Для этого существует утилита quotacheck. Для того, чтобы построить таблицы использования дискового пространства пользовательскими файлами, необходимо запустить quotacheck с опцией -c, а также опцией, определяющей, хотим ли мы использовать квоты только для пользователей, или только для групп или же для тех и других одновременно. В нашей статье мы задались целью управлять квотами для пользователей, так что команда будет выглядеть так:

quotacheck -cu /home

После того, как программа закончит свою работу, необходимо запустить её заново, только в этот раз уже с другими опциями:

quotacheck -avu

Опция -a заставляет утилиту проверить все смонтированные разделы с включёнными квотами, а опция -v активирует подробный вывод сообщений о ходе работы программы.

После того, как quotacheck завершит свою работу, мы будем иметь в своём распоряжении инициализированную базу данных, содержащую всю необходимую информацию об использовании пользователями диска. Однако это ещё не всё. Теперь необходимо настроить квоты для пользователей.

Настройка квот для пользователей

Как вы и ожидали, у вас имеется возможность определять дисковую квоту для каждого пользователя. Такая возможность очень удобна, поскольку разные пользователи могут нуждаться в различном объёме пространства для выполнения своей работы. Например, графические дизайнеры могут потребовать больше места на диске, поскольку работают с довольно немаленькими файлами. Основной командной, используемой для управления дисковыми квотами является edquota. Пользоваться этой утилитой очень просто. Просто введите имя команды, а затем имя пользователя, для которого вам необходимо определить квоту. Допустим, логин нашего пользователя — stephanie. Команда будет такой:

edquota stephanie

После того, как вы запустите эту команду, запустится текстовый редактор по умолчанию и вы увидите примерно следующее:

Disk quotas for user stephanie (uid 507):
Filesystem                blocks     soft     hard    inodes   soft   hard
/dev/VolGroup00/LogVol02  440436        0        0     41      0      0

Всё, что вам нужно — это отредактировать hard и soft-лимит. Что это такое?

Hard-лимит (жёсткий лимит) определяет объём дискового пространства, больше которого пользователь не сможет занять никогда. Soft-лимит (мягкий лимит) определяет объём дискового пространства, больше которого пользователь сможет занять своими файлами в течение определённого т. н. grace-периода.

Давайте определим для пользователя stephanie жёсткий лимит размером в 5 GB. Для этого необходимо заменить 0 в колонке hard на 10485760 (5 GB в блоках). Сохраните файл и дайте команду:

quota stephanie

чтобы убедиться в том, что квота была установлена успешно.

Если вы хотите установить мягкий лимит, вам необходимо установить его таким, чтобы он был меньше, чем жёсткий лимит. Допустим, вам необходимо установить мягкий лимит для нашего пользователя размеров в 4 GB. Замените 0, стоящий в колонке soft на 8388608. После того, как вы сохраните сделанные изменения, необходимо установить размер grace-периода. Для этого выполните команду:

edquota -t

После запуска команды вы увидите примерно следующее:

Filesystem                  Block grace period     Inode grace period
/dev/VolGroup00/LogVol02         7days                  7days

Измените значения в колонках Block и Inode grace period. Убедитесь, что вы не влепили пробел между числом и словом days. Кстати, вместо days вы можете использовать hours, minutes или seconds.

Отчёты

Периодически вам может понадобиться просматривать статистику по использованию дисковых квот в системе. Для получения отчёта пользуйтесь командой:

repquota -a

Эта команда предоставит вам всю необходимую информацию.

Это можно сделать, не теряя данные. Но вообще, в особенности рекомендую создавать отдельного пользователя и отдельную БД для других нужд, root не использовать для сайта вообще, только для управления базами данных и привелегиями.

Про Linux я буду описывать для Red Hat подобных систем (Fedora, Mandriva, ASP, Alt и т.д.), т.к. это мне ближе, но и для других систем сильно не отличается, опишу один пример для каждой системы, а дальше сами.

Linux:
Всё необходимо выполнять от супер-пользователя root (su, sudo, sudo su)

1. Для начала останавливаем работу mysqld:
в Debian-оподобных системах или freebsd
/etc/init.d/mysqld stop
В Rad hat подобных
service mysqld stop

В Windows Пуск, Выполнить, net stop «MySQL Server» (или как она там точно называется?)

2. Выполняем
mysqld_safe --skip-grant-tables
Начинает работать демон MySQL-Safe в безопасном режиме
3. Заходим в консоль mysql
mysql -u root
В консоли выполняем
mysql> UPDATE `user` SET `password`=PASSWORD('root_password') WHERE `user`='root'
Это всё.

mysql> exit

Далее возвращаем к работе прежний сервер: останавливаем или работу mysqld-safe, и запускаем в обычную работу mysqld аналогично 1-му пунту, только вместо stop пишем start.