sudo命令的应用的详解指南

接触Linux的朋友应该都接触sudo这个命令,特别是刚一接触ubuntu朋友,只要进入系统执行特殊的命令都需要在命令前加+sudo命令才能执行命令,sudo到到底是个什么神器呢?sudo是个统管一切的命令。它的字面意思是代表“超级用户才能做!”(super user do!) 也可以使用 su - "switch user",但是使用su方式容易将系统用户密码泄露,导致系统不安全,由于root用户权限过大,在实际生产过程中很少使用root用户直接登录系统,而是使用普通用户登录系统;但是如果普通用户要对系统进行日常维护操作时需要su到root用户,为了提高安全性,可以使用sudo授权某一用户在某一主机以某一用户身份运行某些命令;从而减少root用户密码知晓人,提高系统安全性。

sudo的优势:
   ①授权指定用户在指定的主机上运行指定的管理命令;
   ②sudo审计安全性:将一些管理命令授权给某些普通用户使用,并且还能限定其仅能够在某些主机上执行此类的命令,操作过程还会被记录与日志中,以便于日后审计;

③"检票系统":时效性认证,用户第一次执行sudo命令时会要求输入密码来验证用户身份,成功后用户会获得一个有固定存活时长的"令牌"(令牌默认存活时长为5分钟)

sudo常用参数:

##参数
    -V 显示版本编号
    -h 会显示版本编号及指令的使用方式说明
    -l 会显示出自己(执行sudo的使用者)的权限
    -v 因为sudo在第一次执行时或是在N分钟内没有执行(N预设为五)会问密码,这个参数是重新做一次确认,如果超过N
    分钟,也会问密码
    -k 将会强迫使用者在下一次执行sudo时问密码(不论有没有超过N分钟)
    -b 将要执行的指令放在后台后台执行

使用sudo的过程:

sudo的授权文件:/etc/sudoers,只有管理员能够编辑
  1、实现sudo授权的方法
①使用vim打开编辑:
       可以实现文本着色,但是不能检测语法错误,不建议使用
②visudo:专用的sudoers文本编辑工具
       配置完成后能够检测提示语法错误,建议使用此编辑工具进行/etc/sudoers进行编辑
       帮助文档:man visudo;man visudoers

③定义sudo授权,/etc/sudoers
      语法: who which_host=(whom) command
      谁能以谁的身份,在那些主机上执行那些命令

sudo配置文件别名应用:

别名:Alias(都以大写字母定义)
Host_Alias:定义主机别名,使用,分隔
User_Alias:定义用户别名,可以是用户名,也可以是组名(%组名)
Cmnd_Alias:定义命令别名,可以定义不能执行的命令,使用!/usr/bin/passwd root
Runas_Alias:定义以那些用户执行
NOPASSWD:定义用户执行命令时可以不输入密码
PASSWD:定义用户执行命令时需要输入密码

sudo案例应用:

  1. 授权samlee用户拥有添加用户权限、修改密码权限,但不能修改root密码(防止用户修改root密码):
[[email protected] ~]# visudo 
samlee  ALL=(root)      /usr/sbin/useradd, /usr/bin/passwd, ! /usr/bin/passwd root

使用samlee登录测试:

[[email protected] ~]$ sudo useradd samleetest    #创建用户没有问题
[sudo] password for samlee: 
[[email protected] ~]$ sudo passwd root           #无法修改root密码
Sorry, user samlee is not allowed to execute ‘/usr/bin/passwd root‘ as root on rsyncmaster.samlee.com.
[[email protected] ~]$ tail /etc/passwd | grep samleetest    #查看添加的用户
samleetest:x:503:503::/home/samleetest:/bin/bash

2.sudo别名定义及别名调用

[[email protected] ~]# visudo 
User_Alias USERADMIN = samlee,%admin
Host_Alias HOST = 172.16.0.0/16,127.0.0.1
Runas_Alias ADMIN = root
Cmnd_Alias COMMAND = /sbin/ifconfig,/bin/ping
USERADMIN       HOST=(ADMIN)    COMMAND

测试;samlee用户登录测试指定的相关命令:

#建立测试用户及测试组
[[email protected] ~]# groupadd admin
[[email protected] ~]# useradd -g admin admin
[[email protected] ~]# passwd admin
#使用samlee用户测试:
[[email protected] ~]$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D3:E4:53  
          inet addr:172.16.100.7  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fed3:e453/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:61839 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60930 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6300546 (6.0 MiB)  TX bytes:11935948 (11.3 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)
#使用admin组用户测试:
[[email protected] ~]$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D3:E4:53  
          inet addr:172.16.100.7  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fed3:e453/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:62130 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61216 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6324018 (6.0 MiB)  TX bytes:11965210 (11.4 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)
时间: 2024-09-30 10:21:36

sudo命令的应用的详解指南的相关文章

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file 输入文件名,缺省为标准输入. of=file 输出文件名,缺省为标准输出. ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节). obs=b

Linux tar 命令参数及用法详解--Linux打包备份命令

linux tar命令参数及用法详解--linux打包备份命令 tar命令 tar - tar 档案文件管理程序的 GNU 版本.下面将逐个介绍其含义tar [-cxtzjvfpPN] 文件与目录 ....常用参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩.-z :是否同时具有 gzip 的属性?亦即是否需

设计模式 - 命令模式(command pattern) 详解

命令模式(command pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy 命令模式: 将请求封装成对象, 以便使用不同的请求\队列\日志来参数化其他对象. 命令模式也支持可撤销操作. 命令模式: 调用者(Invoker); 命令(Command): 可执行方法(execute), 具体命令(Concrete Command); 接受者(Receiver): 调用命令(Set Command); 具体方法: 1. 具体对象. /** *

linux cp命令参数及用法详解---linux 复制文件命令cp

linux cp命令参数及用法详解---linux 复制文件命令cp [[email protected]Linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[[email protected]linux ~]# cp [options] source1 source2 source3 -. directory参数:-a :相当于 -pdr 的意思:-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身:-

转:Linux中find命令-path -prune用法详解

在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能. 假如在当前目录下查找文件,且当前目录下有很多文件及目录(多层目录),包括dir0.dir1和dir2 ...等目录及dir00.dir01...dir10.dir11...等子目录. 1. 在当前目录下查找所有txt后缀文件 find ./ -name *.txt 2.在当前目录下的dir0目录及子目录下查找txt

(转)linux traceroute命令参数及用法详解--linux跟踪路由命令

linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的.linux系统中,我们称之为traceroute,在MS

(转)Linux命令之Ethtool用法详解

Linux命令之Ethtool用法详解 原文:http://www.linuxidc.com/Linux/2012-01/52669.htm Linux/Unix命令之Ethtool描述:Ethtool是用于查询及设置网卡参数的命令.概要:ethtool ethX      //查询ethX网口基本设置ethtool –h        //显示ethtool的命令帮助(help)ethtool –i ethX    //查询ethX网口的相关信息 ethtool –d ethX    //查询

Shell test命令(Shell [])详解,附带所有选项及说明

test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方面的检测. Shell test 命令的用法为: test expression 当 test 判断 expression 成立时,退出状态为 0,否则为非 0 值. test 命令也可以简写为[],它的用法为: [ expression ] 注意[]和expression之间的空格,这两个空格是必

高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)

第一章:HAproxy简介及安装配置 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 目录 HAproxy简介 为什么要使用HAproxy haproxy 性能特点 负载均衡器的性能评估因素 安装HAproxy haproxy案例4:实现web负载 由于字体过多分开写的,全系列文章链接 第一章:HAproxy简介及安装配置 http://zhang789.blog.51cto.com/11045979/1