menu E4b9a6's blog
rss_feed
E4b9a6's blog
有善始者实繁,能克终者盖寡。

Linux下运行程序的权限设置

作者:E4b9a6, 创建:2024-09-23, 字数:1177, 已阅:128, 最后更新:2024-09-23

在 Linux 下,运行程序的用户一般遵循最小权限原则

最小权限原则(Principle of Least Privilege,PoLP)是一种安全实践原则

每个用户或进程只应拥有在其职责范围内执行操作所需的最小权限,而不应拥有任何多余的权限

最小权限原则优点:

  1. 减少被入侵时的损失
  2. 防止意外操作导致的错误
  3. 提高系统安全

在实践中,通常有如下方面:

  1. 采用 sudo 临时获得管理员全线,而不是始终采用 root 用户
  2. 对于 web 应用程序,除非必要否则始终以非特权用户运行,防止入侵
  3. 对目录以及文件使用 chmod 设置恰当的权限

运行程序如何选择恰当的权限:

  1. 创建程序运行时专用的用户和组
  2. 设置程序运行时专用的程序目录

从安全的角度考虑,那么每一个应用程序都推荐设置一个低权限用户

如果安全要求不那么高,创建一个 低权限用户 专门用于运行大部分低权限的第三方程序是可行的

以运行一个 frp 程序为例,首先创建一个低权限用户 apps,执行如下:

Bash
sudo groupadd app_group
# 该用户不允许登录
sudo useradd -r -g app_group -s /usr/sbin/nologin apps

/opt 目录下创建程序目录:

Bash
mkdir -p /opt/apps/frp

/opt/apps/frp 目录中设置好配置文件后,使用 apps 用户运行程序

Bash
sudo -u apps /opt/apps/frp/frpc -c /opt/apps/frp/frpc.ini

使用 systemd 指定 apps 用户来运行 frp

INI
[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

综上,结论如下:

  1. 采用低权限用户搭配 systemd / supervisor 来运行程序,降低程序有漏洞被入侵时的损失
  2. 程序运行目录通常可以选择 /usr/local/bin 或者 /opt 目录
  3. 不建议采用 nobody 用户作为程序运行的用户,该用户广泛存在于Linux系统中,容易被提权和攻击

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
gravatar
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]