• <acronym id='xv1so'><em id='xv1so'></em><td id='xv1so'><div id='xv1so'></div></td></acronym><address id='xv1so'><big id='xv1so'><big id='xv1so'></big><legend id='xv1so'></legend></big></address>

      <code id='xv1so'><strong id='xv1so'></strong></code>

      1. <tr id='xv1so'><strong id='xv1so'></strong><small id='xv1so'></small><button id='xv1so'></button><li id='xv1so'><noscript id='xv1so'><big id='xv1so'></big><dt id='xv1so'></dt></noscript></li></tr><ol id='xv1so'><table id='xv1so'><blockquote id='xv1so'><tbody id='xv1so'></tbody></blockquote></table></ol><u id='xv1so'></u><kbd id='xv1so'><kbd id='xv1so'></kbd></kbd>
      2. <i id='xv1so'></i>

        <fieldset id='xv1so'></fieldset>
        <span id='xv1so'></span>

          <ins id='xv1so'></ins>
          <dl id='xv1so'></dl>

            <i id='xv1so'><div id='xv1so'><ins id='xv1so'></ins></div></i>

          1. Linux进程的几个用户ID转换方法

            • 时间:
            • 浏览:7
            • 来源:124软件资讯网

              Linux为每个历程设置了3个ID:现实用户id  ,有用和用户id和生存的设置id

              关于这3个id ,需要注重以下几个方面:

              1.只有root才气改变历程的现实用户id  。例如 ,用户从终端login法式上岸 ,此时login法式的3个id都是root  。然后准确输入用户名密码之后  ,login法式于是setuid到注册的id 。于是3个id都被改成了注册的用户id 。然后exec shell法式  。非root用户注册进入shell之后 ,他的现实用户id是绝对不会被更改的  。除非logout之后  ,重新注册shell  。一些su改变用户的操作现实上都是改变shell历程的有用用户id  ,并不是shell历程的现实用户id  。

              2.exec法式时 ,可执行文件有一个设置id位 ,该位的设置与否与历程的有用用户id和生存的设置id有很大关系  。可以用ll下令检察 ,若是有s标志的话说明设置了  ,否则没有  。首先没有设置的情形  ,3个id均不会改变和挪用者的历程的id一样  。现在是设置了的情形  ,现实用户id仍然不会改变 ,有用用户id则设置为可执行文件的属主用户  ,生存的设置id设置成有用用户id一样  。这样的法式有许多  ,好比passwd  ,su等  。例如 ,passwd法式  ,一个通俗用户foo通过shell执行passwd  ,首先shell历程fork发生一个子历程  ,然后子历程exec passwd法式  。由于passwd设置了设置id位 ,而且passwd是属于root用户 。于是子历程设置有用用户id位为root  ,生存的设置用户id也设置成了root  。passwd执行完毕时  ,再改变有用用户id和生存的设置用户id为以前的现实用户id的值  。

              3.生存的设置-用户- ID 是由exec从有用用户I D复制的 。在exec按文件用户I D设置了有用用户I D后 ,即举行这种复制  ,并将此副本生存起来