我有一个技术部门的服务器(具有root访问权)在一些子域上运行一个web应用程序应用程序。 但该应用程序需要validation。 所以我请求了域的SSL密钥。 技术小组不愿意给我钥匙 – 这是可以理解的。
我需要不时地重新启动服务器。 是否可以为非root用户configuration权限,以便能够重新启动服务器,但无法访问其SSL密钥?
服务器可能是apache或nginx。 如果我运行两个没有root权限的任何一个,我得到以下内容:
阿帕奇:
AH00526: Syntax error on line 35 of /etc/apache2/sites-enabled/canvas-misis-ru.conf: SSLCertificateKeyFile: file '/etc/ssl/private/ssl-cert-snakeoil.key' does not exist or is empty
nginx的:
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied) 2014/09/21 17:08:55 [warn] 16805#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2 2014/09/21 17:08:55 [emerg] 16805#0: SSL_CTX_use_PrivateKey_file("/etc/ssl/private/ssl-cert-snakeoil.key") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/private/ssl-cert-snakeoil.key','r') error:20074002:BIO routines:FILE_CTRL:system lib error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib)
可以使用/etc/sudoers的规则将单个命令的root权限授予用户。
sudo visudo 添加新规则
someuser ALL=(ALL) NOPASSWD: /usr/sbin/service apache2 restart
正如你所看到的,也可能是参数。
用户someuser被允许执行以下操作:
sudo service apache2 restart