场景

在应用部署过程中,会遇到这样的问题:前期需要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. OC MRC之循环引用问题(代码分析)

    // // main.m // 07-循环引用 // // Created by apple on 13-8-9. // Copyright (c) 2013年 itcast. All rights ...

  2. OC 类的本质和分类

    一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一 ...

  3. Bellman-Ford模板

    转载链接:http://blog.csdn.net/niushuai666/article/details/6791765 Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情 ...

  4. scrapy-redis介绍(一)

    scrapy是python里面一个非常完善的爬虫框架,实现了非常多的功能,比如内存检测,对象引用查看,命令行,shell终端,还有各种中间件和扩展等,相信开发过scrapy的朋友都会觉得这个框架非常的 ...

  5. Effective C++阅读笔记

    条款1:视C++为一个语言联邦:C.Object-Oriented C++.Template C++.STLC++高效编程守则视情况而变化,取决于使用C++的哪一个部分 条款2:尽量以const,en ...

  6. [转]数据库更新(Update语句)查询

    2011-03-27 10:40:11| 分类: Database |举报|字号 订阅原文出自:http://blog.csdn.net/ylnjust02/archive/2005/12/10/54 ...

  7. Python range

    i = 1 while i <= 100: print(i) i += 1 # range(参数) [0,参数) 取不到 for i in range(10): # range() 可以被迭代 ...

  8. BitBlt函数的绘制属性

    BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int ...

  9. https页面证书验证、加密过程简介

    1.服务器向CA机构获取证书(假设这个证书伪造不了),当浏览器首次请求服务器的时候,服务器返回证书给浏览器.(证书包含:公钥+申请者与颁发者的相关信息+签名) 2.浏览器得到证书后,开始验证证书的相关 ...

  10. ubuntu16.04 中文输入法

    https://blog.csdn.net/qq_21792169/article/details/53152700 在主文件夹目录即home目录,按快捷键Ctrl+H(显示隐藏文件),看到的.bas ...