root 用户拥有至高无上的权利,那么我们运维人员是不是直接在root用户下处理所有问题呢?
答案是否定的,权力越大,责任越大,人是会犯错的,因此我们要在不影响我们的工作情况下,尽量限制我们的权力,以免误操作引发灾难

一 su 命令 ---账户之间的切换

普通用户切root用户或者普通用户之间的切换都需要对方输入对方账户登录密码,root用户进普通用户不需要密码验证,这也是权力的体现。
命令格式:

su username
su - username

如果不带用户名,默认root用户
不带 - 的切换是只是在自己家里调用权力,环境变量没有变化。
带 - 直接进入到对方家里,反客为主,使用权力, 当前用户环境变量初始化为对方用户环境变量 。请看下面例子

二 sudo ----获取root权利执行命令

su 命令虽然让普通用户轻松切到root用户下接管root用户的工作,但是需要root用户授权密码,我们知道普通用于不止一个,因此root密码多次下发,一旦不小心泄露,就很不安全。我们有没有不长期下发root密码的办法,还能让普通用户干活呢,当然有,sudo 就是来解决这个难题的

            sudo 用法 ----- sudo + 要执行的命令

sudo ----在自己账户下拿到root权力去干活,每干一次活需要验证当前身份,也就是要输入当前账户密码,前提是该账户已经被事先授权。sudo与su的关系我可以这样举个例子, 假如你是宰相想行使皇帝的权力,su的办法是跑到皇帝跟前索要到权力,su-的办法是篡位自己当皇帝,sudo是皇帝给你发个金牌令箭,让你行使权力。

看上面例子 ,我想借助sudo 来修改我自己test账户的密码,我输入自己密码后提示 test 账户没有在sudoers 这个文件里,意思是需要在该文件里注册备案,才能获取权力,下面我们修改配置文件,添加test账户

                        命令visudo---可以查看sudo配置文件


备注:一定要用visudo去打开文件,不要用vi,因为此文件特别重要,vi无法显示语法错误,visudo可以显示语法错误。中间括号的ALL表示授权的用户,末尾的ALL表示授权的命令
在 root ALL=(ALL) ALL下一行加一行即可,我们再次尝试修改密码,请看结果:

提示我们先输入自己账户密码,然后就可以改密码了
处于当前登录状态,该身份验证只需要一次,你再次用sudo命令就不需要输密码了
下面我举个案例,我们的需求是把Linux服务器设置成这个样子:只允许使用普通账户登陆,而普通账户登录后,可以不输入密码就能sudo切换到root账户。
编辑刚才的配置文件 /etc/sudoers 修改两个地方

把sudo权力的下发组 wheel 这行前面的#删掉 ,让这行代码执行,其次在文件尾行假如下面三行:


三行的意思是:第一行 给三个普通账号设置一个组别名,让权力按组下发。 第二行给/bin/su 取别名SU。第三行 免密码登录。
保存配置文件后,使用test, test1, lv 三个账户登陆Linux后,执行命令 sudo su - 切换到root账户,获取root账户的所有权利,结果如下:

那么最后一个问题,如何限制不让root直接登录呢,可以用用工具生成一个非常复杂的随即字符串密码,这样自己也记不住了,那万一要用呢,当然还有办法,用kapss保存密码工具,把密码管理起来

总结:
sudo的工作过程如下:

  • 1 当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
  • 2 确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
  • 3 若密码输入成功,则开始执行sudo后续的命令
  • 4 root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
  • 5 若欲切换的身份与执行者的身份相同,也不需要输入密码

    三 限制ssh远程登录

    /etc/ssh/sshd_config为sshd服务的皮质文件,默认root账户可以通过ssh远程登录linux。要实现不允许登录,修改配置文件即可
    在文件中查找到#PermitRootLogin yes,将yes该为no,保存退出,然后重启sshd服

                    systemctl  restart sshd.service

