Я пытаюсь установить owncloud и у меня возникли проблемы с разрешениями в /var/www/html/ . Один сайт предложил запустить скрипт, который меняет разрешение, и он выглядел нормально для меня, поэтому я запустил его как root в каталоге /home /owncloud.

ocpath='/home/owncloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'

printf "Creating possible missing Directories\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater

printf "chmod Files and Directories\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/

chmod +x ${ocpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

источник

Однако, должно быть, что-то пошло не так, и я получил много ошибок в стиле chmod: changing permissions of 'xxx': Operation not permitted .

Теперь я даже не могу войти, используя ssh:

ssh -p 1234 user@fakeraspi.ddns.net
user@fakeraspi.ddns.net's password: 
/bin/bash: Permission denied

Два вопроса: что могло пойти не так? И менее важно: есть ли способ это исправить (это тестовый сервер, так что не беда, если мне придется восстанавливать из резервной копии).

1 ответ1

0

что могло произойти: переменная ocpath была написана с ошибкой, вызывая

find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640

быть интерпретированным как

find / -type f -print0 | xargs -0 chmod 0640

скорее, чем

find /home/owncloud/ -type f -print0 | xargs -0 chmod 0640

Например:

$ cat example.sh



cpath='/var/www/owncloud'
find ${ocpath}/ -type f -print0 

$ ./example.sh | head

find: /Quarantine: Permission denied
find: /usr/sbin/authserver: Permission denied
find: /.Spotlight-V100: Permission denied

Чтобы это исправить, если вы можете войти через консоль в однопользовательский режим, вы можете запустить скрипт прав доступа, например:

echo '
chmod -R 755 /bin /boot /dev /etc/ /home /lib /lib64 \
/media /mnt /opt /run /sbin /srv /usr /var

chmod -R 777 /initrd.img /vmlinuz
chmod -R 1777 /tmp
chmod -R 555 /sys
chmod -R 555 /proc
chmod -R 700 /root

' > fixpermission

chmod +x fixpermission

./fixpermission

Но да, вы можете просто не сдуться. В будущем протестируйте любой скрипт, который рекурсивно выполняет chmod, пока ваш сервер не удовлетворит правильные каталоги, затем запустите chmod. Мы все были сожжены этим:D

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .