创建 ubuntu 用户,主文件夹位于 www,并使用 ChrootDirectory 限制对该文件夹的 ssh 访问

创建 ubuntu 用户,主文件夹位于 www,并使用 ChrootDirectory 限制对该文件夹的 ssh 访问

我在 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

有人能告诉我我做错了什么吗?

相关内容