我在 stackoverflow 上发布了这个问题,并被告知在这里发布:
我正在运行一个 Ubuntu 远程开发服务器,该环境受到严格限制(由于合规性),一年前我曾为许多开发人员正确配置过该环境,但却忘记了。
在此服务器上,我以 root 身份登录,并拥有自己的文件夹
/var/www/me/laravel
并且一切运行正常,我现在正在向该服务器添加新用户,但无法使其正常工作。
在这种情况下,我想创建一个名为“mike”的用户,并允许他在位于的文件夹中拥有完全的读取、写入和执行权限(以运行多个应用程序 laravel 和 angular)
/var/www/mike
对于由 apache 提供服务的应用程序。
mike 将使用他的 ubuntu 用户名/密码通过 ssh 远程登录到服务器,并被限制在他的文件夹中,只能处理其子文件夹中的项目,而不能移出他的主目录,但可以完全控制此目录中的所有文件夹以进行远程开发。
到目前为止我有:
sudo useradd -m -d /var/www/mike mike
sudo passwd mike
sudo chmod 700 /var/www/mike
sudo nano /etc/ssh/sshd_config
然后我将以下内容添加到文件中并重新启动 ssh 服务:
add:Match User mike
PasswordAuthentication yes
AllowTCPForwarding no
#ForceCommand internal-sftp
ChrootDirectory /var/www/mike
sudo service ssh restart
如果我启用
ChrootDirectory /var/www/mike
mike 无法登录到服务器,如果我注释掉 ChrootDirectory,mike 可以正常登录但仍可导航到根目录,只是如果我给每个用户 chmod 700,他就不能访问其他用户的文件夹,但随后它会与 apache 混淆,无法为这些文件夹中的应用程序提供服务。
我已经厌倦了以下这些:
https://unix.stackexchange.com/questions/542440/how-does-chrootdirectory-and-a-users-home-directory-work-together
我已经设定了
/var/www/mike
作为
chown root:root /var/www/mike
和
chmod 755 /var/www/mike
然后创建了一个文件夹
/var/www/mike/home
并给了它
chown mike: /var/www/mike/home
chmod 750 /var/www/mike/home
usermod =d /var/www/mike/home mike
如果我尝试然后设置
ChrootDirectory /var/www/%u
它允许我登录,但在为 Mike 打开会话后的 auth.log 中,我看到
error: /dev/pts/0: No such file or directory
另外,关于使用这个 chroot 设置的 laravel,我不记得是否应该添加
usermod -a -G users www-data
然后我需要允许 Apache www-data 为该目录的公共文件夹提供服务,并具有 laravel 存储、缓存等的正确权限以供 apache 执行。
我试过
cd /var/www/mike/home/laravel
sudo chown -R mike:www-data
授予用户和网络服务器权限:
sudo find . -type f -exec chmod 664 {} \;
sudo find . -type d -exec chmod 775 {} \;
因此 Web 服务器有权读取和写入存储和缓存
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache
有人能告诉我我做错了什么吗?