博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
命令:sudo
阅读量:6608 次
发布时间:2019-06-24

本文共 2952 字,大约阅读时间需要 9 分钟。

sudo:

su:switch user,切换用户;
登录式切换:
su - USERNAME
su -l USERNAME
非登录式切换:
su USERNAME
非交互式切换:
su - USERNAME -c "SHELL_COMMAND"
su操作有缺陷:
如果使用root用户登录,切换至其他任何用户,均无需用户密码认证;
如果使用非root用户登录,企图切换至root用户,需要root用户的密码进行认证;

sudo命令:sudo, sudoedit — execute a command as another user        以另一个用户的身份执行被授权指定的命令;大多数情况下,此处的另一个用户身份指的是root用户;    授权机制;        授权时,参考其配置文件以完成最终授权,配置文件的路径:            /etc/sudoers        对于此配置文件/etc/sudoers,共分为两类内容:            1.别名的定义(aliases):用于定义基本变量;   //所有别名定义的名称全部字母必须是大写            2.用户规格(user specification):也可以称为"授权项",包括哪些用户可以从哪些主机以哪些用户身份执行哪些操作的具体内容;在其中可以调用之前定义过的别名(变量);        配置文件的格式:            每行只能有一个授权项;其格式为:                who  where=(whom) what            //注意:通过编辑/etc/sudoers文件完成授权,而且所有通过此文件授权的操作都必须以sudo命令来启用执行;为了能够及时发现编辑的配置文件中是否存在语法错误,通常会使用visudo命令来编辑此配置文件;                visudo:visudo — edit the sudoers file            who:此次使用sudo授权的目标用户;                username:单个用户账户的名称;                #uid:单个用户账户的UID;                %groupname:授权的目标是组,即指定组名所代表的组内所有用户账户;                %#gid:授权的目标是组,即指定gid所代表的组内所有用户账户;                User_Alias:事先定义过的用户账户的别名;            where:定义被授权访问的客户端主机;                ipaddress/hostname:单个主机;如果指定主机名,则必须能够被当前主机正确解析;                Network Address:网络地址;                    ipaddress/netmask                    ipaddress/prefix                Host_Alias:事先定义过的主机的别名;                ALL:内建的特定别名,表示所有主机;            whom:授权用户后续命令的执行者的真实身份,通常是root用户;                username:单个用户账户的名称;                #uid:单个用户账户的UID;                Runas_Alias:事先定义过的命令执行者用户账户的别名;                ALL:内建的特定别名,表示所有用户账户;            what:此次被授权能够以whom身份执行的命令;                command:单个命令;建议使用命令的绝对路径;                directory:指的是指定目录下所有的命令;                sudoedit:特殊命令;用于授权其他用户可以执行sudo命令,并且可以编辑修改/etc/sudoers文件的内容;                Cmnd_Alias:事先定义过的命令的别名;                ALL:内建的特定别名,表示所有命令;基本的sudo授权示例:    zhangsan        ALL=(root)      /usr/sbin/useradd,/usr/sbin/usermod,/usr/sbin/userdel,/bin/passwd [a-zA-Z0-9]*,!/bin/passwd root          //禁止修改root密码的操作定义别名的方法:    Alias_Type ALIASNAME = item1, item2, ...        Alias_Type:            User_Alias;            Host_Alias;            Runas_Alias;            Cmnd_Alias;        ALIASNAME:别名的名称,必须全部使用大写字母;    示例:        User_Alias USERADMINS = tom, zhangsan, jerry, %lisi        Cmnd_Alias USERADMINCMNDS = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /bin/passwd [a-zA-Z0-9]*, !/bin/passwd root        USERADMINS  ALL=(root)  USERADMINCMNDS    常用的标签:        PASSWD:在执行被授权的特定命令之前,要求必须键入密码以事先身份验证;        NOPASSWD:在执行被授权的特定命令之前,无需键入密码进行身份验证;    示例:        User_Alias USERADMINS = tom, zhangsan, jerry, suse, %lisi        USERADMINS ALL=(root) NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/usermod, /usr/sbin/userdel, /bin/passwd [a-zA-Z0-9]*, !/bin/passwd root    注意:PASSWD、NOPASSWD等标签只能在授权项中使用,不能用于别名定义的语法;    ***慎重注意:在使用sudo授权passwd,su,sudo,sudoedit,visudo等具有特殊意义的命令时,务必要考虑全面(例如禁止修改root用户的密码等操作)。***

转载于:https://blog.51cto.com/chenliangdeeper/2119364

你可能感兴趣的文章
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
查看>>
iOS 多线程 之 GCD(大中枢派发)(一)
查看>>
mysql用户与权限管理笔记
查看>>
Myeclipse中打开接口实现类的快捷键
查看>>
<20190516> 一次比较糟糕的售后维修体验(某硕主板)
查看>>
iOS网络篇2-http协议通信规则
查看>>
删除sql dump中的AUTO_INCREMENT
查看>>
使用JdbcTemplate和JdbcDaoSupport
查看>>
C博客作业--指针
查看>>
版本12.2.0.1.0数据库,复制种子数据库快速创建租户数据库PDB
查看>>
吴忠军中华演出网
查看>>
Page翻页分页css代码,分页div+css代码
查看>>
编程之美 第1章 游戏之乐——游戏中碰到的题目(十一)
查看>>
mysql for Mac 下创建数据表中文显示为?的解决方法
查看>>
2016阿里巴巴73款开源产品全向图
查看>>
Glibc 和 uClibc
查看>>
VMware 虚拟机的虚拟磁盘编程知识点扫盲之二
查看>>
vs2012中自带IIS如何让其他电脑访问
查看>>
关于termux在手机上搭载Linux系统,python,ssh
查看>>
Redux:异步操作
查看>>