разрешено в мире *nix
В мире *nix разрешено практически все.
возможно (я еще не пробовал в тестовой коробке)
Да, это возможно. Когда пользователю назначается домашний каталог, это каталог, в который он cd
по умолчанию попадает при входе в систему. Вы можете изменить домашний каталог ftp_user2
с помощью опции -d
в usermod
:
usermod -d [directory] [ftp_user2]
В вашем случае это будет выглядеть следующим образом: usermod -d /var/www/vhosts/website/subfolder ftp_user2
Если вам все еще нужно создать ftp_user2
, вы можете назначить их домашний каталог при создании, используя useradd
.
useradd -m -d /var/www/vhosts/website/subfolder -s /bin/bash ftp_user2
Опция -m
создаст домашний каталог пользователя, если он еще не существует. Опция -d
указывает, какой домашний каталог должен быть назначен пользователю. Опция -s
указывает, какую оболочку будет использовать пользователь при входе в систему. -s
не нужен, но обычно хорошей практикой является указание оболочки пользователя по умолчанию, если пользователь будет входить в систему.
и есть ли у этого какой-либо признанный негативный аспект?
Единственный негативный аспект, о котором я могу думать: если кто-то решит удалить ftp_user1
и его домашний каталог, то домашний каталог для ftp_user2
также будет удален.
При таком подходе возникают две проблемы. Во-первых, rc.local
выполняется пользователем root, поэтому все создаваемые им файлы будут принадлежать пользователю root, если вы не запустите для них chown
. Во-вторых, это дыра в безопасности, поскольку root выполняет код, который потенциально может быть изменен пользователем без привилегий root.
Лучше использовать спецификатор времени @reboot с cron
в качестве непривилегированного пользователя. Если у вас уже есть файл crontab , отредактируйте его, добавив эту строку, а затем выполните команду crontab <yourcrontab>
. Или используйте команду crontab -e
для прямого входа в эту строку.
@reboot /home/debian/startscript.sh
Обратите внимание, что вам не нужно sh
, если скрипт является исполняемым, потому что он начинается с #!/bin/sh
.
Если ваш дистрибутив использует systemd
, проблема может заключаться в том, что /etc/rc.local
выполняется слишком рано , в то время как корневая файловая система по-прежнему доступна только для чтения -или в то время как некоторые другие файловые системы еще не смонтированы.
Если в файле systemd .service
, который запускает rc.local
, не настроены конкретные зависимости порядка, systemd
запустит его как можно раньше.
Запустите systemctl cat rc-local.service
, чтобы увидеть полное определение запущенной службы rc.local
. Обратите внимание на любые строки After=
и подумайте о самой ранней возможной точке процесса запуска системы -, которая может их удовлетворить. Возможно, вы захотите добавить файл переопределения, который добавляет одну или две дополнительные строки After=
в соответствии с потребностями вашей конфигурации.