场景

在应用部署过程中,会遇到这样的问题:前期需要root用户执行配置、初始化工作,而具体的业务应用需要使用非root用户启动。

如何解决呢?

方法

可以使用sudo,实现授权。

sudo命令授权,既可以使非超级用户执行超级用户的命令,也可以让超级用户以普通用户身份执行程序。

上面场景的解决方案具体步骤如下。

  1. 配置/etc/sudoers

    在文件末尾添加:

    root ALL=(lanyang) /data/servers/orange-agent/control

    表示root被授权,在任何机器上,执行命令/data/servers/orange-agent/control时,使用langyang用户。

    授权的语法格式:

    user machine=command

    表示user被授权在哪些machine,以什么身份(默认root),执行command。

    修改/etc/sudoers文件一般有两种方法。

    方法一 使用visudo

     可以使用visudo命令,命令行直接输入visudo,打开的就是/etc/sudoers文件,修改后,visudo会进行语法检查,并提示错误;

    方法二 直接编辑

    为了安全考虑,/etc/sudoers文件只有读权限,首先需要增加文件写权限。

    $ chmod u+w /etc/sudoers

    修改完成后,记得收回权限:

    $ chmod u-w /etc/sudoers
  2. 启动应用

    配置完成后,root用户执行如下命令:

    $ sudo –u lanyang /data/servers/orange-agent/control start

    这样应用程序就是以lanyang用户启动的。

参考

http://man.linuxde.net/sudo

http://www.heyongsheng.com/linux常用基本命令-sudo授权.html

http://blog.csdn.net/u012949658/article/details/53401888

非root用户执行程序---sudo的使用的更多相关文章

  1. Linux系统下给非root用户添加sudo权限

    Linux系统下给非root用户添加sudo权限 有时,在linux系统中非root用户运行sudo命令,会提示类似信息:  xxx is not in the sudoers file. This ...

  2. linux下非root用户的sudo问题

    linux下的root用户是个超级管理员,一般是不用这个用户登录进行操作的,但有时候需要root权限,又不想切换用户的话可以使用sudo命令.但是不是所有的用户都可以使用sudo命令的. 首先可能会遇 ...

  3. 非root用户ssh 执行 sudo远程机器免密钥

    非root用户ssh 执行 sudo远程机器免密钥 # 1.登陆192.168.1.10 ssh-keygen -t rsa # 一路回车 # 将公钥添加到认证文件中 cat ~/.ssh/id_rs ...

  4. Linux下非root用户如何安装软件

    Linux下非root用户如何安装软件 从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数.对于这类人只能说可惜,还没有领略到linux的美好就过早放 ...

  5. ubuntu下非root用户下获得使用wireshark的权限

    在非root用户下不能使用wireshark用来抓包,所以需要进行以下操作: sudo groupadd wireshark sudo chgrp wireshark /usr/bin/dumpcap ...

  6. perl 下使用非root用户安装模块

    perl下安装模块可以使用cpan命令,但是通常我们不具有root用户权限,所以只能以sudo方式安装模块. 例如需要安装Net::SCP::Expect模块, 执行cpan Net::SCP::Ex ...

  7. Linux 下非root用户使用docker

    Linux 下非root用户使用docker 通常我们使用linux系统的时候,最好是不要直接使用root账号,但是使用Docker的时候,默认又是不能使用非root用户的,关于原因,官方说法如下: ...

  8. MHA非root用户搭建测试

    最近一直在瞎搬砖,最大的感触是运维工作难做.不过废话不多说,最近被分配了一项比较有意思的task,尝试着非root用户搭建MHA并测试下能否成功漂移,以下是两天测试和文档编写的成果,分享给各位看客,欢 ...

  9. 非root用户sudo_ssh免密钥

    非root用户sudo_ssh免密钥 目标:从服务器上ssh登陆后sudo免密钥执行相应的命令 环境介绍: 192.168.65.130 web224 # 步骤一: # 每个节点执行(不是必须,但是建 ...

随机推荐

  1. php中的curl的一些参数总结

    curl可以根据是否是http或则是https选择加密发送的内容: 使用curl发送请求的基本流程 1,初始化连接句柄: 2,设置curl选项: 3,执行并获取结果: 4,释放curl连接句柄: 例子 ...

  2. PHP:第二章——PHP中的foreach语句

    foreach语句提供了遍历数组的 <?php header("Content-Type:text/html;charset=utf-8"); $arr=array(&quo ...

  3. Visual Studio build tools 安装出错的一种解决办法

    一般是安装包丢失或损坏,那么我么可以用离线下载的方式来先行下载. 用 -h 看下帮助 主要是Layout参数. 下载完,到下载目录安装吧.

  4. windows 环境下python 安装 pypcap 并用pyinstaller打包到exe,解决DLL 加载失败。

    安装 PYQT5 pypcap 环境: windows10_x64 python3.6.3 pycharm2017.2.4 备注: 需要安装 Visual C++ Build Tools 2015 可 ...

  5. UINavigationController详细(转)

    UINavigationController使用详解 有一阵子没有写随笔,感觉有点儿手生.一个多月以后终于又一次坐下来静下心写随笔,记录自己的学习笔记,也希望能够帮到大家. 废话少说回到正题,UINa ...

  6. Samsung_tiny4412(驱动笔记09)----alloc_pages,kmalloc,vmalloc,kmem_cache,class

    /*********************************************************************************** * * alloc_pages ...

  7. 【OpenCV】Learn OpenCV

    learn opencv website: https://www.learnopencv.com/ learn opencv github:https://github.com/spmallick/ ...

  8. DelaunayTriangulation_VoronoiDiagram_using_OpenCV的实现

    前言 最近project中有关于delaunay的实现问题,查找资料,看到learnopencv这个网站,有很多peoject的实现,本文主要是实现Delaunay Triangulation and ...

  9. 当前目录如何打开cmd

    前言 有时候需要在当前文件夹打开cmd控制台,直接从开始打开cmd进入当前目录比较麻烦,可以直接进入. 方法 按住键盘上Shift键的同时,在要操作的文件夹(DOS年代称为目录)上点击鼠标右键,在弹出 ...

  10. Spring boot 2.1.0 -- swagger2 整合

    依赖版本信息 Spring boot 2.1.0.RELEASE swagger2 2.7.0 1. mvn 配置  pom.xml 包引入 <!--swagger2依赖--> <d ...