zoukankan      html  css  js  c++  java
  • su和sudo敕令的区别与利用才具

      来源:网海拾




    一. 利用 su 敕令权且切换用户身份

    1、su 的合用前提和威力

    su敕令就是切换用户的工具,若何认识呢?譬喻我们以平居用户beinan登录的,但要添加用户义务,实行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有。料理办法无法有两个,一是插手beinan用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有需要插手beinan用户,可以用su来切换到root下截止添加用户的义务,等义务完成后再插手root。我们可以看到当然经过su 切换是一种对比好的办法;

    经过su可以在用户之间切换,若是超等权限用户root向平居或假造用户切换不需求密码,什么是权利?这就是!而平居用户切换到此外任何用户都需求密码验证;

    2、su 的用法:

    su [OPTION选项参数] [用户]

    -, -l, --login 登录并窜改到所切换的用户状况;

    -c, --commmand=COMMAND 实行一个敕令,然猬缩猬缩出所切换到的用户状况;

    至于更属意的,请参看man su ;

    3、su 的规范:

    su 在不加任何参数,默以为切换到root用户,但没有转到root用户家目次下,也就是说这时当然是切换为root用户了,但并没有窜改root登录状况;用户默许的登录状况,可以在/etc/passwd 中查获得,包孕家目次,SHELL定义等;

    [beinan@localhost ~]  $ suPassword:[root@localhost beinan]# pwd/home/beinan

    su 加参数 - ,表示默许切换到root用户,并且窜改到root用户的状况;

    [beinan@localhost ~]  $ pwd/home/beinan[beinan@localhost ~]  $ su -Password:[root@localhost ~]# pwd/root

    su 参数 - 用户名

    [beinan@localhost ~]  $ su - root 注:这个和su - 是一样的下场;

    Password:

    [root@localhost ~]# pwd

    /root

    [beinan@localhost ~]  $ su - linuxsir 注:这是切换到 linuxsir用户

    Password: 注:在这里输入密码;

    [linuxsir@localhost ~]  $ pwd 注:查察用户此后所处的职位中央;

    /home/linuxsir

    [linuxsir@localhost ~]  $ id 注:查察用户的UID和GID信息,重若是看能否切换过去了;

    uid=505(linuxsir) gid=502(linuxsir) groups=0(root),500(beinan),502(linuxsir)

    [linuxsir@localhost ~]  $

    [beinan@localhost ~]  $ su - -c ls 注:这是su的参数组合,表示切换到root用户,并且窜改到root状况,然后列出root家目次的文件,然猬缩猬缩出root用户;

    Password: 注:在这里输入root的密码;

    anaconda-ks.cfg Desktop install.log install.log.syslog testgroup testgroupbeinan testgrouproot

    [beinan@localhost ~]  $ pwd 注:查察此后用户所处的职位中央;

    /home/beinan

    [beinan@localhost ~]  $ id 注:查察此后用户信息;

    uid=500(beinan) gid=500(beinan) groups=500(beinan)

    4、su的优错偏差池;

    su 着实实在为打点带来苟且,经过切换到root下,能完成所有体系打点工具,只需把root的密码交给任何一个平居用户,他都能切换到root来完成所有的体系打点义务;但经过su切换到root后,也有不安浑因素;譬喻体系有10个用户,并且都介入打点。若是这10个用户都触及到超等权限的运用,做为打点员若是想让此外用户经过su来切换到超等权限的root,必需把root权限密码都通知这10个用户;若是这10个用户都有root权限,经过root权限可以做任何事,这在必定程度上就对体系的宁静形成了威协;想想Windows吧,几乎就是恶梦;“没有不宁静的体系,只要不宁静的人”,我们绝对不克不及担保这 10个用户都能按正常操纵流程来打点体系,此中任何一人对体系操纵的重大失误,都可以或许招致体系崩溃或数据丧失;所以su 工具在多人介入的体系打点中,并不是最好的选择,su只合用于一两个人介入打点的体系,毕竟su并不克不及让平居用户受限的利用;超等用户root密码应该驾驭在少数用户手中,这绝对是真理!所以集权而治的存在仍是有必定事理的;

    二. sudo 受权容许利用的su,也是受限定的su

    1. sudo 的合用前提

    因为su 对切换到超等权限用户root后,权限的无穷制性,所以su并不克不及禁受多个打点员所打点的体系。若是用su 来切换到超等用户来打点体系,也不克不及大白哪些义务是由哪个打点员截止的操纵。特别是搪塞供职器的打点有多人介入打点时,最好是针对每个打点员的技术特长和打点范畴,并且有针对性的下放给权限,并且约定其利用哪些工具来完成与其相干的义务,这时我们就有需要用到 sudo。

    经过sudo,我们能把某些超等权限有针对性的下放,并且不需求平居用户晓得root密码,所以sudo 相搪塞权限无穷定性的su来说,仍是对比宁静的,所以sudo 也能被称为受限定的su ;此外sudo 是需求受权容许的,所以也被称为受权容许的su;

    sudo 实行敕令的流程是此后用户切换到root(或此外指定切换到的用户),然后以root(或此外指定的切换到的用户)身份实行敕令,实行完成后,直接退回到此后用户;而这些的前提是要经过sudo的设置文件/etc/sudoers来截止受权;

    2、从编写 sudo 设置文件/etc/sudoers开端

    sudo的设置文件是/etc/sudoers ,我们可以用他的公用编辑工具visodu ,此工具的所长是在添加礼貌不太正确时,保存插手时会提醒给我们错误信息;设置好后,可以用切换到您受权的用户下,经过sudo -l 来查察哪些敕令是可以实行或按捺的;

    /etc/sudoers 文件中每行算一个礼貌,前面带有#号可以看成是说明的内容,并不实行;若是礼貌很长,一行列不下时,可以用号来续行,这样看来一个礼貌也可以拥有多个行;

    /etc/sudoers 的礼貌可分为两类;一类是别名定义,另一类是受权礼貌;别名定义并不是必需的,但受权礼貌是必需的;

    3、/etc/sudoers 设置文件中别名礼貌

    别名礼貌定义格式如下:

    Alias_Type NAME = item1, item2, ...


    Alias_Type NAME = item1, item2, item3 : NAME = item4, item5

    别名规范(Alias_Type):别名规范包孕如下四种

    Host_Alias 定义主机别名;

    User_Alias 用户别名,别名成员可所以用户,用户组(前面要加%号)

    Runas_Alias 用来定义runas别名,这个体名指定的是“目标用户”,即sudo 允许切换至的用户;

    Cmnd_Alias 定义敕令别名;

    NAME 就是别名了,NMAE的命名是包括大写字母、下划线以及数字,但必需以一个大写字母开头,譬喻SYNADM、SYN_ADM或SYNAD0是合理的,sYNAMDA或1SYNAD是分譬喻理的;

    item 按中文翻译是项目,在这里我们可以译成成员,若是一个体名下有多个成员,成员与成员之间,经过半角,号分隔;成员在必需是有用并幻想存在的。什么是有用的呢?譬喻主机名,可以经过w查察用户的主机名(或ip地点),若是您只是本地机操纵,只经过hostname 敕令就能查察;用户名当然是在体系中存在的,在/etc/paswd中必需存在;搪塞定义敕令别名,成员也必需在体系中幻想存在的文件名(需求绝对途径);

    item成员受别名规范 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias 制约,定义什么规范的别名,就要有什么规范的成员相配。我们用Host_Alias定义主机别名时,成员必需是与主机相干相联系关系,譬喻是主机名(包孕长途登录的主机名)、ip地点(单个或整段)、掩码等;当用户登录时,可以经过w敕令来查察登录用户主机信息;用User_Alias和 Runas_Alias定义时,必需求用体系用户做为成员;用Cmnd_Alias 定义实行敕令的别名时,必需是体系存在的文件,文件名可以用通配符表示,设置Cmnd_Alias时敕令需求绝对途径;此中 Runas_Alias 和User_Alias 有点类似,但与User_Alias 绝对不是一致个观点,Runas_Alias 定义的是某个体系用户可以sudo 切换身份到Runas_Alias 下的成员;我们在受权礼貌中以实例截止说明注解;别名礼貌是每行算一个礼貌,若是一个体名礼貌一行容不下时,可以经过去续行;一致规范别名的定义,一次也可以定义几个体名,他们中心用:号分隔,

    Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24 注:定义主机别名HT01,经过=号列出成员

    Host_Alias HT02=st09,st10 注:主机别名HT02,有两个成员;

    Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24:HT02=st09,st10 注:下面的两条对主机的定义,可以经过一条来完成,别名之间用:号瓜分;

    注:我们经过Host_Alias 定义主机别名时,项目可所以主机名、可所以单个ip(整段ip地点也可以),也可所以收集掩码;若是是主机名,必需是多台机械的收集中,并且这些机械得能经过主机名相互通信会面才有用。那什么才算是经过主机名相互通信或会面呢?譬喻 ping 主机名,或经过长途会面主机名来会面。在我们局域网中,若是让计较机经过主机名会面通信,必需设置/etc/hosts, /etc/resolv.conf ,还要有DNS做分解,否则相互之间无法经过主机名会面;在设置主机别名时,若是项目是中某个项目是主机名的话,可以经过hostname 敕令来查察外地主机的主机名,经过w敕令查来看登录主机是来源,经过去历来确认此外客户机的主机名或ip地点;搪塞主机别名的定义,看上去有点复杂,实在是很复杂。

    若是您不了了了了Host_Alias 是若何回事,也可以不必设置主机别名,在定义受权礼貌时经过ALL来受室所有可以或许出现的主机情形。若是您把主机方面的知识弄的更了了了了,着实实在需求多多学习。

    User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun 注:定义用户别名,下有四个成员;要在体系中确真实存在的;

    User_Alias NETAD=beinan,bnnb 注:定义用户别名NETAD ,我想让这个体名下的用户来打点收集,所以取了NETAD的别名;

    User_Alias WEBMASTER=linuxsir 注:定义用户别名WEBMASTER,我想用这个体名下的用户来打点网站;

    User_Alias SYSAD=beinan,linuxsir,bnnnb,lanhaitun:NETAD=beinan,bnnb:WEBMASTER=linuxsir 注:下面三行的别名定义,可以经过这一行来完成,请看前面的说明,是不是符合?

    Cmnd_Alias USERMAG=/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod

    详尽:敕令别名下的成员必需是文件或目次的绝对途径;

    Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/partedCmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/networkCmnd_Alias KILL = /usr/bin/killCmnd_Alias PWMAG = /usr/sbin/reboot,/usr/sbin/haltCmnd_Alias SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, /usr/local/bin/tcsh, /usr/bin/rsh, /usr/local/bin/zsh

    注:这行定义敕令别名有点长,可以经过 号断行;

    Cmnd_Alias SU = /usr/bin/su,/bin,/sbin,/usr/sbin,/usr/bin

    在下面的例子中,有KILL和PWMAG的敕令别名定义,我们可以兼并为一行来写,也就是等价行;

    Cmnd_Alias KILL = /usr/bin/kill:PWMAG = /usr/sbin/reboot,/usr/sbin/halt 注:这一行就代表了KILL和PWMAG敕令别名,把KILL和PWMAG的别名定义兼并在一行写也是可以的;

    Runas_Alias OP = root, operator

    Runas_Alias DBADM=mysql:OP = root, operator 注:这行是下面两行的等价行;至于若何认识Runas_Alias ,我们必需得经过受权礼貌的实例来认识;

    4、/etc/sudoers中的受权礼貌

    受权礼貌是分拨权限的实行礼貌,我们前面所讲到的定义别名重若是为了更苟且的受权援用别名;若是体系中只要几个用户,实在下放权限对比无穷的话,可以不必定义别名,而是针对体系用户直接直接受权,所以在受权礼貌中别名并不是必需的;

    受权礼貌并不是无章可寻,我们只说基础根基一点的,对比复杂的写法,若是您想属意认识受权礼貌写法的,请参看man sudoers

    受权用户 主机=敕令步履

    这三个要素缺一不成,但在步履之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,若是不需求密码直接运转敕令的,应该加NOPASSWD:参数,但这些可以省略;举例说明;

    实例一:

    beinan ALL=/bin/chown,/bin/chmod

    若是我们在/etc/sudoers 中添加这一行,表示beinan 可以在任何可以或许出现的主机名的体系中,可以切换到root用户下实行 /bin/chown 和/bin/chmod 敕令,经过sudo -l 来查察beinan 在这台主机上允许和按捺运转的敕令;

    值得详尽的是,在这里省略了指定切换到哪个用户下实行/bin/shown 和/bin/chmod敕令;在省略的情形下默以为是切换到root用户下实行;同时也省略了是不是需求beinan用户输入验证密码,若是省略了,默以为是需求验证密码。

    为了更属意的说明这些,我们可以机关一个更复杂一点的公式;

    受权用户 主机=[(切换到哪些用户或用户组)] [能否需求密码验证] 敕令1,[(切换到哪些用户或用户组)] [能否需求密码验证] [敕令2],[(切换到哪些用户或用户组)] [能否需求密码验证] [敕令3]....

    注解:

    通常[ ]中的内容,是可以省略;敕令与敕令之间用,号分隔;经过本文的例子,可以对照着看哪些是省略了,哪些中央需求有空格;

    在[(切换到哪些用户或用户组)] ,若是省略,则默以为root用户;若是是ALL ,则代表能切换到所无效户;详尽要切换到的目标用户必需用()号括起来,譬喻(ALL)、(beinan)

    实例二:

    beinan ALL=(root) /bin/chown, /bin/chmod

    若是我们把第一个实例中的那行去失,换成这行;表示的是beinan 可以在任何可以或许出现的主机名的主机中,可以切换到root下实行 /bin/chown ,可以切换就职何用户招实行/bin/chmod 敕令,经过sudo -l 来查察beinan 在这台主机上允许和按捺运转的敕令;

    实例三:

    beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod

    若是换成这个例子呢?表示的是beinan 可以在任何可以或许出现的主机名的主机中,可以切换到root下实行 /bin/chown ,不需求输入beinan用户的密码;并且可以切换就职何用户下实行/bin/chmod 敕令,但实行chmod时需求beinan输入本人的密码;经过sudo -l 来查察beinan 在这台主机上允许和按捺运转的敕令;

    关于一个敕令步履是不是需求密码,我们可以发现在体系在默许的情形下是需求用户密码的,除非特加指出不需求用户需求输入本人密码,所以要在实行为作之前插手NOPASSWD: 参数;

    有可以或许有的弟兄对体系打点的敕令不太懂,不晓得其用法,这样就影响了他对 sudoers定义的认识,下面我们再举一个最复杂,最有说供职力的例子;

    实例四:

    譬喻我们想用beinan平居用户经过more /etc/shadow文件的内容时,可以或许会出现下面的情形;

    [beinan@localhost ~]  $ more /etc/shadow/etc/shadow: 权限不够

    这时我们可以用sudo more /etc/shadow 来读取文件的内容;就就需求在/etc/soduers中给beinan受权

    于是我们就可以先su 到root用户下经过visudo 来改/etc/sudoers ;(譬喻我们是以beinan用户登录体系的)

    [beinan@localhost ~]  $ su

    Password: 注:在这里输入root密码

    下面运转visodu;

    [root@localhost beinan]# visudo 注:运转visudo 来改 /etc/sudoers

    插手如下一行,插手保存;插手保存,在这里要会用vi,visudo也是用的vi编辑器;至于vi的用法不久不多说了;beinan ALL=/bin/more 表示beinan可以切换到root下实行more 来查察文件;

    退回到beinan用户下,用exit敕令;

    [root@localhost beinan]# exit

    exit

    [beinan@localhost ~]  $

    查察beinan的经过sudo能实行哪些敕令?

    [beinan@localhost ~]  $ sudo -l

    Password: 注:在这里输入beinan用户的密码

    User beinan may run the following commands on this host: 注:在这里了了的说明在本台主机上,beinan用户可以以root权限运转more ;在root权限下的more ,可以查察任何文本文件的内容的;

    (root) /bin/more

    最后,我们看看是不是beinan用户有才智看到/etc/shadow文件的内容;

    [beinan@localhost ~]  $ sudo more /etc/shadow

    beinan 不仅能看到 /etc/shadow文件的内容,还能看到只要root权限下才智看到的此外文件的内容,譬喻;

    [beinan@localhost ~]  $ sudo more /etc/gshadow

    搪塞beinan用户查察和读取所有体系文件中,我只想把/etc/shadow 的内容可以让他查察;可以插手下面的一行;

    beinan ALL=/bin/more /etc/shadow

    题外话:有的弟兄会说,我经过su 切换到root用户就能看到所有想看的内容了,哈哈,对啊。但我们现在不是在报告sudo的用法吗?若是主机上有多个用户并且不晓得root用户的密码,但又想查察某些他们看不到的文件,这时就需求打点员受权了;这就是sudo的所长;

    实例五:演习用户组在/etc/sudoers中写法;

    若是用户组呈现在/etc/sudoers 中,前面要加%号,譬喻�inan ,中心不克不及有空格;�inan ALL=/usr/sbin/*,/sbin/*

    若是我们在 /etc/sudoers 中加上如上一行,表示beinan用户组下的所有成员,在所有可以或许的出现的主机名下,都能切换到root用户下运转 /usr/sbin和/sbin目次下的所有敕令;

    实例六:演习作废某类步伐的实行:

    作废步伐某类步伐的实行,要在敕令步履前面加上!号; 在本例中也出现了通配符的*的用法;

    beinan ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk 注:把这行礼貌插手到/etc/sudoers中;但您得有beinan这个用户组,并且beinan也是这个组中的才行;

    本礼貌表示beinan用户在所有可以或许存在的主机名的主机上运转/usr/sbin和/sbin下所有的步伐,但fdisk 步伐除外;

    [beinan@localhost ~]  $ sudo -l

    Password: 注:在这里输入beinan用户的密码;

    User beinan may run the following commands on this host:(root) /usr/sbin/*(root) /sbin/*(root) !/sbin/fdisk[beinan@localhost ~]  $ sudo /sbin/fdisk -lSorry, user beinan is not allowed to execute '/sbin/fdisk -l' as root on localhost.

    注:不克不及切换到root用户下运转fdisk 步伐;

    实例七:别名的运用实际;

    倘使我们就一台主机localhost,能经过hostname 来查察,我们在这里就不定义主机别名了,用ALL来受室所有可以或许出现的主机名;并且有beinan、linuxsir、lanhaitun 用户;重若是经过小例子能更好认识;sudo当然复杂好用,但能把说的了了了了着实实在是件难事;最好的办法是多看例子和man soduers ;

    User_Alias SYSADER=beinan,linuxsir,�inan

    User_Alias DISKADER=lanhaitunRunas_Alias OP=rootCmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd rootCmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk 注:定义敕令别名DSKCMD,下有成员parted和fdisk ;SYSADER ALL= SYDCMD,DSKCMDDISKADER ALL=(OP) DSKCMD

    注解:

    第一行:定义用户别名SYSADER 下有成员 beinan、linuxsir和beinan用户组下的成员,用户组前面必需加%号;

    第二行:定义用户别名 DISKADER ,成员有lanhaitun

    第三行:定义Runas用户,也就是方针用户的别名为OP,下有成员root

    第四行:定义SYSCMD敕令别名,成员之间用,号分隔,最后的!/usr/bin/passwd root 表示不克不及经过passwd 来变动root密码;

    第五行:定义敕令别名DSKCMD,下有成员parted和fdisk ;

    第六行:表示受权SYSADER下的所有成员,在所有可以或许存在的主机名的主机下运转或按捺 SYDCMD和DSKCMD下定义的敕令。更为大白遥说,beinan、linuxsir和beinan用户组下的成员能以root身份运转 chown 、chmod 、adduser、passwd,但不克不及变动root的密码;也可以以root身份运转 parted和fdisk ,本条礼貌的等价礼貌是;

    beinan,linuxsir,�inan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk

    第七行:表示受权DISKADER 下的所有成员,能以OP的身份,来运转 DSKCMD ,不需求密码;更为大白的说 lanhaitun 能以root身份运转 parted和fdisk 敕令;其等价礼貌是:

    lanhaitun ALL=(root) /sbin/parted,/sbin/fdisk

    可以或许有的弟兄会说我想不输入用户的密码就能切换到root并运转SYDCMD和DSKCMD 下的敕令,那应该把把NOPASSWD:加在哪里为好?认识下面的例子吧,能了了了了的;

    SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: DSKCMD

    5、/etc/sudoers中此外的未尽事情;

    在受权礼貌中,另有 NOEXEC:和EXEC的用法,本人查man sudoers 认识;另有关于在礼貌中通配符的用法,也是需求认识的。这些内容不久不多说了,毕竟只是一个入门性的文档。soduers设置文件要多复杂就有多复杂,要多难就有多难,就看本人的使用了。

    6、sudo的用法;

    我们在前面讲的/etc/sudoers 的礼貌写法,终极的目标是让用户经过sudo读取设置文件中的礼貌来完成受室和受权,以便更调身份来截止敕令操纵,进而完成在其权限下不成完成的义务;

    我们只说最复杂的用法;更为属意的请参考man sudo

    sudo [参数选项] 敕令

    -l 列出用户在主机上可用的和被按捺的敕令;一样普通设置好/etc/sudoers后,要用这个敕令来查察和测试是不是设置正确的;

    -v 验证用户的时候戳;若是用户运转sudo 后,输入用户的密码后,在短时候内可以不必输出口令来直接截止sudo 操纵;用-v 可以跟踪最新的时候戳;

    -u 指定以以某个用户实行特定操纵;

    -k 删除时候戳,下一个sudo 敕令要求用求供应密码;

    举列:

    首先我们经过visudo 来改/etc/sudoers 文件,插手下面一行;

    beinan,linuxsir,�inan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk

    然后列出beinan用户在主机上经过sudo 可以切换用户所能用的敕令或被按捺用的敕令;

    [beinan@localhost ~]  $ sudo -l 注:列出用户在主机上能经过切换用户的可用的或被按捺的敕令;

    Password: 注:在这里输入您的用户密码;

    User beinan may run the following commands on this host:

    (root) /bin/chown 注:可以切换到root下用chown敕令;

    (root) /bin/chmod 注:可以切换到root下用chmod敕令;

    (root) /usr/sbin/adduser 注:可以切换到root下用adduser敕令;

    (root) /usr/bin/passwd [A-Za-z]* 注:可以切换到root下用 passwd 敕令;

    (root) !/usr/bin/passwd root 注:可以切换到root下,但不克不及实行passwd root 来变动root密码;

    (root) /sbin/parted 注:可以切换到 root下实行parted ;

    (root) /sbin/fdisk 注:可以切换到root下实行 fdisk ;

    经过下面的sudo -l 列出可用敕令后,我想经过chown 敕令来窜改/opt目次的属主为beinan ;

    [beinan@localhost ~]  $ ls -ld /opt 注:查察/opt的属主;

    drwxr-xr-x 26 root root 4096 10月 27 10:09 /opt 注:获得的答案是归属root用户和root用户组;

    [beinan@localhost ~]  $ sudo chown beinan:beinan /opt 注:经过chown 来窜改属主为beinan用户和beinan用户组;

    [beinan@localhost ~]  $ ls -ld /opt 注:查察/opt属主是不是曾经窜改了;

    drwxr-xr-x 26 beinan beinan 4096 10月 27 10:09 /opt

    我们经过下面的例子发现beinan用户能切换到root后实行窜改用户口令的passwd敕令;但下面的sudo -l 输入又明文写着不克不及变动root的口令;也就是说除了root的口令,beinan用户不克不及变动外,此外用户的口令都能变动。下面我们来测试;

    搪塞一个平居用户来说,除了变动本身的口令以外,他不克不及变动此外用户的口令。但若是换到root身份实行敕令,则可以变动此外用户的口令;

    譬喻在体系中有linuxsir这个用户, 我们想尝试变动这个用户的口令,

    [beinan@localhost ~]  $ passwd linuxsir 注:不经过sudo 直接运转passwd 来变动linuxsir用户的口令;

    passwd: Only root can specify a user name. 注:失败,提醒仅能经过 root来变动;

    [beinan@localhost ~]  $ sudo passwd linuxsir 注:我们经过/etc/sudoers 的定义,让beinan切换到root下实行 passwd 敕令来窜改linuxsir的口令;

    Changing password for user linuxsir.

    New UNIX password: 注:输入新口令;

    Retype new UNIX password: 注:再输入一次;

    passwd: all authentication tokens updated successfully. 注:窜改乐成。




    版权声明: 原创作品,允许转载,转载时请务必以超链接方式标明文章 原始情由 、作者信息和本声明。否则将究查司法责任。

  • 相关阅读:
    Java vs Python
    Compiled Language vs Scripting Language
    445. Add Two Numbers II
    213. House Robber II
    198. House Robber
    276. Paint Fence
    77. Combinations
    54. Spiral Matrix
    82. Remove Duplicates from Sorted List II
    80. Remove Duplicates from Sorted Array II
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976193.html
Copyright © 2011-2022 走看看