在 Linux 下,运行程序的用户一般遵循最小权限原则
最小权限原则(Principle of Least Privilege,PoLP)是一种安全实践原则
每个用户或进程只应拥有在其职责范围内执行操作所需的最小权限,而不应拥有任何多余的权限
最小权限原则优点:
- 减少被入侵时的损失
- 防止意外操作导致的错误
- 提高系统安全
在实践中,通常有如下方面:
- 采用
sudo
临时获得管理员全线,而不是始终采用root
用户 - 对于
web
应用程序,除非必要否则始终以非特权用户运行,防止入侵 - 对目录以及文件使用
chmod
设置恰当的权限
运行程序如何选择恰当的权限:
- 创建程序运行时专用的用户和组
- 设置程序运行时专用的程序目录
从安全的角度考虑,那么每一个应用程序都推荐设置一个低权限用户
如果安全要求不那么高,创建一个 低权限用户 专门用于运行大部分低权限的第三方程序是可行的
以运行一个 frp
程序为例,首先创建一个低权限用户 apps
,执行如下:
sudo groupadd app_group
# 该用户不允许登录
sudo useradd -r -g app_group -s /usr/sbin/nologin apps
在 /opt
目录下创建程序目录:
mkdir -p /opt/apps/frp
在 /opt/apps/frp
目录中设置好配置文件后,使用 apps
用户运行程序
sudo -u apps /opt/apps/frp/frpc -c /opt/apps/frp/frpc.ini
使用 systemd
指定 apps
用户来运行 frp
[Unit]
Description=FRP Service
After=network.target
[Service]
Type=simple
User=apps
ExecStart=/opt/apps/frp/frpc -c /opt/apps/frp/frpc.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target
综上,结论如下:
- 采用低权限用户搭配
systemd
/supervisor
来运行程序,降低程序有漏洞被入侵时的损失 - 程序运行目录通常可以选择
/usr/local/bin
或者/opt
目录 - 不建议采用
nobody
用户作为程序运行的用户,该用户广泛存在于Linux系统中,容易被提权和攻击