DokuWiki

It's better when it's simple

Инструменты пользователя

Инструменты сайта


ru:install:permissions

Это старая версия документа!


Настройка прав доступа к файлам

DokuWiki хранит данные о правах доступа в простых текстовых файлах, так что для этих файлов необходимо настроить права доступа. Если их настроить неправильно, это может стать угрозой безопасности.

DokuWiki работает под управлением PHP, поэтому PHP должен иметь достаточно прав, чтобы перезаписывать эти файлы. Так как PHP обычно запускается под управлением веб-сервера, доступ к файлам на запись должен иметь веб-сервер.

Как правило, DokuWiki хранит файлы, к которым нужен доступ на запись, в каталоге data. Для работы инсталлятора, а также для последующей конфигурации, права на запись также должны быть установлены для каталога conf.

Microsoft IIS (Internet Information Services)


Смотри инструкцию по установке IIS.

If you want to restrict access to only some users you can set the Security on the txt files, you need to worry about IIS allowing direct access to the .txt files in the data directory via the web browser. If you want to use ACL's to allow some dokuwiki users to access some but not all pages then you need to stop the IIS from serving up txt files (there is a download from microsoft that allows you to specify certain extensions that are blocked). Я не тестировал этот метод на новых версиях, но для старой это работало.

FIXME When installing Dokuwiki under Windows XP and the XAMPP-distribution of Apache (in a directory separate from root) I get error messages like «U:\Projekte\DokuWiki\dokuwiki-rc2007-05-24/data/attic is not writable by DokuWiki. You need to fix the permission settings of this directory!» when calling install.php. To fix this I only needed to create the directories mentioned by hand. ferdinand

Unix

Эта статья поможет вам разобраться с правами доступа, если вы устанавливаете DokuWiki на Linux, MacOS X или другую юниксоподобную систему. Арендуемый веб-сервер с большой вероятностью является юниксоподобным.

Ключевые моменты системы прав доступа

Статья не ставит себе цель подробно описать систему прав доступа UNIX'ов - информацию об этом можно найти, например, в Википедии. Вот ключевые моменты:

  • Права доступа к файлу зависят от пользователя, который создал файл, и его группы, а также от того, кто пытается получить доступ.
  • Отдельно задаются права для чтения, записи и выполнения файла.
  • Каждый процесс в системе обладает правами доступа определённого пользователя.
  • Веб-сервер - это процесс, так что предыдущий пункт к нему применим.
  • PHP обычно выполняется как часть веб-сервера.
  • DokuWiki запускается с правами доступа PHP.
  • DokuWiki необходимы права на чтение, запись и выполнение для каталогов, в которых нужно создавать файлы.
  • DokuWiki необходимы права на чтение и запись для файлов, которые нужно перезаписывать во время работы.
  • DokuWiki необходимы права на чтение для файлов, которые перезаписывать не нужно.

Чтобы узнать пользователя и группу, с правами которого выполняется PHP, можно выполнить следующий скрипт:

<?php
 
if(function_exists('posix_geteuid')){
    // use posix to get current uid and gid
    $uid   = posix_geteuid();
    $usr   = posix_getpwuid($uid);
    $user  = $usr['name'];
    $gid   = posix_getegid();
    $grp   = posix_getgrgid($gid);
    $group = $grp['name'];
}else{
    // try to create a file and read it's ids
    $tmp = tempnam ('/tmp', 'check');
    $uid = fileowner($tmp);
    $gid = filegroup($tmp);
 
    // try to run ls on it
    $out = `ls -l $tmp`;
    $lst = explode(' ',$out);
    $user  = $lst[2];
    $group = $lst[3];
    unlink($tmp);
}
 
echo "Your PHP process seems to run with the UID $uid ($user) and the GID $gid ($group)\n"; ?>

Какие выставлять права доступа?

Итак, какие же для упомянутых выше каталогов нужны права доступа? Общий совет состоит в том, чтобы они были как можно более ограниченными, но общего правила, какими они должны быть в вашей системе, не существует.

Обладая правами root'а (суперпользователя), вы можете менять владельцев файлов и каталогов. Это значит, что вы можете сменить владельца файлов DokuWiki на пользователя, с правами которого запускается веб-сервер (например, web-server, www-data или nobody) и установить права доступа только для владельца. Например, 0600 для файлов и 0700 для каталогов.

