systemd User= vs --user

Команда unzipимеет свою собственную опцию unzip -Z1 zipfile.zipдля отображения фактического имени сжатого файла в заархивированном файле, который принимает zipinfo'sопцию -1как zipinfo -1 zipfile.zip. поэтому вы можете просто сделать, как показано ниже, и нет необходимости создавать временный каталог, и mvбудет выполнено в текущем каталоге.

for z in *.zip; do 
    unzip "$z";
    mv "$(unzip -Z1 $z)" "${z%%.*}.txt";
done
2
24.10.2019, 12:34
2 ответа

User=someuserв системной службе определяет системную службу, которая не запускается от имени пользователя root. Системная служба будет работать независимо от входа пользователя в систему; он будет продолжать работать, даже если никто не войдет в систему. Запуск служб на выделенных учетных записях служб, когда это возможно, является хорошей защитой, но иногда службы должны запускаться с правами root и переходить на учетную запись службы самостоятельно, возможно, после выполнения некоторых начальных операций, которые традиционно требуют доступа с правами root, например открытие порта TCP или UDP. с номером порта ниже 1024.

--userсервисы запускаются для зарегистрированных -пользователей. По умолчанию предполагается, что все пользовательские службы останавливаются, когда пользователь, которому они принадлежат, выходит из своего последнего оставшегося сеанса в системе; однако системный администратор может разрешить пользовательские процессы оставаться после выхода из системы. В некоторых дистрибутивах это даже разрешено по умолчанию, потому что системы Unix/Linux исторически не были строгими в отношении пользовательских процессов во время выхода из журнала -, и пользователи могут ожидать, что они могут оставить фоновые процессы запущенными при выходе из системы. не делая ничегоsystemd-конкретного.

(С другой стороны, администраторам многопользовательских -систем традиционно приходилось внедрять различные решения для очистки -старых пользовательских процессов, т.е. когда пользователь ноутбука на самом деле не выходит из системы, а просто закрывает крышку ноутбука и уходит со своим ноутбуком. systemdпозволяет при необходимости точно нацелить процессы каждого сеанса на завершение,но в результате системный администратор должен будет принять политическое решение о том, нужна ли и когда требуется автоматическая очистка сеанса -.)

Если один и тот же пользователь входит в несколько сеансов одновременно, у него будет запущена только одна копия их --userслужб. Таким образом, службы --userна самом деле не связаны с каким-либо конкретным сеансом пользователя, а только с самим пользователем.

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

1
27.01.2020, 22:16

Вопрос в том, на каком экземпляре systemd запущена служба и кто должен выполнять в ней команды.

Вы можете захотеть, чтобы служба запускалась при входе пользователя joe,но сами команды предназначены для запуска под общей учетной записью shared_account. В этом случае служба запускается из пользовательского экземпляра joe, но доступ к командам может быть ограничен shared_account.

В целом, разница между --userи User=может быть сведена к тому, кто владеет экземпляром службы и какой UID запускает команды в службе. Если User=не указан, по умолчанию используется владелец экземпляра systemd.

0
27.01.2020, 22:16

Теги

Похожие вопросы