私のものCGI実行可能ファイルが期待どおりに起動されます。。ただし、ある時点では、root(そして他のユーザー)になることを試みます。その時点でCGIは失敗しました。
関連するコードスニペットは次のとおりです。
[...]
int const pid(fork());
if(pid == 0)
{
if(setgid(0) == -1) // <-- this fails.
{
std::cerr << "error: cannot become the \"root\" group.\n";
exit(0);
}
[...]
私はこれがsystemdに関連していると思いますNoNewPrivileges
範囲。このパラメータはデフォルトで設定されており、Apache2ファイルfalse
には表示されません。.service
それで、この作品を作るために次に何を試すことができるのか疑問に思います。
apache2.service
ファイルは次のようになります(Ubuntu 20.04)。
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=https://httpd.apache.org/docs/2.4/
[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
PrivateTmp=true
Restart=on-abort
[Install]
WantedBy=multi-user.target
NoNewPrivileges
設定もなく何もないことがわかりますFreedesktopにリストされているものと同様の副作用を持つフィールド。
setuid()
最新バージョンのApache2で/setgid()
機能を機能させるにはどうすればよいですか?