sar*_*gas 5 linux shiny shiny-server
我在虚拟机中安装了shiny服务器(VirtualBox中的ubuntu服务器14.04.4)
shiny-server --version
Shiny Server v1.4.2.786
Node.js v0.10.40
Run Code Online (Sandbox Code Playgroud)
总而言之,服务器运行良好并按预期启动应用程序。
我唯一缺少和未能实现的是闪亮的服务器作为非特权用户运行。我什至完全设置了一个新的虚拟机和闪亮的服务器,以确保没有试用配置更改仍然生效。
我更改了我的配置,使其不包含任何需要 root 权限的文件夹:
$ cat /etc/shiny-server/shiny-server.conf
# Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;
# Define a server that listens on port 3838
server {
listen 3838;
# Define a location at the base URL
location / {
# Host the directory of Shiny Apps stored in this directory
# site_dir /srv/shiny-server;
site_dir /home/shiny/shiny_sitedir/apps;
# Log all Shiny output to files in this directory
# log_dir /var/log/shiny-server;
log_dir /home/shiny/shiny_sitedir/logs;
# When a user visits the base URL rather than a particular application,
# an index of the applications available in this directory will be shown.
directory_index on;
}
}
# privileges of shiny user
uid=1000(shiny) gid=1000(shiny) groups=1000(shiny),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lpadmin),111(sambashare)
# owner of /etc/shiny-server
-rw-r--r-- 1 root root shiny-server.conf
# trying to start shiny server as user shiny without sudo
$ start shiny-server
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.6" (uid=1000 pid=1134 comm="start shiny-server ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init ")
Run Code Online (Sandbox Code Playgroud)
服务器日志告诉我与我从 htop 输出中看到的一样,闪亮的服务器以 root 身份运行。(旁注:shiny server仍然使用/var/log/shiny-server.log而不是/home/shiny/shiny_sitedir/logs,这也让我烦恼)
[...] [INFO] shiny-server - Shiny Server v1.4.2.786 (Node.js v0.10.40)
[...] [INFO] shiny-server - Using pidfile /var/run/shiny-server.pid
[...] [INFO] shiny-server - Using config file "/etc/shiny-server/shiny-server.conf"
[...] [WARN] shiny-server - Running as root unnecessarily is a security risk! You could be running more securely as non-root.
[...] [INFO] shiny-server - Starting listener on 0.0.0.0:3838
Run Code Online (Sandbox Code Playgroud)
闪亮的服务器文档http://docs.rstudio.com/shiny-server/#running-shiny-server-with-root-privileges列出了非 root 使用需要满足的要求列表。实际上它定义了闪亮服务器需要以 root 身份运行的状态:
尽管我认为安装满足要求,但闪亮的服务器仍然以 root 身份运行。
/opt/shiny-server/config/中的任何内容或任何权限吗/etc/shiny-server/?在 @warmoverflow 发表评论后进行编辑,我/etc/init/shiny-server.conf移至~/.init. 现在,闪亮的服务器不会在启动时自动启动。但两者都没有start shiny-server成功,因为新贵不知道该~/.init文件夹。从一些论坛帖子来看,dbus 似乎需要启动,它通常通过启动图形环境来完成。因为我运行的是 Ubuntu 服务器,所以不会发生这种情况。创建新贵手册中提到的两个文件http://upstart.ubuntu.com/cookbook/#session-init也没有帮助,因为作业无法启动。
有人提示如何继续或我可以在哪里找到一些信息吗?
如果您的唯一目标是确保以shiny-server非 root 用户身份运行,并且您可以开始shiny-server使用 sudo (即使它是使用 sudo 启动的,它也可以作为非 root 用户运行)。
编辑/etc/init/shiny-server.conf,并且
在开头添加以下两行
setuid shiny
setgid shiny
Run Code Online (Sandbox Code Playgroud)将倒数第三行更改为
exec shiny-server --pidfile=/home/shiny/shiny-server.pid >> /home/shiny/shiny-server.log 2>&1
Run Code Online (Sandbox Code Playgroud)请注意,Shiny 有两个默认日志文件位置。
/var/log/shiny-server.log包含服务器本身的日志,并在中定义/etc/init/shiny-server.conf
/var/log/shiny-server/是包含应用程序日志文件的文件夹,在/etc/shiny-server/shiny-server.conf.
一旦您进行了上述更改并更改了run_as用户,请使用 再次启动shiny-server sudo start shiny-server,您会注意到它shiny-server实际上是以非root用户身份运行的,并且日志文件中的警告也将消失。
| 归档时间: |
|
| 查看次数: |
9714 次 |
| 最近记录: |