五陵年少金市东,银鞍白马渡春风。这篇文章主要讲述linux之sudo使用技巧汇总相关的知识,希望能为你提供帮助。
sudo和su之间的区别
- su用于用户之间的切换
- sudo用于普通用户可以使用root权限来执行命令
- sudo会读取和解析/etc/sudoers文件,查找调用的用户及权限
- 提示调用该命令用户的密码,如果有
NOPASSWD
标志则跳过密码验证. - sudo会创建一个子进程,调用setuid来切换到目标用户
- 最后会在子进程中执行给定的shell命令
USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDS
- USER/GROUP: 表示要被授权的用户或组,如果是组要以
%
开头 - HOST: 表示允许从哪些主机登录的用户运行sudo,
ALL
表示允许任何终端,机器访问. - (USER[:GROUP]): 表示使用 sudo 可切换的用户或者组,组可以不指定;ALL 表示可以切换到系统的所有用户.
- NOPASSWD:如果指定,则该用户或者组使用sudo时就不用输入密码
- COMMANDS:表示运行指定的命令,ALL表示允许指定任何命令
# 允许 sudo 组执行所有命令
%sudo ALL=(ALL:ALL) ALL# 允许用户执行所有命令,且无需输入密码
escape ALL =(ALL) NOPASSWD: ALL# 仅允许用户执行 echo, ls 命令
escape ALL =(ALL) NOPASSWD: /bin/echo /bin/ls# 运行本机的用户执行关机命令
escape localhost=/sbin/shutdown -h now# 允许 users 用户组中的用户像 root 用户一样使用 mount、unmount、chrom 命令
%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
以提升的权限执行命令
>
sudo cat /etc/passwd
以其他用户执行命令
>
sudo -u deploy whoami
deploy
内置命令行为
>
sudo history
[sudo] password for rumenz:
sudo: history: command not found
>
[rumenz@localhost]$ sudo bash
>
[root@localhost rumenz]# history
sudo执行多条命令
sudo -- bash -c \'pwd;
hostname;
whoami\'
- 双连字符 (–) 停止命令行切换
- bash 表示要用于执行命令的shell名称
- -c选项后面跟着要执行的命令
rumenz ALL=(ALL) NOPASSWD: /bin/echo /bin/ls
在 vim 里面使用 sudo 命令
:w !sudo tee %
- 冒号 (? 表明我们处于 Vim 的退出模式
- 感叹号 (!) 表明我们正在运行 shell 命令
- sudo 和 tee 都是 shell 命令
- 百分号 (%) 表明从当前行开始的所有行
>
ls -l /usr/bin/sudo
---s--x--x. 1 root root 143248 Jun 282018 /usr/bin/sudo
>
id
uid=1001(rumenz) gid=1001(rumenz) groups=1001(rumenz)
uid=0(root) gid=0(root) groups=0(root)
sudo -i
sudo !!
>
sudo !!
sudo !n
>
sudo !-2
【linux之sudo使用技巧汇总】原文链接:https://rumenz.com/rumenbiji/linux-sudo-skills.html
微信公众号:入门小站
推荐阅读
- Linux 网络常见问题排错经验总结
- shell脚本基本处理
- Kubernetes-subPath的使用
- 我所了解的Linux运维技术c
- 常用的文本文件编辑命令
- 使用Python开发鸿蒙设备程序(3-安防系统雏形)
- HGDB之数据编辑
- 网络基础静态路由默认路由和浮动路由原理和相关实验
- ShardingSphere技术专题带你一同认识一下ShardingJDBC是什么((高手勿入))