Linux系统下,如何将运行程序的用户从root转到一般用户?
来源:互联网 发布:php截取字符串前几位 编辑:程序博客网 时间:2024/04/20 18:13
在开发的过程中,一般的后台的服务程序,在开发初期没有规划好使用什么用户去运行,也没有考虑这个用户需要哪些权限,这就导致了一个很普通的现象发生,那就是,使用root,一切都可以搞定。大家都知道,使用root意味着这个程序所作的事情就没有限制啦,一旦,程序或者系统有缺陷而且被攻破,那么就可能导致攻击者可以控制整个系统,而且可以做任何事情。不过,大部分人还是不以为然,认为这样的事情不会落到自己头上,一直到某一天,他的老板打电话责备他系统被攻击是怎么回事?
所以,与其后期后悔,倒不如在开发初期就规划好。
如果程序已经启用啦,而且是使用root用户运行的,该怎么办呢? 直接转到一般用户,又怕某些方面会出问题,导致服务不能提供,问题会更大。同时,一般地也没有人敢随便更换运行服务的用户,这可需要进行一整轮的Regression测试的,要不然很容易发生Regression bug。在产品需要尽快更新出新功能的今天,也没有人愿意做这个事情,除非产品被攻击而且服务器被控制的事情发生。
在这里,我总结了几个从root用户转到一般用户的几点注意事项,希望对有准备转换用户的朋友们做个参考:
第一,一般提供服务的程序都会侦听端口,在linux系统下,0~1024这个范围的端口,都属于知名端口,只有root权限的用户才可以侦听。例如,提供hTTP服务的80端口,提供HTTPS的443端口。如果侦听这些端口,则必须要root用户。 所以,对于自己写的程序需要侦听端口<1024的,可以临时提权到root用户,侦听端口,然后再收回权限。不过,现在一般都会有load-balance服务器,内部的服务器到不一定非要侦听在对外提供服务的端口。可以在内部侦听大于1024的端口,例如:7000端口,在Load-balance的服务器上,将80端口的请求转到该服务的7000端口上也可以实现。
第二,一般的程序都不需要直接调用系统调用的,不过,也不排除一些例外的情况发生。系统调用一般是内核提供的,用于用户程序和内核交互。这些系统调用也只能由root用户来调用。所以,如果想在用户的程序调用这些系统调用,则必须先提权,操作完之后,再收回权限。
第三,访问系统目录,例如:在代码里加载系统路径下的某些库。
最后一点,也是最重要的一点就是,了解运行目前的服务需要哪些权限?只要赋予最小权限,并且能够满足运行服务的需求即可。
如果有什么不正确的地方,还望大家能够指正。
- Linux系统下,如何将运行程序的用户从root转到一般用户?
- 在GNU/LINUX系统下,将root帐号的邮件转到到其它用户/邮箱?
- Linux从一般用户切换到root用户
- Linux从一般用户切换到root用户
- Linux root用户与一般用户的区别
- linux下如何以某个用户的身份运行程序
- 对于ubuntu下的root用户和一般用户的区别和看法
- CentOS 6.5中如何由一般用户切换为root用户
- centos 5.5中如何由一般用户切换为root用户
- linux下如何从普通用户切换到root用户
- Linux下如何从普通用户切换到root用户
- 如何在 Linux下从普通用户切换到root用户
- 一般用户的root操作
- 如何将linux下的现有用户加到管理员root组
- linux 系统下 如何运行 简单的 c程序
- CentOS一般用户和root用户之间的切换
- 如何使linux系统下的root用户不保存终端历史记录到.bash_history中
- 如何使linux系统下的root用户不保存终端历史记录
- linux中的find命令
- .Js,.jsp,jQuery,javascript,java区别
- BlackBerry 9850 应用:CISCO WebEx会议
- 七葵海的伤感空间日志发布:为什么,每天我都会想着你?
- Fastjson介绍
- Linux系统下,如何将运行程序的用户从root转到一般用户?
- ruby watir 网页自动化控制环境搭建及相关下载
- (转)adb 协议
- JVM常用参数(完善中)
- Java 实现对VF数据库的访问
- HDU 1247 Hat’s Words(字典树)
- (转)Android Debug Bridge 服务详解
- 北京理工大学虚拟现实作业之红蓝交替
- 网络编程之及时通信程序(聊天室)--------(二)服务器端搭建