Linux学习总结(六)-su命令 sudo 命令 限制root远程登录的更多相关文章

  1. Linux学习(十二)mkpasswd、su、sudo、限制root远程登录

    一.mkpasswd mkpasswd用来生成随机密码字符串.可以指定长度和特殊字符的长度: [root@ruanwenwu01 ~]# mkpasswd O7.alw5Wq [root@ruanwe ...

  2. 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 su命令 切换用户 [root@centos_1 ~]# su - xiaobo [root@centos_1 ~]# su - ...

  3. CentOS启用sudo,禁用root远程登录

    CentOS默认不启用sudo,且可以直接用超级管理员身份登录服务器.ubuntu这方面做得比较好,为了安全,减小误操作带来的损失,还是推荐启用sudo. 1.添加sudo用户 执行 visudo 命 ...

  4. 【linux学习笔记六】压缩 解压缩命令

    所有的压缩文件一定要写压缩格式的扩展名 .zip格式压缩 #压缩文件 zip 压缩文件名 源文件 #压缩目录 zip -r 压缩文件名 源目录 #解压缩 unzip 压缩文件 .gz格式压缩 #压缩为 ...

  5. su命令、sudo命令、限制root远程登录 使用介绍

    第3周第3次课(4月4日) 课程内容:3.7 su命令3.8 sudo命令3.9 限制root远程登录 3.7 su命令 [root@jimmylinux-002 ~]# su - jimmy     ...

  6. Linux centosVMware su命令、sudo命令、限制root远程登录

    一.su命令 Linux系统中有些事情只有root用户才能做,普通用户不能做,这时候就需要临时切换到root身份了. [root@davery ~]# whoamiroot [root@davery ...

  7. Linux学习之RPM包管理-rpm命令管理(十六)

    Linux学习之RPM包管理-rpm命令管理 目录 简介 RPM包依赖性 包全名与包名 rpm软件包安装 rpm软件包卸载 升级降级rpm软件包 rpm软件包的查询 rpm软件包校验 简介 RPM是R ...

  8. linux系统(centos)下su和sudo命令的区别

    linux系统(centos)下su和sudo命令的区别 区别 我们在日常使用过程中,这2个命令很多时候能达到相同的效果,对细节区别十分模糊,这里进行简单的解释和区分.希望大家能够正确使用这2个命令, ...

  9. Linux学习之十四、管线命令

    Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php

  10. Linux学习之路-Linux-at及cron命令【7】---20171215

    Linux学习之路-Linux-at及cron命令[7]---20171215 DannyExia000人评论986人阅读2017-12-24 17:28:03   ntpdate 命令 [root@ ...

随机推荐

  1. linux系统mysql主主复制(双主复制)

    一.简介 在上一篇的主从复制中:http://www.cnblogs.com/lay2017/p/9043985.html 我们了解到,mysql通过master写日志,slave读取并执行日志内容从 ...

  2. HDU 2167 Pebbles 状态压缩dp

    Pebbles Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  3. C++中细节知识点

    C++中常识小知识: 1.在C++的类中成员变量与成员函数默认为私有的,结构体中的成员变量与成员函数默认为公有的. 2.C++中this关键字是指针,指向当前对象. 3.在C++中一般类的成员变量与成 ...

  4. 拖动条SeekBar

    1TextView tv=(TextView)findViewById(R.id.TV); 2 tv.setMovementMethod(ScrollingMovementMethod.getInst ...

  5. easyui numberbox输入框 编辑不可编辑的切换

    背景:申请单里需要选费用类型,费用类型有的有子明细项,有个合计项    当有子明细项的时候,合计项的值是通过弹出的子明细项价格的总和(设置为可编辑没问题,因为点击出来弹框,编辑不了)    没有子明细 ...

  6. RoadFlow工作流与JUI(DWZ)前端框架的集成

    此文只说明RoadFlow前端与JUI的集成,关于程序和接口请参照WebForm或MVC文档. 修改JUI配置文件dwz.frag.xml,此文件一般位于JUI根目录下. 2.修改文件js/dwz.n ...

  7. VC6.0创建DLL动态链接库四大要素

    原文:http://blog.csdn.net/wanghaihao_1/article/details/51098451 要成功地编辑,编译和链接一个动态链接库,应该包括以下要素:建立工程文件,使用 ...

  8. Sqlite 数据库分页查询(ListView分页显示数据)

    下面介绍一下我的这个demo. 流程简述: 我在raw文件夹下面放了名称为city的数据库,里面包含全国2330个城市,以及所属省,拼音简写等信息. 首先 在进入MainActivity的时候,创建数 ...

  9. JavaScript中的原型和原型链

    1.原型是什么?原型链是什么? 原型是一个prototype对象,用于表示类型之间的关系: 原型链指的是在JavaScript中对象之间的继承是通过prototype对象指向父类对象,直到指向Obje ...

  10. c++ inline 的位置不当导致的 无法解析的外部符号

    这几天编写代码碰到 无法解析的外部符号 visual studio. 在类中 inline 修饰符应该放在类函数定义的时候而不是声明的地方 即 // test.h 头文件 class A { publ ...