Linux系统中有个文件/etc/sodoers,这个文件可以干什么呢?
答曰: 可以对非root的用户临时提权。
为什么搞这么麻烦呢?
答曰: 为了安全。
(网上有关rm -rf *,从删库到跑路的段子可不都是段子哟,有些是血淋淋的教训的,试想一下,当你所在的用户没有执行这条命令的权限时,是不是很安全?!对于很多服务或者应用提供商而言,这些用户的数据说是他们的命根子都不为过,所以,为了安全,使用各种手段都不为过,不要怕麻烦,不要怕)
如何提权呢,场景是怎么样的?
答曰: 当然系统得有一个非root用户,暂且取名为John,而且这个用户的权限应该被限制的很低,只能执行owner是它自己切有执行权限的文件,或者是root施舍的看不上的不太重要的文件(聪明的你已经想到了,即权限为xx7或者xx5的文件,即权限三段论中的那个others)。
————————插曲,可跳过————————
插曲: 刚在食堂打了饭,一碗杂酱面,再不吃面条就求了,放下手机,吃碗面回来接着码。(你已经看到了,食堂+杂酱面,我是个屌丝,鉴定完毕,哈哈,而且后面还有,吃完回去晚上加班,我想说,生活不易,且行且珍惜!)
—————————插曲,结束————————
前提: 为了安全,对外只开放John用户,不管是手动登陆还是第三方ssh登陆。(比如为了自动化某些任务,可能会用Jsch这种第三方工具远程执行Linux命令或者自己写好的py、sh脚本)
假设有个/var/dir/test.py文件,这个文件的owner是John,但是此文件中为了实现一个功能,它需要调用这么一个文件,/var/mgnt/init_os.py(也可以是shell脚本,从脚本名字来看,初始化操作系统这么大的事应该由root有权限执行才对,因此该文件的owner是root,且others没有执行权限)。
此时怎么办呢,就临时给John提权一下,但是仅仅是前面加个sudo xxx,系统会让你输入root密码呀。怎么免输入密码呢?这个时候就该/etc/sudoers配置文件上场了,在它里面设置/var/mgnt/init_os.py为免密码输入(具体设置方法网上一大堆,这里不赘述,我这里大部分的文章都是在吃饭时或者坐班车时手机敲的,因此只介绍一种知识点,为了让一些同侪知道,哦,原来还有这样的功能<大神绕过>,手机码字不容易,如果找不到,直接私信我)。
——————————
最后,简单聊一下安全这件事儿,在我前面的文章中也提到过安全,对,就是那篇安全威胁分析。上次我们四五个同事搞了半个月,这次又要搞了,今天和安全的几个专家开了一个会(我才不告诉你,开会快到中午一点),这个月末我们的服务要达到商用标准,如果上次只是为了上线(只有内部用户,不公测),小打小闹一把,这次要动真格的了,商用标准啊,可不是闹着玩的。其实说安全,说到底,就是首先所有的代码必须达到安全红线,然后增加一道道关卡,用各种安全的加密算法(不能用弱密码,弱算法),数据传输防监听防篡改(通道均要使用安全通道,比如ssh、tls2.1等),防止各种形式的攻击,每个开放的端口都要慎之又慎,测之又测,暴力攻击、渗透测试等等,过五关斩六将,方可达成安全系统,才能符合商用标准。
扯远了,祝好,各位!