Если вы обычный пользователь, но состоите в группе веб-сервера, то вы можете сделать эту группу основной для файлов DokuWiki, и после этого установить для этой группы права на запись этих файлов. Например, 0660 для файлов и 0770 каталогов.

Если вы абсолютно доверяете всем, кто имеет доступ к файловой системе сервера, вы можете дать доступ на запись всем пользователям. Например, 0666 для файлов и 0777 для каталогов.

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

Обратите внимание: когда вы выберете параметры прав доступа, не забудьте сменить настройки fmode и dmode, чтобы новые файлы создавались с корректными параметрами.

Как менять права доступа?

Чтобы изменить права доступа, в командной строке сервера используйте chmod. Чтобы изменить владельца файлов и каталогов, используйте chown. Чтобы изменить основную группу файлов и каталогов, используйте chgrp. (Имейте в виду, что chown и chgrp могут быть запрещены или работать не так, как ожидается, если вы используете общий сервер.)

Если вы используете FTP, обратитесь к документации своей программы для работы с FTP. Большинство FTP-клиентов, которые поддерживают графический интерфейс, имеют панель управления правами доступа (чаще всего в неё можно попасть из меню по клику на файле правой кнопкой мышки).

Мнение одного пользователя Dokuwiki

FIXME add simple explanation here

OK I'll fix this for you. :) I should preface this by stating that although I have not installed docuwiki yet. I have evaluated some 300+ CMS/Fourm/Wiki's, and have been administering some 50+ servers since 1975. That said; in an effort to help prevent individuals from compromising your system. You should not provide any more permissions/abilities than is absolutely necessary to your web space file system. What does this mean/require? Quite simply; only provide enough permissions on the directory/file space to enable your web application(s) to work. EXAMPLE:

On a ««NIX»» system this is simply accomplished by setting Ownership/Read/Write permissions to the Directories/Files as so:

cd /path/to/docuwiki

chown -R www:www .

DONE! :) see that was pretty easy, wasn't it? More details please. OK We just gave ownership of the docuwiki system to the Owner and Group the web server belongs to:

User: www, Group: www

This is the Owner/Group that many NIX based OS's run their web servers as (Apache). This Owner/Group can also be nobody/nobody, or apache/apache. You'll need to find this information out for yourself. Next we need to set what TYPE of permissions the web server has over the docuwiki file system. This can be of: Read, Write, Execute (4, 6, 7 respectively). The last bit (execute) is the one that you should NEVER provide unless ABSOLUTELY necessary. For directories, the «X» bit is almost always required HOWEVER the files that live in those directories ALMOST NEVER require the Executable bit (7) to be enabled. That said, let's move on. As a rule changing into a directory and setting the file permissions goes as follows:

cd /complete/path/to/docuwiki

chmod 0444 ./*

DONE! :) We just gave ReadOnly permissions to All the files in the docuwiki folder. That was easy, wasn't it. You will need to determine IN ADVANCE what directories need which perms and which files need what perms. But to summarize:

chown = Change Owner/Group

chmod = Change/Modify permissions

always lead off with a 0 (zero) when chmodding

4 = read

2 = write

1 = execute

The other numbers have different meanings. But in most cases when setting up web space, those numbers will not be used/needed. What I've written here should get anyone well on their way to setting up/understanding how to set up a reasonably secure web space/site.

Best wishes and safe admining. :)

Если что-то пошло не так

В определённых ситуациях Вы можете обнаружить, что не можете удалять или редактировать файлы, созданные DokuWiki. Посмотрите fixperms.php для возможного решения проблемы.

Как запретить редактирование определённых страниц?

Ответ в разделе FAQ
Есть два способа:

  1. Использовать списки контроля доступа (рекомендуется)
  2. Запретить веб-серверу изменять опредленный файл, например 1)
    chmod 644 file.txt

    Убедитетесь, что вы понимаете? что такое настройка прав доступа к файлам и их важность (см. статью Безопасность)

1)
применимо только в *nix-системах, предполагается, что вебсервер не является владельцем файла
ru/install/permissions.1272808244.txt.gz · Последнее изменение: 2010-05-02 15:50 — aleksandr

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki