%2C%20%D0%B4%D0%BE%D0%BB%D0%B6%D0%BD%D0%B0%20%D0%B8%D0%BC%D0%B5%D1%82%D1%8C%20%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D0%B8%D0%B9%20%D0%B0%D0%B4%D1%80%D0%B5%D1%81.png)
Я создал системную учетную запись в Fedora, используя следующие команды:
useradd -r -s /bin/false sysacct
Затем создал каталог и дал разрешения sysacct
mkdir /var/sysacct
chown sysacct:sysacct /var/sysacct
Теперь, когда я пытаюсь выполнить команду как sysacct
su - sysacct -c 'mkdir /var/sysacct/test'
I get error
невозможно изменить каталог на /home/sysacct: нет такого файла или каталога
Why do I need to specify a home directory for this account?
решение1
Учетная запись службы/системы, используемая для запуска демона (веб-серверов, баз данных), должна иметь домашний адрес
Вообще говоря, у учетной записи не обязательно должен быть домашний каталог, но могут быть различные специальные демоныможеттребуют, чтобы их $HOME указывал на существующий каталог, или могут запускать другие инструменты, требующие существования $HOME.
(Например, если демону необходимо запуститься gpg
для шифрования данных, gpg потребуется домашний каталог для хранения ~/.gnupg, даже если сам демон этого не требует.)
Зачем мне нужно указывать домашний каталог для этой учетной записи?
Потому что тыспрашивать su
для имитации процедуры "реального входа", которая включает смену рабочего каталога на домашний каталог указанного пользователя. Это задокументировано как часть эффекта опции -
или -l
.
Если вы не хотите su
этого делать, то не указывайте опцию -
или -l
.