systemd-sysctl サービスが起動し、/proc/sys/user/ 内のファイルに書き込もうとすると、権限が拒否されます。

systemd-sysctl サービスが起動し、/proc/sys/user/ 内のファイルに書き込もうとすると、権限が拒否されます。

有効にしようとしていますDocker 上のユーザー名前空間もちろん、これを行うにはカーネルでユーザー名前空間を有効にする必要があります。

RHEL/CentOS でユーザー名前空間を有効にする手順の 1 つは次のとおりです。

echo "user.max_user_namespaces=15000" >> /etc/sysctl.conf

max_user_namespaces はデフォルトで 0 であるためです。この後、再起動するか、実行してsysctl -psysctl.conf の sysctl 設定をロードする必要があります。設定がロードされると、/proc/sys/user/max_user_namespaces15000 が含まれるようになります。これは、RHEL 7.4 (カーネル: 3.10.0-957.10.1.el7.x86_64) では問題なく動作します。

また、 CentOS 7.4 (カーネル: 3.10.0-693.10.1.el7.x86_64) でも、 を実行すると動作しますsysctl -p。ただし、再起動すると、max_user_namespaces は 0 に戻ります。
systemd-sysctl サービスのステータスを確認すると、次のステータスになっていることがわかりましたactive (exited)

● systemd-sysctl.service - Apply Kernel Variables
  Loaded: loaded (/usr/lib/systemd/system/systemd-sysctl.service; static; vendor preset: disabled)
  Active: active (exited) since Wed 2019-04-03 16:15:34 WEST; 16s ago
    Docs: man:systemd-sysctl.service(8)
          man:sysctl.d(5)
 Process: 2786 ExecStart=/usr/lib/systemd/systemd-sysctl (code=exited, status=0/SUCCESS)
Main PID: 2786 (code=exited, status=0/SUCCESS)

Apr 03 16:15:34 localhost.localdomain systemd[1]: Starting Apply Kernel Variables...
Apr 03 16:15:34 localhost.localdomain systemd[1]: Started Apply Kernel Variables.

詳しく調べてみると、systemd-sysctl サービスが起動されるたびに、次の場所に書き込もうとすると「Permission denied」エラーが発生して失敗することがわかりました/proc/sys/user/max_user_namespaces

$ journalctl -xn
[...]
Apr 03 16:15:34 localhost.localdomain sudo[2779]:     user : TTY=tty1 ; PWD=/home/user ; USER=root ; COMMAND=/bin/systemctl start systemd-sysctl
Apr 03 16:15:34 localhost.localdomain polkitd[763]: Registered Authentication Agent for unix-process:2780:7181831 (system bus name :1.51 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Apr 03 16:15:34 localhost.localdomain systemd[1]: Starting Apply Kernel Variables...
-- Subject: Unit systemd-sysctl.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit systemd-sysctl.service has begun starting up.
Apr 03 16:15:34 localhost.localdomain systemd-sysctl[2786]: Failed to write '15000' to '/proc/sys/user/max_user_namespaces': Permission denied
Apr 03 16:15:34 localhost.localdomain systemd[1]: Started Apply Kernel Variables.
-- Subject: Unit systemd-sysctl.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit systemd-sysctl.service has finished starting up.
-- 
-- The start-up result is done.
Apr 03 16:15:34 localhost.localdomain polkitd[763]: Unregistered Authentication Agent for unix-process:2780:7181831 (system bus name :1.51, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)

ファイルの権限は次のとおりです (RHEL と CentOS の両方)。

$ ls -l /proc/sys/user/max_user_namespaces
-rw-r--r--. 1 root root 0 Apr  3 10:10 /proc/sys/user/max_user_namespaces

前述したように、sudo を使用して直接編集することで変更できますsysctl -p。systemd-sysctl サービスが書き込めないのはなぜですか?

まったく同じことがRHELでも機能することに注意してください...何が問題なのか全くわかりませんし、どこにも答えが見つかりませんでした。これ質問ですが、まだ答えは出ていません。

何か案は?

関連情報