其实关于降权运行,也就这么一句: su - user -c "xxxxxx",也没必要写一篇文章来解释,但是出于安全考虑,以及对之前出现的aria2权限过高的问题,写一篇详细解释的文章。

1.降权运行程序的方法:

先查看下su命令的解释:

su -help

用法:

su [选项] [-] [USER [参数]...]

将有效用户 id 和组 id 更改为 USER 的 id。
单个 - 视为 -l。如果未指定 USER,将假定为 root。

选项:

-m, -p, --preserve-environment  不重置环境变量
 -g, --group <组>             指定主组
 -G, --supp-group <组>        指定一个辅助组

 -, -l, --login                  使 shell 成为登录 shell
 -c, --command <命令>            使用 -c 向 shell 传递一条命令
 --session-command <命令>        使用 -c 向 shell 传递一条命令
                                 而不创建新会话
 -f, --fast                      向shell 传递 -f 选项(csh 或 tcsh)
 -s, --shell <shell>             若 /etc/shells 允许,则运行 shell

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出

根据提示,我们只需要如下操作即可:

su - user -c "xxxxxx" //user为用户名,xxxxxx为执行的命令

这样我们就把程序运行用户切换为非root用户了,这样提高了安全性。

2.关于ShadowsocksR降权运行

之前我一直没这个意识,一个安装脚本的执行全部通过root来完成,包括安装,运行,自启,使整个程序权限都为root权限,这样做非常危险,毕竟root用户啥都能干,但是鉴于这两年使用shadowsocks以来,的确没发生过什么通过shadowsocks获取到系统权限导致系统出现问题的情况,其实最主要还是我们运行的小鸡上很少会出现生产环境,毕竟主要功能也就是扶墙罢了,所以可能出现问题,大不了重装系统解决,使得我有这个意识的是之前出现的一个问题,服务器安装Aria2之后,由于是通过root用户运行,并且Aria的WebUI可以自己设置下载路径,所以问题来了,一些别有用心的用户,把公钥文件下载到/root/.ssh文件夹,这样就可以直接通过密钥验证来登陆服务器?恐怖吧,如果Aria2权限降低些,也就恐怕不会出现这个问题了。所以对于运行权限来说,我们最好保持最小化原则。能用即可,不是万不得已,不要使用root运行。

我们可以这样做:

root安装程序,新建用户,chown把所有者全部改为新用户,通过su切换新用户运行命令。
说到这里,很多人就纳闷了,那为啥不直接使用普通用户安装运行程序呢?
这就涉及到sudo命令,所以能做的时候,尽量通过sudo来安装程序,不要直接切换为root用户运行,不出问题还好,出问题获取的是整个系统的权限。


Even

一90后在读计算专业大学生,擅长各种语言的hello world以及安装各种软件。

说点什么

avatar
200
  Subscribe  
提醒