ルート以外のユーザーとして化石をシステムサービスとして実行したいと思います。
useradd -r fossil
touch /etc/systemd/system/fossil.service
化石.サービスファイル:
[Unit]
User=fossil
Group=fossil
Description=Fossil Service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
User=fossil
Group=fossil
WorkingDirectory=/opt/fossil/repos
ExecStart=/usr/bin/fossil server --localhost --port 9000 --repolist /opt/fossil/repos
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Fossil user/group is an owner of /opt/fossil directory.
sudo systemctl daemon-reload
sudo systemctl stop fossil
sudo systemctl start fossil
sudo systemctl status fossil -l
出力:
fossil.service - Fossil Service
Loaded: loaded (/etc/systemd/system/fossil.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Mon 2022-09-26 17:59:10 CEST; 1s ago
Process: 2015 ExecStart=/usr/bin/fossil server --localhost --port 9000 --repolist /opt/fossil/repos (code=exited, status=200/CHDIR)
Main PID: 2015 (code=exited, status=200/CHDIR)
sudo journalctl -u fossil
印刷物:
.... systemd[12954]: fossil.service: Changing to the requested working directory failed: Permission denied
Sep 27 systemd[12954]: fossil.service: Failed at step CHDIR spawning /usr/bin/fossil: Permission denied
Sep 27 systemd[1]: fossil.service: Main process exited, code=exited, status=200/CHDIR
Sep 27 systemd[1]: fossil.service: Failed with result 'exit-code'.
Sep 27 systemd[1]: fossil.service: Service RestartSec=3s expired, scheduling restart.
Sep 27 systemd[1]: fossil.service: Scheduled restart job, restart counter is at 1.
Sep 27 systemd[1]: Stopped Fossil Service.
Sep 27 systemd[1]: Started Fossil Service.
ls -all /opt/fossil
drwxr-xr-x 4 fossil fossil 4096 Sep 27 repos
行を取り除くと
User=fossil
すべてがうまくいきます。
化石ユーザーとしてどのように化石を作成できますか?
答え1
私はこれについて何も知りませんが、fossil
あなたの問題は明らかに権限に関連しています。
これを実行したことがある場合は、sudo fossil ... /opt/fossil/repos
おそらくそのディレクトリに所有していてグローバルに書き込めないファイルがありますroot
。
包括的なソリューションは次のとおりです。
sudo chown -R fossil:fossil /opt/fossil
より目標化されたアプローチは次のとおりです。
sudo chown -R fossil:fossil /opt/fossil/repos
これにより、必要なすべてのファイル/ディレクトリの所有権が繰り返し変更されますfossil
。
これは通常、他のパッケージに依存しない再配置可能なパッケージと、とにかく独自の小さな世界で動作するように意図されたコンテンツを含む/opt/<package>/
ため、通常安全です。/opt
バイナリが/usr/bin/fossil
含まれておらず、それ自体が上書きできない/opt
ため、これはもっと好きです。fossil
しかし、できるだけ狭い権限を提供することをお勧めします。それでは、何があるのか見てください/opt/fossil
。これは伝統的な、、、、bin/
に分割されている場合にのみ行われます。自分自身に触れないようにする構成ファイルがある場合は、そのファイルが属していないことを確認してください。たとえば、明らかに読み取り/書き込みデータディレクトリがある場合は、そのディレクトリだけが必要です。etc/
lib/
var/
var/
fossil
/opt/fossil/repos
chown