sudo命令用其他身份来执行命令,限制root远程登录详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MrDing991124/article/details/78417478

一,命令sudo

  1. 命令语法
    sudo(选项)(参数)

  2. 命令描述
    sudo命令用来以其他身份来执行命令,预设的身份为root。
    用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

  3. 命令选项
    -b:在后台执行指令;
    -H:将HOME环境变量设为新身份的HOME环境变量;
    -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;
    -l:列出目前用户可执行与无法执行的指令;
    -p:改变询问密码的提示符号;
    -s:执行指定的shell;
    -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
    -v:延长密码有效期限5分钟;

  4. 命令示例

配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。

设置sudo方法

  1. 在命令行输入 #visudo //visudo默认的是在vi里打开sudo配置文件。
  2. 进入配置文件大概在90列左右可以看到下面的命令(小技巧:在vi编辑器里使用 set nu //查看行数)
90 ## Allow root to run any commands anywhere   // 翻译: 允许root用户在任何地方运行所有的命令    
91 root    ALL=(ALL)       ALL     
92 user1   ALL=(ALL)       /usr/bin/ls, /usr/bin/mv, /usr/bin/cat   //自己编写的    

命令说明:

  1. 92列自己编写的,这条命令的作用是:让user用户拥有sudo特权。

  2. 命令从左到右,第一段user1为一个用户,指定让哪个用户有sudo特权;

  3. 第二段ALL=(ALL)比较难理解,左边的ALL指的是所有的主机,右边的ALL指的是获取哪个用户的身份,

  4. 第二段几乎都不用配置;

  5. 第三段设定可以使用sudo的命令有哪些,这里我选择的是ls,mv,cat命令,注意这里编辑的时候要写绝对路径。也可以写ALL表示可以使用全部命令。也可以在第三段的最前面加上 #NOPASSWD: ,这样在使用sudo的时候就不用输入密码了。

  6. 编辑完成之后,#wq保存退出。

  7. 当你在visudo中编辑错误的时候wq后会提醒你例如:

visudo: >>>/etc/sudoers: syntax error 在行 92 附近 <<

此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。

上面步骤正常的情况下,切换到user1的用户下,使用sudo命令# sudo /usr/bin/ls /root
此条命令的意思是 在user1的用户下用sudo权限ls查看/root目录,当然可以使用cat,mv命令。

二,限制root远程登录

注: 该方法只适用于通过ssh远程登录Linux的时候。

限制root远程登录的方法

/etc/ssh/sshd_config为sshd服务的配置文件,默认允许root账户通过ssh远程登录Linux。要想不允许root用户远程登录到Linux,具体方法为: 修改配置文件vi /etc/ssh/sshd_config,在文件中查找#PermitRootLogin yes并修改为PermitRootLogin no,即不允许root远程登录。保存配置文件后,需要重启sshd服务。

#systemctl restart sshd.service  //重启sshd服务。

实战

禁止root用户远程登录,只允许普通用户登录。普通用户如果想要得到root用户的权限,如下详解

  • 思路: 在普通用户下,想要得到root用户的权限,使用su命令时,没有root的密码是切换不到root用户下的。这时候可以把su放到sudo命令列表里,之后在普通用户下使用命令 #sudo su -root 就能得到root用户的权限了。

实现步骤:

  • 在root用户下 ,编辑visudo为用户添加Alias
     16 ## User Aliases     
     17 ## These aren't often necessary, as you can use regular groups    
     18 ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname    
     19 ## rather than USERALIAS    
     20 # User_Alias ADMINS = jsmith, mikem    
     21 User_Alias AMINGS=user1  //手动添加的。为用户添加Alias    
  • 设定规则
     90 ## Allow root to run any commands anywhere  
     91 root    ALL=(ALL)       ALL    
     92 user1   ALL=(ALL)       /usr/bin/ls, /usr/bin/mv, /usr/bin/cat          
     93 AMINGS  ALL=(ALL)       NOPASSWD: /usr/bin/su  //NOPASSWD代表执行/usr/bin/su的时候不需要输入密码。 
  • 保存退出

  • 切换到user1用户下,用sudo登录到root用户下

[root@localhost ~]# su - user1   
上一次登录:三 111 17:03:48 CST 2017pts/0 上    
[user1@localhost ~]$ sudo su - root   
上一次登录:三 111 18:26:00 CST 2017pts/0 上   
[root@localhost ~]# whoami   //查看当前用户
root   
展开阅读全文

没有更多推荐了,返回首页