以非root用户身份运行时pcap_lookupdev()
填充errbuf变量,而以root身份运行时,相同的函数返回第一个可用网络接口的值。
操作系统或库是否禁用此访问权限。我认为这是操作系统。什么是正确的答案?
这不是一个家庭作业问题
答案 0 :(得分:6)
通常,在访问操作系统提供的文件,设备和其他服务时,Unix(以及Linux)中的访问模型都是在操作系统 中实现的。
用户空间程序只需尝试他们想做的任何事情,并通过例如优雅的方式处理任何错误情况。告知用户一条消息。
这有几个好处:
可维护性:操作系统仍然存在访问策略实施,可以统一配置。想要限制对资源的访问权限的管理员一次,而不是必须在此配置此库,而不是那个库,然后......
可配置性:管理员可以将所需的访问策略配置为简单或复杂,而不受每个用户空间实施的限制。
安全性:通常不应通过强制执行访问策略来信任用户空间程序。这就像是有一只狼守护着绵羊。
编辑:
在您的情况下,pcap
需要对网络接口进行低级访问。由于安全隐患(捕获网络流量,生成任意网络数据包等),此类访问仅限于特权用户。例如,在Linux上,pcap
需要CAP_NET_RAW
capability可供用户使用。
答案 1 :(得分:0)
许多pcap函数需要root权限才能正常工作。这可能是问题吗?
答案 2 :(得分:0)
主要取决于操作系统。并非所有
---
title: "MRE"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(mapview)
library(shiny)
library(leaflet)
#library(RSQLite)
#library(sf)
```
Sidebar {.sidebar}
-----------------------------------------------------------------------
```{r}
# This is shiny input that will trigger entire map redraw
sliderInput("gridlines", "Grid Line Opacity", 0, 1, 0, step = 0.1, ticks = FALSE)
```
```{r}
### THIS IS MY ACTUAL CODE...For reference
# sp_grid <- reactive({
# db <- "../data/modeldata.db"
# con <- dbConnect(SQLite(), db )
#
# # set the sql based on user input
# sql <- 'SELECT id, Time,Cell_I, Cell_J, Cell_K, Cell_Botdepth_M, Zmax, Salinity, WKT_GEOMETRY
# FROM vwGridTK
# WHERE Time = :time
# AND Cell_K = :layer'
#
# df.grid <- dbGetQuery(con, sql, params = list(time = 0,
# layer = 1))
# dbDisconnect(con)
#
# st_as_sf(df.grid, wkt = "WKT_GEOMETRY") %>% st_set_crs(4326)
#
# })
```
Column {data-width=500}
-----------------------------------------------------------------------
### Reproducible Example
NOTE the shiny input to control opacity
```{r}
renderLeaflet({
m <- mapview(franconia, zcol = "district", alpha = input$gridlines)
m@map
})
```
Column {data-width=500}
-----------------------------------------------------------------------
### My Example
```{r}
# renderLeaflet({
# m <- mapview(sp_grid(), zcol = "Salinity",
# legend = TRUE, alpha = input$gridlines)
#
# m@map
#
# })
```
函数都需要在所有操作系统上具有root特权。
参考Reference Manual Pages,分别列出所有特殊特权要求。