使用 owncloud 脚本更改权限后无法登录

使用 owncloud 脚本更改权限后无法登录

我正在尝试安装 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 [email protected]
[email protected]'s password: 
/bin/bash: Permission denied

两个问题:可能出了什么问题?不太重要的:有没有办法修复这个问题(这是一台测试服务器,所以如果我必须从备份中恢复,也没什么坏处)。

答案1

可能发生的情况:变量 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

但是,是的,你可能不想就这么放弃。将来,测试任何通过 echo 递归 chmod 的脚本,直到你满意它是正确的目录,然后运行 ​​chmod。我们都被这个搞得焦头烂额 :D

相关内容