温馨提示×

如何配置debian context

小樊
43
2026-09-01 09:33:20
栏目: 智能运维

在 Debian 里,“context”这个词可能有几种不同含义,常见的包括:

  1. SELinux / AppArmor 的 security context
  2. systemd 的 execution context(服务运行环境)
  3. 用户/登录会话的 context(PAM、环境变量)
  4. 容器或 chroot 的 context

下面我分别说明最常见的几种配置方式。


一、SELinux Context(Debian 默认不启用)

Debian 默认 不启用 SELinux(默认用 AppArmor)。

查看 context

ls -Z
ps -Z

修改 context

chcon -t httpd_sys_content_t /var/www/html/index.html

持久化(需 policy 支持)

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html

⚠️ Debian 上若要用 SELinux,需要单独安装并启用,配置较复杂。


二、AppArmor Context(Debian 默认)

Debian 默认使用 AppArmor

查看状态

aa-status

配置 profile(context 限制)

/etc/apparmor.d/usr.sbin.nginx

示例:

/usr/sbin/nginx {
  #include <abstractions/base>
  /var/www/** r,
}

重新加载

systemctl reload apparmor

三、systemd Service Context(最常见)

如果你想配置 服务的运行 context(用户、环境、目录等):

示例:/etc/systemd/system/myapp.service

[Service]
User=appuser
Group=appgroup
WorkingDirectory=/opt/myapp
Environment=ENV=production
ExecStart=/opt/myapp/bin/start.sh

重载并启动

systemctl daemon-reload
systemctl start myapp

常见 context 参数

  • User=
  • Group=
  • Environment=
  • WorkingDirectory=
  • Nice=
  • LimitNOFILE=

四、用户登录 Context(PAM / 环境变量)

设置用户环境 context

~/.profile
~/.bashrc
/etc/environment

示例:

export APP_ENV=prod

PAM 会话 context

/etc/pam.d/common-session

五、容器 / chroot Context

chroot

chroot /srv/chroot /bin/bash

Docker(context 示例)

docker run --user 1000:1000 \
  --workdir /app \
  -e ENV=prod \
  myimage

你可以告诉我

你具体是指哪一种 context?例如:

  • SELinux / AppArmor?
  • systemd 服务?
  • 用户登录环境?
  • 容器?

我可以给你更精确的 Debian 配置示例。

0