Назад | Перейти на главную страницу

Создание учетных записей Linux с символическими ссылками домашнего каталога

На моем рабочем месте настраивается новый сервер для размещения PHP-приложений. Я работаю в университете, и это будет, по сути, игровая площадка, чтобы держать преподавателей и сотрудников, которые хотят возиться с PHP, подальше от нашего производственного веб-пространства.

Меня попросили создать учетную запись для каждого отдела кампуса, который будет использовать эту систему. «Домашняя» папка каждой учетной записи должна быть символической ссылкой на назначенную им папку в корневом веб-каталоге с именем учетной записи пользователя, и они не должны иметь возможность перемещаться над своей домашней папкой.

Таким образом, когда пользователь входит в систему через свою учетную запись подразделения (скажем, «gradstudies»), он автоматически оказывается в папке / srv / www / htdocs / gradstudies и не может двигаться дальше. В этой папке они должны иметь возможность делать все, что захотят.

Можно ли сделать это просто с помощью настроек учетной записи пользователя и группы, или мне нужно создавать хосты и прочее в Apache? Я действительно не хочу возиться с конфигурацией Apache, если этого можно избежать.

Как пользователи будут входить в систему? Прямой доступ к оболочке, sftp, ftp, webdav, smb, nfs, ...? Прямая принудительная установка альтернативной корневой папки выполняется по-разному в зависимости от протокола публикации файлов. Лично мне сейчас очень нравится sftp, и настраиваю chroot с sftp довольно просто с последними версиями OpenSSH.

Почему вы хотите создать символическую ссылку из их домашнего каталога в корневой каталог сети? Почему бы не использовать что-то вроде mod_userdir связать свой домашний каталог с Интернетом?

Вы также можете серьезно взглянуть на что-то вроде suphp который запускает PHP-код с правами пользователя, владеющего файлом. Если вы не используете что-то подобное, то код PHP будет запускаться под учетной записью веб-сервера, а код PHP от одного пользователя может случайно или намеренно нарушить работу другого пользователя.