方式一 (推荐)
首先,非root用户通常没有权限直接管理系统服务。但是,可以通过一些方法使非root用户能够启动或停止特定的服务。以下是一般步骤:
1. 编辑sudoers文件:
首先,确保非root用户被允许使用sudo执行特定的服务管理命令。编辑sudoers文件 (/etc/sudoers
),使用visudo命令:
sudo visudo
在文件中添加一行,允许用户执行特定服务的启动和停止命令。例如,允许用户启动和停止nginx
服务:
username ALL=(ALL) NOPASSWD: /bin/systemctl start nginx, /bin/systemctl stop nginx
或者
username ALL=(ALL) NOPASSWD: ALL
请将username
替换为实际的非root用户名。
2. 设置服务文件权限:
确保相关服务文件对非root用户具有执行权限。这通常涉及更改服务文件的权限或将非root用户添加到相应的用户组中。
sudo chmod +x /etc/systemd/system/servicename.service
或者,将非root用户添加到服务相关的用户组:
sudo usermod -aG groupname username
将servicename
替换为实际的服务名称,groupname
替换为服务相关的用户组。
3. 启动和停止服务:
非root用户现在应该能够使用sudo启动和停止指定的服务。例如:
sudo systemctl start servicename sudo systemctl stop servicename
替换servicename
为实际的服务名称。
方式二
1. 查看可用服务:
使用以下命令列出系统上当前可用的服务:
systemctl list-unit-files --type=service
2. 选择要配置的服务:
从列表中选择要配置的服务,假设选择的服务为your-service
。
3. 创建自定义服务文件:
在/etc/systemd/system/
目录下创建一个自定义的服务文件,例如your-service.service
。
在文件中添加以下内容,根据实际情况修改ExecStart等字段:
[Unit] Description=Your Service Description After=network.target [Service] Type=simple ExecStart=/path/to/your-service-executable User=your-username Group=your-group [Install] WantedBy=multi-user.target
请确保替换/path/to/your-service-executable
、your-username
和your-group
为实际的可执行文件路径、非root用户的用户名和用户组。
4. 重新加载systemd管理的配置:
执行以下命令使新的服务文件生效:
sudo systemctl daemon-reload
5. 启用并启动服务:
启用服务,使其在系统启动时自动启动:
sudo systemctl enable your-service
启动服务:
sudo systemctl start your-service
6. 检查服务状态:
确保服务已经正确启动,执行:
sudo systemctl status your-service
需要托管到sudo里才可以生效 ,否则需要输入密码 ,如何不输入,可以看下一个
普通用户 执行 systemctl start|stop|status 服务名 需要输入root密码