一开始系统默认仅有root可以执行sudo,下面先以root身份来执行,等讲到visudo时,再以一般使用者来讨论其他sudo的用法。
/usr/bin/sh---->/usr/bin/bash(普通用户) /bin/sh->/bin/bash(root用户)
# bash——启动一个子shell
# bash sh01.sh ——运行shell脚本,在子shell中运行
# bash -c string——string中是指令,以分号隔开,开启一个子shell执行完指令回到父shell。
# bash -c string sh01.sh args...——二三两条的结合!!
ps:我们无法使用su - sshd去切换系统账号(因为系统账号的shell是/sbin/nologin),这个时候sudo的作用就体现了,立刻以sshd的权限在/tmp底下建立档案。
pps:sh -c 或者bash -c可以一次性执行多个指令。
缺陷: sudo 预设仅有 root 能使用啊!为什么呢?因为 sudo 的执行是这样的流程:
1. 当用户执行 sudo 时,系统于 /etc/sudoers 档案中搜寻该使用者是否有执行 sudo 的权限;
2. 若使用者具有可执行 sudo 的权限后,便让使用者『输入用户自己的密码』来确认;
3. 若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);
4. 若欲切换的身份与执行者身份相同,那也不需要输入密码。
由于能否使用与 /etc/sudoers 有关, 所以我们当然要去编辑 sudoers 档案啦!不过,因为该档案的内容是有一定的规范的,因此直接使用 vi 去编辑是不好的。 此时,我们得要透过 visudo命令 去修改这个档案喔!
除了 root 之外的其他账号,若想要使用 sudo 执行属于 root的权限指令,则 root 需要先使用 visudo 去修改 /etc/sudoers ,让该账号能够使用全部或部分的 root指令功能。为什么要使用 visudo 呢?这是因为 /etc/sudoers 是有设定语法的,如果设定错误那会造成无法使用 sudo 指令的不良后果。因此才会使用 visudo 去修改, 并在结束离开修改画面时,系统会去检验/etc/sudoers 的语法就是了。