我有一个快照申请。
我想在ghci中的端口80上运行它以进行本地调试。
通常情况下,我会在已编译的二进制文件上运行sudo ./main -p 80
来实现此目的,但在ghci中我得到了一个权限被拒绝。
*Main> :main -p 80
Initializing app @ /
Initializing heist @ /heist
...loaded 35 templates from /Users/dmj/blah/templates
Initializing CookieSession @ /sess
Listening on http://0.0.0.0:80/
Error on startup:
bind: permission denied (Permission denied)
Shutting down...
适用于非特权端口。
*Main> :main -p 8000
Initializing app @ /
Initializing heist @ /heist
...loaded 35 templates from /Users/dmj/blah
Initializing CookieSession @ /sess
Initializing db @ /auth
Initializing acid-state @ /acid
Listening on http://0.0.0.0:8000/
答案 0 :(得分:2)
以另一种方式查看此帖:Is there a way for non-root processes to bind to "privileged" ports on Linux?
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ncat
只需用'/ usr / bin / ncat'代替ghci的完整路径,它就可以了。
(我确信你多次被唠叨过以root为基础做任何长时间工作的想法有多糟糕......而且,这是一个特定于Linux的解决方案,所以如果你在Mac或其他工作* nix,这对你不起作用。)