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. asp get与post获取的区别

    1.HTTP请求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP请求中, ...

  2. Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

    环境 Android Studio 3.0 升级&导入项目 错误 Error:java.util.concurrent.ExecutionException: com.android.tool ...

  3. Java测试工具使用(1)--Junit

    在进行测试之前需要导入junit的两个包,分别是 junit:4.12;hamcrest-core:1.1 1.基本测试标签 @Test.@Before.@After 2.组测试 有时候多个测试文件, ...

  4. PAT 1044. Shopping in Mars

    #include <cstdio> #include <cstdlib> #include <vector> #include <climits> #i ...

  5. puppeteer自动化测试

    1.基础知识 puppeteer.launch() 创建浏览器实例 puppeteer.newPage() 创建一个新页面 puppeteer.goto() 进入指定网站 page.screensho ...

  6. 如何解决git fatal: refusing to merge unrelated histories

    我在Github新建一个仓库,写了License,然后把本地一个写了很久仓库上传. 先pull,因为两个仓库不同,发现refusing to merge unrelated histories,无法p ...

  7. 提高 GitHub 网页访问速度 以及 Git Clone 速度 的小技巧

    参考: http://www.cnblogs.com/mico-liu/p/9303817.html https://blog.csdn.net/qq756684177/article/details ...

  8. 【转】C# GDAL 配置

    共生成9个dll,如下图: 1.在程序中添加*_csharp.dll四个文件的引用: 2.将剩余的五个文件复制到程序的Debug文件夹中:(如果不复制这五个文件就会出现类似“OSGeo.GDAL.Gd ...

  9. 获取当前时间CTime

    std::string getcurtime(){ USES_CONVERSION; CTime z_CurTime; CString z_TimeStr; z_CurTime = CTime::Ge ...

  10. mysql安装错误之->ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    有时候,当我们使用“mysql”.“mysqladmin”.“mysqldump”等命令管理数据库时,服务器抛出类似如下错误: 一.错误现场还原:下面我们通过三种方式来连接,然后观察提示的错误信息: ...