admin管理员组

文章数量:1542784

前言

        最近,遇到了个问题,在LIUNX下如何自启应用程序。这个简单。之前我弄jupyter的时候其实也弄过。不过那个是普通用户。这个程序需要用到串口权限什么的,还有打日志也需要权限。

        折腾了好久,只想说,LIUNX的权限系统真的繁琐。


开始动手

先把相关的文件准备到位:.serivce服务和.sh脚本

创建xxxx.service文件:sudo vim /etc/systemd/system/xxxx.service,在文件中复制如下内容。‘#’及之后注释内容必须删除,否则运行会报错

[Unit]
Description=xxxx
 
[Service]
Type=simple
User=fs    # 需要更换为自己的用户名
ExecStart=/home/fs/Desktop/xxxx.sh  # 更换为自己的路径
 
[Install]
WantedBy=default.target

接下来就是到上面这个路径下创建这个xxxx.sh脚本文件,具体创建脚本过程此处省略了吧,可以用vim或者可视化或者其他方法,随意。此处重点是.sh内容:

#!/bin/bash

echo "123456"|sudo su               #此处echo后面应改为用户自己的管理员密码

cd /home/fs/Desktop/xxxx/build      #此处cd指令跳转到 目标文件的路径

sudo ./xxxx                         #此处是以管理员权限运行目标文件

exit 0

‘#’及之后注释内容记得删除。

.serivce服务文件启动

这部分就和当初配置jupyter的时候一样了。

sudo systemctl enable xxxx.serivce
sudo systemctl start xxxx.serivce

 .serivce服务文件关闭自启动

sudo systemctl stop xxxx.serivce
sudo systemctl disable xxxx.serivce

简评

        根据笔者的使用经验,在一个终端下,使用过一次sudo并且键入密码后,之后的sudo开头的指令都可以不用再输入密码运行。因此,在.sh文件中,第二排直接切换成root权限,第四排sudo运行的时候就可以不用再echo一次了。经过笔者的测试,在这个脚本下,如果第四排不加sudo,仍然会是普通用户权限,这跟自己开个终端的运行结果不太一样(自己开终端的话,sudo su后就一直是root用户了)。

本文标签: 应用程序权限root