вторник, 30 июля 2013 г.

Фреймворк Yii: первые шаги

Решила поизучать Yii с помощью этой книги. Для начала пришлось установить PHP & Apache. Оказалось, что тут описан "путь Воина", при выборе которого исходники Apache компилируются на компьютере пользователя. Это полезно, когда нужно настроить всякие тонкости. Мне же пока тонкости не нужны, поэтому можно воспользоваться LAMP и написать:

sudo apt-get install lamp-server^

Далее в книге предлагалось скачать yii, скопировать ее в web-accessible folder и проверить, удовлетворяются ли в системе минимальные требования для ее работы. Насколько я поняла, такой папкой является /var/www. Но в эту папку оказалось не так-то просто скопировать файлы. Поэтому пришлось копировать через терминал:

sudo cp -r /home/natalia/yii-1.1.2.r2086/* /var/www

Далее, проверила выполнение минимальных требований, набрав в строке браузера

127.0.0.1/requirements/index.php

(то, что localhost по адресу 127.0.0.1 увидела в сообщениях при установке LAMP)

Минимальные требования были выполнены. Далее в книге предлагалось воспользоваться инструментом yiic, который автоматически создает demo-приложение. Но если писать так, как указано в книге, никак не получалось. Ответ нашелся в документации по этой версии, скачанной с сайта yii framework. Воспользовалась одним из альтернативных предложенных в документации способов. Перешла в папку /var/www/framework и набрала

php yiic.php webapp /home/natalia/demo.

Потом попыталась открыть http://localhost/demo/index.php и увидела ошибку 404.

Оказалось, что нужно было настроить еще несколько вещей (спасибо Дмитрию).

1. Для удобства и пущей безопасности было решено хранить веб-проекты в папке /home/natalia/projects, а yii framework поместить в папку /home/natalia/projects/lib/yii. Настроить права к папке projects: sudo chmod -R 777 /home/natalia/projects.

2. Изменить права к папке apache, чтобы без проблем можно было сохранять внесенные изменения: sudo chmod -R 777 /etc/apache2

3. Настроить DocumentRoot в файле /etc/apache2/sites-available/default.txt DocumentRoot - указывает apache на то, откуда брать файлы для сайтов. В файле default вместо папки /var/www в паре мест написать /home/natalia/projects.

3. В demo-приложении в файле index.php поправить строку (путь к yii)
$yii = dirname(_FILE_).'../lib/yii/framework/yii.php';

4. Перезапустить apache

sudo service apache2 stop
sudo service apache2 start

После этого демо-приложение заработало :)



понедельник, 29 июля 2013 г.

Права доступа в Linux

Эта шпаргалка (конспект) написана на основе книги "UNIX. Программное окружение" Б.Кернигана, Р. Пайка. Ее порекомендовал мне Дмитрий, сказав, что многое что там написано, актуально и до сих пор. И правда актуально, а еще актуально не только для Ubuntu, но и для терминала в Mac OS. Итак, сама шпаргалка.

В каждой системе существует специальный пользователь, называемый суперпользователем (super-user), который может читать и модифицировать любые файлы в системе. Права суперпользователя присвоены регистрационному имени root, под которым администраторы управляют системой. Существует команда su, предоставляющая статус суперпользователя каждому, кто знает пароль.

Пароли хранятся в файле /etc/passwd, там же находится вся регистрационная информация каждого из пользователей.

Для каждого файла существует 3 вида доступа: чтение (просмотр содержимого), запись (изменение содержимого), исполнение (запуск программы). Один набор разрешений связан с владельцем файла, другой набор - с группой, в которую входит владелец, третий определяет разрешения на доступ для всех остальных.

ls -l выводит информацию о правах доступа.

Чтение прав доступа файла и каталога: примеры

ls -l /etc/passwd
>> -rw-r--r-- 1 root root 1878 апр.   1 22:10 /etc/passwd

Тут написано, что этот файл принадлежит пользователю root bp из группы root, размер файл 1878 байт, приводится дата последнего изменения. Разберем строку -rw-r--r-- (тут находится информация о правах):

Первый - говорит о том, что это обычный файл. Если бы это был каталог, то в первой позиции находился бы символ d.
rw- - права владельца на чтение, запись и выполнение. Владелец может читать и писать, но не может выполнять. У исполняемых файлов вместо прочерка должен стоять символ x.

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

Любой пользователь может редактировать файл паролей, но только root может сохранять сделанные изменения. Как изменить свой пароль? На помощь приходит команда passwd.

ls -l /bin/passwd
>> -rwsr-xr-x
Команда доступна для выполнения всем, но только root может ее изменить. Символ s вместо x в поле прав на исполнение для владельца говорит о том, что команда во время выполнения приобретает права своего владельца, в данном случае root. А т.к. /bin/passwd получает при исполнении идентификатор пользователя root, любой пользователь с помощью этой команды может изменить файл паролей.

Теперь почитаем права каталога.
ls -ld .
>> drwxrwxrwx 2 root root 4096 июля  29 22:21

. - текущий каталог. r - каталог доступен для чтения и его содержимое может быть просмотрено с помощью команды ls. w - возможно создание и удаление файлов в этом каталоге.

При наличии права на запись в каталог можно удалить файлы даже в том случае, если они защищены от записи. Поле x в строке прав доступа к каталогу разрешает не исполнение, а поиск файла в каталоге.

Изменение прав доступа к файлу

Команда chmod (change mode) изменяет права доступа к файлу. Синтаксис: chmod права доступа имена файлов. Права доступа описываются в восьмеричном или символьном виде. Восьмеричные значения образуются путем суммирования: 4 для чтения, 2 для записи, 1 для исполнения. Например: chmod 666 junk.txt (т.е. всем можно читать и писать в этот файл теперь). Символьный вид: + включает право доступа, - его выключает. Например chmod +x command позволяет всем выполнять command, chmod -w file отменяет право на запись для всех, включая владельца.

Если каталог доступен для записи, пользователи могут удалять файлы независимо от прав доступа к этим файлам. Чтобы исключить возможность удаления файлов кем-либо, следует отменить разрешение на запись в каталог.
chmod -w .
(запретить запись в текущий каталог).
chmod 775 .
(восстановить права доступа)