在linux shell脚本中root切换到普通用户执行脚本或命令的方法

需求:

安装deb包,设置程序安装后启动,不需要root权限启动程序 | 不能用root权限启动

其他开机启动选项

方法:root临时降低权限

secUser=`who am i | awk '{print $1}'`
#echo $secUser
su $secUser -c <指令> > /dev/null 2>&1 & #这一条命令的执行权限是临时的,只在本条语句起作用
id -u # 结果为0,还是root用户权限

附: su --help

 -c, --command COMMAND   pass COMMAND to the invoked shell
 -h, --help     display this help message and exit
 -, -l, --login    make the shell a login shell
 -m, -p,
 --preserve-environment  do not reset environment variables, and
        keep the same shell
 -s, --shell SHELL    use SHELL instead of the default in passwd

以上这篇在linux shell脚本中root切换到普通用户执行脚本或命令的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 让谷歌浏览器Google Chrome支持eWebEditor的方法

    [平台] 在线HTML编辑器:eWebEditor Version 2.8.0 最终版 网页浏览器:Google Chrome 37.0.2062.0 操作系统:windows7 专业版 Service Pack 1 [步骤] 在百度搜索"IE Tab"并进入国内站点下载这个插件,或者进入"http://www.chromeextensions.org/utilities/ie-tab/#.VIAgYaOW728"下载. 如果使用后一种方式,那么无法直接安装(下载和

  • Linux 解决Deepin无法在root用户启动Google Chrome浏览器的问题

    解决Deepin无法在root用户启动Google Chrome浏览器的问题,步骤如下. 1.找到Chrome的路径 which google-chrome 假如路径为:/usr/bin/google-chrome 2.编辑google-chrome文件 打开google-chrome,修改文件末尾命令. vim /usr/bin/google-chrome 在 exec -a "$0" "$HERE/chrome" "$@" 末尾增加 --us

  • 在Linux下修改和重置root密码的方法(超简单)

    刚开始接触Linux的人,忘记了root密码可能会不知所措.想找回自己的root密码,但是又不知道方法.其实,只需要简单的几步就可以重置自己的root密码了(找回密码我也不会) 1.开机之后在内核上敲击e,然后编辑选项 2.在linux16这一行,将红框内的内容改成rw rd.break 根据提示,使用组合键CTRL+X进入密码修改 3.进入到系统的紧急求援模式 4.依次输入以下的命令 # chroot /sysroot //进入系统的根目录 # passwd //重置密码 # touch /.

  • 如何解决ajax在google chrome浏览器上失效

    问题分析:我的ajax的代码在IE浏览器,360的IE核心的浏览器,以及在火狐都是运行正常的,但是在GOOGLE CHROME下却让我非常头疼,总是没有显示正确结果. 我本机的开发环境如下: google chrome 版本 28.0.1469.0m 服务器Tomcat6.0 服务器端Spring MVC 的代码如下: 控制器部分: @RequestMapping(value="/searchRecordBlackListByCardId.json") public String se

  • ASP.net Menu控件在Google Chrome和Safari浏览器下显示错位的解决办法

    复制代码 代码如下: <browsers> <browser id="Safari3" parentID="Safari1Plus"> <identification> <useragent match="Safari/\d+\.\d+" /> </identification> <capture> <useragent match="Version/(?'v

  • Linux连接mysql报错:Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法

    前言 最近在linux连接mysql /usr/local/mysql/bin/mysql -uroot -p 输入密码出现Access denied for user 'root'@'localhost'(using password: YES)错误.下面话不多说了,来一起看看详细的解决方法吧 解决办法: 1.先停止mysql 服务 service mysqld stop 2.进入mysql安装目录bin/ 使用safe模式,进行重启: ./mysqld_safe --skip-grant-t

  • Linux下普通用户用sudo su给自己加root权限的方法

    首先: sudo这个命令就是给后面的命令加上root权限(sudo=superuser do),su这个命令是switch user,切换用户,你sudo su这个命令的意思是用root的权限来切换到()用户.你根本没有指定用户,当然切换不过去 你要切换到root,那就是su root,然后输入root的密码,你要让自己成为有执行sudo权限的人,那就要修改sudoer-list,在命令行里敲 sudo visudo  打开如图所示: 然后在打开的文件里把你的用户名加上去(按照里面已有的用户的格

  • 在linux shell脚本中root切换到普通用户执行脚本或命令的方法

    需求: 安装deb包,设置程序安装后启动,不需要root权限启动程序 | 不能用root权限启动 其他开机启动选项 方法:root临时降低权限 secUser=`who am i | awk '{print $1}'` #echo $secUser su $secUser -c <指令> > /dev/null 2>&1 & #这一条命令的执行权限是临时的,只在本条语句起作用 id -u # 结果为0,还是root用户权限 附: su --help -c, --co

  • Shell脚本中实现切换用户并执行命令操作

    今天公司同事来找到我说要在服务器上用另外一个用户执行python脚本,但设置到crontab里却老是root用户来执行,为了省事我就想了一个偷懒的办法,就是用shell脚本切换到那个用户,然后去执行那个python脚本.好了,这篇文章我只演示怎么用shell脚本切换到其他用户执行命令. 系统:centos 5.x 脚本内容: cat test.sh 复制代码 代码如下: #!/bin/bash su - test <<EOF pwd; exit; EOF 执行结果图: 当然也可以用下面的命令来

  • 在docker容器中使用非root用户执行脚本操作

    应用容器化之后,在docker容器启动时,默认使用的是root用户执行命令,因此容器中的应用默认都是使用root用户来运行的,存在很高的安全风险,那么如何能够使用非root的业务用户来运行应用呢, 下面我将举一个简单的例子来说明. 该例子是在容器中使用自建的用户来运行一个简单的shell脚本,并将脚本输出日志持久到容器外部.接下来让我们来看从制作镜像到容器运行的全过程吧. 1.构建镜像: 我将会使用dockerfile的方式来构建镜像,基础镜像使用ubuntu 14.04(需要先拉取该镜像,do

  • Linux 连续执行多条命令的方法(推荐)

    每条命令使用";"隔开,则无论前边的命令执行成功与否都会继续执行下一条命令 这里,故意将第二条命令中的echo多写了一个o,命令执行出错,但并不影响后续命令的执行 可以这么想,如果用分号来间隔命令,就相当于将命令分隔在了不同的行,无论前一行的命令成功或失败,都不影响下一行命令的执行. $ echo 1; echoo 2; echo 3; echo 4 1 -bash: echoo: command not found 3 4 若命令间使用"&&"隔开

  • Linux Shell循环中实现展示进度百分比的实现方法

    Shell 循环中实现展示进度百分比的脚本方法 当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的.我一开始的想法是,没处理一行,就输出一个 # 号.但是这样还是会出现很多很多的 # 号,即便是放在一行,也是非常不优雅的.所以,我想实现一个展示进度百分比的脚本. 实现思路 获取文件的行数 用 i++ 实现每行处理的计数 当前处理行数*100再除以文件行数+%得到我要输出的百分比结果 我需要在一行展示,而不是一直追加或者每次都显示一行 就是这些需求了.我们来逐渐实现. 获取文件的行数 这

  • Linux shell编程中IO和条件及循环处理的细节问题讨论

    > 與 < 差在哪? 谈到I/O redirection,不妨先让我们认识一下File Descriptor(FD).程序的运算,在大部份情况下都是进行数据(data)的处理,这些数据从哪读进?又,送出到哪里呢?这就是File descriptor(FD)的功用了. 在shell程序中,最常使用的FD大概有三个,分别为: 0: Standard Input(STDIN) 1: Standard Output(STDOUT) 2: Standard Error Output(STDERR) 在标

  • 详解Linux Shell 实现一个获取任意位数的随机密码的脚本

    Shell 命令行,实现一个获取任意位数的随机密码的脚本 每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本.这两天在学习 bash Shell 所以,想用同样的逻辑实现一个获取任意位数随机密码的脚本. 我成功了 :) 分析问题 我们假设我们需要的密码是大小写字母以及数字的组合,并且剔除掉 1,l,0,O,o 这些不便于认知的字符. 然后随机的读取其中的字符,组合成一个我们需要的密码,最后输出. 理顺了逻辑之后,我想到有下面的知识点是我之前不是很熟悉的

  • 详解Linux  Shell 实现一个获取任意位数的随机密码的脚本

    Shell 命令行,实现一个获取任意位数的随机密码的脚本 每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本.这两天在学习 bash Shell 所以,想用同样的逻辑实现一个获取任意位数随机密码的脚本. 我成功了 :) 分析问题 我们假设我们需要的密码是大小写字母以及数字的组合,并且剔除掉 1,l,0,O,o 这些不便于认知的字符. 然后随机的读取其中的字符,组合成一个我们需要的密码,最后输出. 理顺了逻辑之后,我想到有下面的知识点是我之前不是很熟悉的

  • Shell脚本中实现把输入的密码转换为*(星号)的方法

    如果你需要写一段与用户交互,且需要输入一些敏感信息的(例如:用户密码.License等),那么直接用printf+read的方式,就会把用户输入的信息显示在屏幕了,这是不符合信息安全的,而且对客户体验来说也显得不够专业,所以就需要将用户输入的密码转换为*,样式如下: please input your passwd:1234 修改为: please input your passwd:**** 那么具体如何实现呢,请往下看-- #!/bin/sh getchar() { stty cbreak

  • linux shell常用循环与判断语句(for,while,until,if)使用方法

    shell的循环主要有3种,for,while,until shell的分支判断主要有2种,if,case 一,for循环 #!/bin/bash for file in $(ls /tmp/test/mytest |grep sh) //for in格式是shell for的基本格式,根js的for in类似 do //循环开始你就把它当成{ echo $file done //循环结束你就把它当成} for ((i=0;i<10;i++)) //注意是双小括号,由于受其他语言的影响,很容易搞

随机推荐