Как можно создать пользователя с ограниченными правами, который при этом сможет использовать virtualenv и pip?

Здравствуйте! <br/> У меня есть папка в корневом каталоге, расположенная по пути my/folder/www. <br/> Как правильно настроить или создать пользователя, чтобы он имел доступ к папке www и при этом имел возможность работы с virtualenv и pip? <br/> Я установил папку в качестве домашнего каталога пользователя (знаю, что доступ можно ограничить через /etc/ssh/sshd_config), и в целом все работает — я использую команду virtualenv env для создания окружения. Однако, когда я пытаюсь активировать окружение с помощью команды source ./env/bin/activate, получаю ошибку -sh: 4: source: not found. <br/> Как правильно настроить пользователя, чтобы доступ к директориям выше www был запрещен, но при этом в самой папке www была возможность полноценной работы? <br/> Я добавил пользователя в следующие группы, что и у основного пользователя: <br/> sudo <br/> adm <br/> cdrom <br/> dip <br/> plugdev <br/> lxd <br/> Однако это не решило проблему...
  • 13 сентября 2024 г. 8:43
Ответы на вопрос 2
Для создания пользователя с ограниченными правами, который сможет использовать `virtualenv` и `pip`, следуйте этим шагам:

1. **Создайте пользователя**.
   Это можно сделать с помощью следующей команды:
   ```bash
   sudo adduser myuser
   ```
   Замените `myuser` на нужное имя пользователя.

2. **Настройте домашний каталог**.
   Если вы хотите, чтобы домашним каталогом пользователя была папка `my/folder/www`, вы можете задать это при создании пользователя с помощью параметра `--home`:
   ```bash
   sudo adduser --home /my/folder/www myuser
   ```
   Если пользователь уже создан, вы можете изменить его домашний каталог с помощью:
   ```bash
   sudo usermod -d /my/folder/www myuser
   ```

3. **Настройте права доступа к директории**.
   Убедитесь, что пользователь имеет права доступа к папке `www`:
   ```bash
   sudo chown -R myuser:myuser /my/folder/www
   ```
   Также проверьте разрешения:
   ```bash
   sudo chmod -R 755 /my/folder/www
   ```

4. **Ограничьте доступ к другим директориям**.
   Этого можно добиться, изменив настройки в `/etc/ssh/sshd_config` для пользования SSH и настройкой оболочки:
   - Убедитесь, что у пользователя нет прав на доступ к верхним уровням и выведите в закрытые оболочки. Например, используя `chroot`:
   ```bash
   Match User myuser
       ChrootDirectory /my/folder
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no
   ```

5. **Используйте правильную оболочку**.
   Убедитесь, что пользователь использует оболочку, которая поддерживает `source`. Команды `source` и `.` работают в оболочках, таких как `bash`, а не `sh`. Если вы хотите, чтобы пользователь использовал `bash`, измените оболочку по умолчанию:
   ```bash
   sudo chsh -s /bin/bash myuser
   ```

6. **Убедитесь, что virtualenv установлен**.
   Убедитесь, что `virtualenv` установлен для вашего пользователя:
   ```bash
   pip install --user virtualenv
   ```
   Это установит `virtualenv` в директории пользователя.

7. **Создайте и активируйте виртуальное окружение**.
   В каталоге `www` создайте виртуальное окружение:
   ```bash
   virtualenv env
   ```
   Для активации используйте:
   ```bash
   source env/bin/activate
   ```

После выполнения всех этих шагов, у пользователя будут соответствующие права для работы с папкой `www`, а также возможность создания и использования виртуальных окружений без доступа к каталогам выше уровня `www`.
Вам в эту папку надо интерпретатор поставить. И от него уже делать venv
Похожие вопросы