LINUX.ORG.RU
решено ФорумAdmin

Установка Nextcloud, непонятки с правами

 , ,


1

2

Ставлю Nextcloud на арч. Поскольку релизная 17 версия не умеет в PHP 7.4, накатываю бетку из гита. Поднимаю nginx, захожу на страницу настройки, получаю Internal Server Error. В логе:

"touch(): Unable to create file /usr/share/webapps/nextcloud/config/config.php because Read-only file system at /usr/share/webapps/nextcloud/lib/private/Config.php#241"

При этом:

$ ls -l /usr/share/webapps/nextcloud/config/
-rw-r--r-- 1 http http     0 дек 17 15:29 CAN_INSTALL
-rw-r--r-- 1 http http 53233 дек 17 15:29 config.sample.php
$ top -b -n 1 | grep nginx
 144350  144349 http     http     ?          0:00.00   0.0g   0.0   0.0 S nginx: worker process
 144349       1 root     root     ?          0:00.00   0.0g   0.0   0.0 S nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;
$ top -b -n 1 | grep php-fpm      
 144346       1 root     root     ?          0:00.12   0.0g   0.0   0.1 S php-fpm: master process (/etc/php/php-fpm.conf)
 144352  144346 http     http     ?          0:00.08   0.0g   0.0   0.1 S php-fpm: pool www
 144351  144346 http     http     ?          0:00.01   0.0g   0.0   0.1 S php-fpm: pool www

То есть, и веб-сервер, и процесс PHP вполне себе имеют права на запись в каталог с конфигом. В чём может быть проблема?

★★★★★
Ответ на: комментарий от anonymous

Спасибо, кэп. Если внимательно почитать текст ошибки, то можно увидеть что записать не получается именно в /usr/share/webapps/nextcloud/config/config.php, а /usr/share/webapps/nextcloud/lib/private/Config.php - это путь к скрипту, который изрыгнул из себя эксепшон. Но если сомнения остались, то рекурсивная смена прав на весь корневой каталог тоже не помогает.

Axon ★★★★★
() автор топика

$ ls -l /usr/share/webapps/nextcloud/config/

не совсем. смотри права на каталог ( ls -ld )

because Read-only file system

а может так оно и есть?

df -h /usr/share/webapps/nextcloud/config/
mount | grep blahblah

проще всего проверить

sudo su - http
touch /usr/share/webapps/nextcloud/config/config.php
router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router
$ ls -ld /usr/share/webapps/nextcloud/config/
drwxr-xr-x 2 http http 4096 дек 17 16:10 /usr/share/webapps/nextcloud/config/

$ df -h /usr/share/webapps/nextcloud/config/
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sda1          110G          50G   58G           47% /

$ mount | grep sda1
/dev/sda1 on / type ext4 (rw,relatime)
Axon ★★★★★
() автор топика
Ответ на: комментарий от router

Какой такой селинукс в школоарче? Он там даже не поддерживается официально.

Axon ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Тогда, lsof +d /usr/share/webapps/nextcloud/config/config.php, и прибей тот процесс, который заблочил файл.

Дружище, там же английским по белому написано что файл не удаётся создать. Это как бы подразумевает что его нет.

Axon ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Покажи юнит php-fpm.service.

Там у тебя ProtectSystem=full наверняка. В 7.4 добавили.

Так и есть. Создавать override?

Axon ★★★★★
() автор топика
Ответ на: комментарий от Axon

Ну да. ReadWritePaths=/usr/share/webapps/nextcloud какой-нибудь впиши.

Но я у себя просто перенёс стейт в /var, приложения вообще-то не должны писать в /usr.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

Отлично, создал /etc/systemd/system/php-fpm.service.d/override.conf:

[Service]
# Allow write access to the Nextcloud config directory
ReadWritePaths=/etc/webapps/nextcloud/config
ReadWritePaths=/usr/share/webapps/nextcloud/apps

и всё заверте…

Большое спасибо.

Axon ★★★★★
() автор топика

я тут недавно поставил его в докере. Отдельный докер для некст-клауда, отдельный для постгреса. Все файлы лежат в ФС хоста.

Вот запуск скриптом:

$ cat nextcloud.sh 
docker pull nextcloud
docker pull postgresql
docker run --name nextcloud-postgres -e POSTGRES_PASSWORD=<YOUR_PASSWORD> -v /srv/nextcloud/database:/var/lib/postgresql/data --network nextcloud-network -d postgres
docker run --name nextcloud -p 9001:80 -v /srv/nextcloud/data:/var/www/html --network nextcloud-network -d nextcloud
bvn13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.