zoukankan      html  css  js  c++  java
  • 服务器和mysql权限控制

    服务器和mysql权限控制

      今天冬至,知道公司会提早下班(4点),以为是美好的一天,咋知道搞出一点问题,中午处理故障基本没睡 = =(惨~)

    一、需求引入

      这两天不知道什么原因,客户要求给线上服务器和数据库查看权限。因为问他们也告诉开权限的原因,我们经理觉得不太安全,于是叫我,配置

    (1)针对服务器,程序运行目录只有查看权限,其他目录不让看

    (2)针对数据库:只查不让改。

     

    二、问题解决

      对于数据库,昨天已经搞过,所以十拿九稳。无非就是grant个select权限给一个新开用户。核心命令:

    grant select on 数据库.* to 用户@'%' identified by '用户密码'; 

      因为考虑到客户那边经常不讲武德地去扫开启端口(害我写了不少整改文档。。),所以当时经理问我意见的时候,我说直接放堡垒机访问,好处有三:其一不需要让客户知道数据库的登录密码,其二能审计他们行为,最后能在安全组里设置端口开放范围(昨天设置的数据库权限刚好又是在ECS搭的mysql)

         害我中午基本没睡的是服务器的权限设置。第一次弄,我以为很顺利~

      话说我们服务器跑程序的账号权限颇大(假设是ljy用户,组也是ljy),也装了各种东西,如nginx之类的。给客户只看的目录,这里假设是:/home/ljy/app/service。

      当时查到有个setfacl的命令可以给目录添加acl规则。本来想慢慢研究的,经理说很急,客户等着。只能用心里有点谱的 chmod 和 usermod去搞。

    思路就是:

    (1)给客户建一个登录账号,假设是:program

    (2)将program用户添加到ljy组。

    usermod -g ljy  program

    (3)授权。先贴上关键命令

    chmod 750 /home/ljy
    chmod 750 /home/ljy/app/service   ##给用户只看权限,750和755都行。其他用户权限不管
    chmod 740 /home/ljy/{ljy下的其他目录或文件}

      正常来说,program用户只能看到自己家目录:/home/program/  下面东西,现在需要进去ljy家目录,需要给/home/ljy 设置至少 750 权限。如果不给x权限,无法进去 /home/ljy目录下。其他目录因为是不让program用户看的,740和700都可以。只看权限的目录 750 可以了。

    给大家看看效果,再说坑

    gst(打马赛克了,大家将就看) 和 nginx目录都是744,pe目录是755。尝试去看gst目录会报错:Permission denied。pe目录进去删除或新建什么,都会报错。只能看!

     

        其实到这里基本就完成任务。然后我开始作死了。

      尝试用program用户,去根目录做骚操作,发现有些目录可以做坏事哦(没错,是我之前开大了权限,事后我发现其实你单独改回来不好,干嘛全部目录一起设置)。于是为了安全起见,就闭眼运行了:

    chmod 755 /  

      想着这样除root用户其他用户啥事都搞不了。运行到一半,ssh自动断开了,可幸的是上面跑着的服务端口能通。telnet那台服务器的ssh端口和其他同网段机器ssh过去,都连不上。以为又要开单用户模式改回来,还要停业务重启机器,还要发公告,我已经脑补了晚上要加班重启机器进单用户了。

      当时吓坏了,边提工单边查资料。幸好阿里提供了VNC远程连接,不受ssh端口安全组限制(https://help.aliyun.com/document_detail/25433.htm)。要是天翼的话,没得救 = =,估计要被批斗了(经常想着这种高危职业,应该为自己买份保险。。)

      原来,/etc/ssh 目录下面权限有着非常严格的设置。改错会导致无法ssh连接。

       设置成755,或者其他权限就ssh连不上了。

     

     还有这玩意,得 chmod 777 /dev/null

     这个/tmp 权限,要:chmod -R 1777 /tmp

      / 根分区后来的权限设置,我对着另一台服务器改了第一层目录了,至于有没有遗漏(报错再设置回来权限吧),所幸不需要重启机器,不然,呵呵= = 。

    (冬至也是累死人,完~)  

     

  • 相关阅读:
    JVM(二)JVM内存布局
    JVM(一) OpenJDK1.8源码在Ubuntu16.04下的编译
    阿里面试
    npm run dev/npm run start报错
    vue 项目报错 You may use special comments to disable some warnings.
    ES6模块化
    jQuery中的动画
    jsonp的封装
    ajax中get,post,以及二合一的封装
    小案例之刮奖
  • 原文地址:https://www.cnblogs.com/windysai/p/15717489.html
Copyright © 2011-2022 走看看