我正在尝试安装 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