suid和sgid的使用

                                                              suid    sgid的应用

 

      我们先去建立几个用户和组,当然还要有一个共享目录,好了我们现在去搭建环境。

             要先创建组

       # groupadd  -g    1000  group1

          #groupadd   -g    1002  group2

             接着我们去创建用户

          # useradd  -g  group1   user1

          # useradd  -g  group1   user2

          # useradd  -g  group2   user3

          最后我们去创建一个目录

           # mkdir    /share(如果存在就不需要创建了)

           # chown    :group1    /share

           #chmod    g+w       /share

           #chmod    u+w       /share

好了,环境已经搭建好了,呵呵…….

 

 

                          

现在我们先来做一下suid吧!

     #cp   /etc/passwd     /share

     # cp  /root/anaconda-ks.cfg  /share

 我们此时以user1登陆去看一下

    # su  -  user1

    $ cd   /share

    $rm  passwd

    $ ls  -l

-rwS--r--   1       root     root   1921   Feb    6    02:23   passwd

 

 可以看到我们们有权限删除这个文件,那么我们一定要user1去删除他呢,我们怎么做呢,此时我们用到了suid

    #  chmod   u+s   /share/passwd

    好了此时我们以user1登陆

     $ cd   /share

     $ ls  -l

     $ vim   passwd

     我们可以打开这个文件且可以添加内容因为这是文件因此在系统中有一个umask

     $ umask

      0022

     $ vim  anaconda-ks.cfg

    此时我们是没有权限打开的,呵呵,不错吧!

     此时其他用户也可以打开passwd 但是都不能删除这个文件这就是umask所做的决定文件只有    可读可写  没有执行权因此显出了 S

         如果我们给目录这样做的,那么我们可以删这个文件

 

 

  

 怎么样还行吧,接着我们去做一下sgid

我们在用user1登陆去创建几个文件(以下九个文件都是在/share下创建的)

    $ touch   1  2  3

         我们在用user2登陆

            $touch     a  b   c

        我们在用user2登陆

           $touch    A  B  C

       现在用user1登陆,我们找到

           $cd  /share

           $rm  a  A

          

       这两个文件都被我们删除了这就有些乱了,谁都可以删文件了。

      我们应该怎么做呢,现在我们用一下gid

         #chmod  g+s    /share

         我们以user2登陆

           $ cd  /share

           $ rm  1

            文件1被删除了,对吧。

           $ rm   B

          我们没有能力删除文件B

 

          我们以user3登陆

             $ cd  /share

             $ rm  1  c

          我们没有能力删除文件1   c  ,是吧,此时大家应给清楚gid的作用了

                 user1 user2  在同一组

          属于同一个组的可以删除同组里的文件,而其他组的不可删除这些文件。

 

     有人觉得这样还不好我们还可以设置粘滞位,这样每个用户只能删除自己的文件,这里就不再详细介绍了。

你可能感兴趣的:(suid和sgid的使用)