linux进程的属主问题

LINUX进程的属主问题

在Linux系统中,进程的属主(也称为进程的所有者)是指启动该进程的用户。每个进程都有一个与之关联的用户ID(UID),这个UID表示了哪个用户拥有这个进程。进程的属主决定了该进程的权限和访问控制。

LINUX用户

  • 管理员:系统的管理员用户。
  • 系统用户: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
  • 普通用户:是由管理员创建的用于日常工作的用户。

在这里插入图片描述

LINUX进程的属主

进程的属主如下图中USER所示,可以由此判断出该进程是由哪个用户启动的。
在这里插入图片描述

  • 当应用程序被启动时,它通常以启动该应用程序的用户身份运行。例如,图中 fl 用户使用了top,那么top进程将在 fl 用户的权限下运行。
  • 如果该程序需要特权或访问特定资源,它可能会使用 sudo 或 su 以其他用户身份运行。例如使用sudo top会以管理员用户的权限运行top进程。

在这里插入图片描述

  • 指定用户启动,我们可以指定进程以哪个用户来启动,就如同系统用户一样,执行某些进程以特定的用户启动,防止被另外的用户干扰。
  • 在没有指定用户的时候,通常以当前登录用户的身份运行。

自启动进程的属主

如果我们的用户在登录之前设置自启动,那么他的属主由谁确定呢!
写一个简单的自启动脚本进行测试。

  • 在/etc/systemd/system/下创还能脚本文件mytop.service
[Unit]
Description=my top
After=network.target

[Service]
Type=simple
ExecStart=/bin/hello.sh

[Install]
WantedBy=multi-user.target
  • 在/bin/目录下创建脚本hello.sh

第一行输入#!/bin/sh,不严会出现报错service:failed at step EXEC spawning:Exec format error

#!/bin/sh
cd /home/fl/test/hello/ && ./hello
exit 0
  • 设置服务的开机自启动
systemctl enable mytop.service
  • 重启
sudo reboot

重启后在当前用户 fl 执行top,发现hello进程是属于root用户的,说明在用户登录之前启动的进程(自启动的进程)是由root用户启动的。个人猜测,这可能是由于/etc/systemd/system/下的操作只有管理员才有权限操作导致的,希望有懂得大佬指教一下。
在这里插入图片描述

总结

  • 在LINUX系统中,进程的属主,由启动该进程的用户决定

  • 在启动进程时,可以通过命令su - username command或者rumusel -l username -c "command"来明确指定进程由哪个用户启动
    需要注意的是这些命令需要管理员权限,甚至可以指定由系统用户(UID为1-999的用户)来运行进程。
    系统用户通常无法登陆(通常登录用户为管理员用户和普通用户)

  • 在进程启动时,如果没有指定启动用户,则默认为当前登录用户为属主

  • 如果在当前登录用户登录之前就启动的程序,默认为root启动,因为默认root就是登录状态

  • 自启动的应用属主为root的原因,可能是由于服务项自启动只有管理员权限才能执行

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值