zoukankan      html  css  js  c++  java
  • 5.linux帐号管理与权限设定

    /etc/passwd

    /etc/group

    /etc/shadow

    /etc/gshadow

    /etc/default/useradd

    /etc/login.defs

    /etc/kel/*

    /etc/pam.d/passwd         -----PAM密码管理机制所在的位置

    /etc/skel          ----home目录基准参考目录

    /etc/sudoers        ----该档案中记录着可以执行sudo命令的帐号

    1. 修改/etc/passwd中的帐号信息会导致文档属性无法显示拥有者的姓名,取而代之的是UID,因为系统无法在/etc/passwd找到对应用户的-

               b. 通过修改/etc/passwd第7栏的信息来改变默认home目录(usermod),对我个人很实用;或者通过修改地8栏给用户一个登录后的默认sheel

               c./sbin/nologin这个sheel可以让用户在不获得sheel环境,可以用来做为纯pop邮件帐号

        

            /etc/passwd文件解析[1-1][11-2][1-3]

            /etc/shadow 9个字段的含义 [1-4,5,6]

            找回丢失的密码 [1-7]

    4. 关于群组:有效群组,与初始群组,groups,newgrp

            /etc/group                ----[1-8]

        $ useradd -m  yxl         ----创建行用户yxl并自动长生主目录/home/yxl(普通用户)

        $ sudo passwd yxl truman      ----创建帐号密码

        $ sudo usermod -s /bin/bash yxl       ----修改yxl的登录sheel为/bin/bash(默认是/bin/sh)   

        $ sudo grep yxl /etc/passwd /etc/group /etc/shado

                        /etc/passwd:yxl:x:999:999::/home/yxl:/bin/bash

                        /etc/group:yxl:x:999:

                        /etc/shadow:yxl:$6$oVhKiz3G$AWIETaQnyPd4pKME/XYfOBWlHJSBDJLjFLCc.01Jd8zx4xreNnlYTkvK8

                        B.OJHx6QdItzTis1p/4LYhx7EhFx.:16023::::::

        $ sudo  usermod -G  anderson yxl       -----将yxl加到anderson组中

        $ sudo  usermod -G  sudo yxl              ----将yxl附加到sudo组中 

        $ groups                 ----查看当前用户支持的群组(第一个是有效群组)

        $ newgrp  adm        ----切换到adm这个群组为有效群组(现在创建的新文档将属于当前用户,并属于当前有效群组)

            /etc/gshadow       ----[1-9]

        实战:

                1.默认方式建立用户

                $ useradd vbird1           ----[1-10]

                $ sudo passwd vbird1   ----设置密码

                2.-u /-g

                $ useradd -u 700 -g users vbird2          ----初始群组为users,初始UID为700,建立用户vird2

                3.-c

                $ useadd -r bird3         ----不会主动建立家目录

                4.useradd参考档:查看useradd的默认情况[1-11]

                        GROUP=100

                        HOME=/home

                        INACTIVE=-1

                        EXPIRE=

                        SHELL=/bin/sh

                        SKEL=/etc/skel

                        CREATE_MAIL_SPOOL=no           ----==no时不会在/var/spool/mail下建立文档

                5.UID/GID默认参考档:/etc/login.defs

                    [1-12,14]

    5.使用standard input建立用户的密码

            $ sudo echo "truman"  | passwd --stdin vbird1             ----[1-15]

    6.passwd命令 /etc/passwd    /etc/pam.d/passwd    /etc/shadow

        $ sudo passwd -S yxl                ----查看yxl的帐号情况

        $ sudo passwd -x 60  -i 10 yxl         ----60天变更,10天失效密码过期设置

        $ sudo passwd -l yxl          ----将yxl这个账户锁定(会因为系统无法正确读取shadow中的密码字段而无法登录)        

        $ sudo grep yxl /etc/shadow              ----查看什么发生了变化

            yxl:!$6$oVhKiz3G$AWIETaQnyPd4pKME/XYfOBWlHJSBDJLjFLCc.01Jd8zx4xreNnlYTkvK

            8B.OJHx6QdItzTis1p/4LYhx7EhFx.:16023::60::10::

        $ sudo passwd -u yxl    

            passwd:密码过期信息已更改。

        $ sudo grep yxl /etc/shadow

            yxl:$6$oVhKiz3G$AWIETaQnyPd4pKME/XYfOBWlHJSBDJLjFLCc.01Jd8zx4xreNnlYTkvK

            8B.OJHx6QdItzTis1p/4LYhx7EhFx.:16023::60::10::

    7.chage命令 [1-18]

        $ sudo chage -l yxl       ----查看yxl的详细密码属性信息(比passwd -S好用多了)

        

        案例1:给别人一个初始密码,当该用户登录是必须修改密码,否则无法登录

        $ sudo useradd nemo

        $ sudo echo "yxl694852" | passwd --stdin nemo(ubuntu不支持)    or $ sudo passwd nemo

        $ sudo sudo chage -d 0 nemo 

    8.usermod[1-16]

        案例一:修改yxl的说明栏

        $ sudo usermod -c "MyGirl" yxl

        $ grep yxl /etc/passwd

        案例二:设置yxl的密码在2100年失效

        $ sudo usermod -e "2100-01-01" yxl

        案例 三:给已经创建的nemo账户一个home目录

        $ ll -d ~nemo

        $ sudo cp -a /etc/skel/  /home/nemo      ---将/etc/skel复制过来作为/home/nemo

        $ sudo chown -R nemo:nemo  /home/nemo        ----改变其拥有者和所属组

        $ sudo chmod 700 /home/nemo           ----改变目录的权限

    9.userdel [1-17]

        注意:如果只是暂时不想让该用户存在,可以考虑将密码帐号有效剩余天数(/etc/shadow)设为0或者$ sudo passwd -d username删掉密码

        只有确定可以完全清楚哦某个账户时 才考虑userdel     

        $ find / -user vbird1        ---全盘查找属于vbird1的档案

        $ sudo userdel -r vbird1             ----连同vbird1的home目录一起清除    

    10.finger [1-19]

        案例一:

        $ finger anderson     ----观察anderson帐号相关属性

                       Login: anderson      Name: anderson

                        Directory: /home/anderson          Shell: /bin/bash

                        On since Fri Nov 15 00:54 (CST) on tty7 from :0

                            1 hour 4 minutes idle

                        On since Fri Nov 15 00:54 (CST) on pts/1 from :0

                           1 second idle

                        No mail.

                        No Plan.

        案例二:建立自己的计划档

        $ echo   "I will go to BeiJIng the day after tomorrow." > ~.plan           ----不知道为什么我的机器上没有~/.plan   ~./project   ~/.pgpkey

        

        案例三:目前登录的用户与登录时间

        $ finger 

        

    11.chfn:修改i/添加个人属性信息

    12.chsh :change sheel

          案例一:用anderson的身份列出系统上所有合法的sheel,并制定/bin/sh为自己的sheel       

          $ chsh -l        <==>     $ cat /etc/shells                   ----ubuntu上没有-l 参数

          案例二:修改当前用户的hshell

          $ chsh -s /bin/rbash;grep anderson /etc/passwd                <==>        $ sudo usermod -s /bin/rbash anderson

    13.id :查看某人或自己的UID/GID等信息,还可以用来判断有没有某个用户

          $ id      <==>    $ who am i | id    ----查看当前用户的信息

          $ id yxl          ----查看yxl的UID/GID等信息

    14.groupadd,    groupmod,    groupdel,    gpaasswd


        groupadd  

        案例一:新建一个群组

        $sudo  groupadd webteam

        $sudo  grep webteam /etc/group  /etc/shadow

                    /etc/group:webteam:x:1002:

                    /etc/gshadow:webteam:!::


        groupmod

        注意:不要随便更改GID

        案例二:将案例一新建的webeam组名改为myteam,GID改为

        $ sudo groupmod -g 139 -n myteam webteam 

        $ sudo grep myteam /etc/group  /etc/gshadow

                    /etc/group:myteam:x:139:

                    /etc/gshadow:myteam:!::


        groupdel

        注意:如果该组中还有其他帐号则无法顺利删除(可以先更改帐号的GID或者删除那个帐号)

        案例三:删除刚刚建立的群组

        $ sudo groupdel myteam    


        gpasswd

        案例四:建立一个新的群组myteam,交给yxl管理(群组管理员)

        $ sudo groupadd -g 139 myteam        ----建立群组myteam,GID为139(勤人坡)

        $ sudo gpasswd myteam            ----设置群组密码(truman)

        $ sudo gpasswd -A yxl myteam         ----将yxl添加为myteam的群组管理员

        $ su yxl          ----却换到yxl

        $ gpasswd -a anderson myteam           ----用易小丽的身份将anderson加为myteam的群组组员

        $ grep myteam /etc/group        ----查看


         帐号管理实战:

        案例一:新建一个群组mathwebteam,然后提供一个项目的开发目录,帐号信息如下

    帐号 帐号备注 支援次要群组 是否可以登录主机 passwd
    neo the boss mathwebteam yes truman
    xk the crew mathwebteam yes truman
    yl the crew no no truman

           一:建立群组

            $ sudo groupadd mathwebteam 

            二:建立帐号

            $  sudo useradd -G mathwebteam -c "the caption" neo

            $  sudo useradd -G mathwebteam -c "the crew" xk

            $  sudo useradd -c "the crew" -s /sbin/nologin yl

            三:给帐号设置密码

            $  sudo passwd neo

            $  sudo passwd yxl

            $  sudo passwd xk

            四:建立项目目录

            $ sudo mkdir /srv/project

            $ sudo chgrp mathwebteam /srv/project

            $ sudo chmod  2770 /srv/project

            $ ll -d /srv/project

            五:让anderson具备对/srv/project rx的权限(acl应用)

            测试yl能否进入/srv/project

            $ su anderson         ----切换

            $ cd  /srv/project          ----不行

                     bash: cd: /srv/project/: 权限不够

            #$ sudo setfacl -m u:anderson:rx   /srv/project          ----让anderson对/srv/project具备rx的权限

            $ sudo setfacl -m d:u:anderson:rx   /srv/project          ----让anderson对/srv/project及其地下的所有文件都具备rx的权限

            $ cd /srv/priject                  ----现在anderson已经可以进入/srv/project中了

            $ touch te       ----anderson仍然不具备w的权限

            $ getfacl /srv/project

                    # file: srv/project/

                    # owner: root

                    # group: mathwebteam

                    # flags: -s-

                    user::rwx

                    user:anderson:r-x         ----增加了anderson的权限

                    group::rwx

                    mask::rwx

                    other::---

                        


    15.acl(access control list)


            一:查看我的机器是否支持acl

            $ mount | grep acl           ----我的ubuntu没有查到任何信息

            $ sudo dumpe2fs -h /dev/sda9 | grep acl   ----通过产看根目录(我的ubuntu的根目录在/dev/sda9)的超级块来看看有没有acl的信息

                         dumpe2fs 1.42.8 (20-Jun-2013)

                         Default mount options:    user_xattr acl          ----看来我的ubuntu默认支持acl

            如果不支持可以执行以下命令是系统的文件系统支持:

           $ sudo mount -o remount,acl /

           [sudo] password for anderson: 

           $ mount |grep acl

            /dev/sda9 on / type ext4 (rw,errors=remount-ro,acl)

            二:acl的使用技巧

               setfacl     [1-20]

                案例一:在test中创建一个文档acl_test1并使用setfacl对acl_test1的权限进行设置

                $ mkdir /home/anderson/test

                $ touch /home/anderson/test/acl_test1

                $ setfacl -m u:yxl:rwx acl_test1              ----使yxl具备rwx权限

                $ ll -d acl_test1 

                    -rw-rwxr--+ 1 anderson anderson 0 11月 16 14:14 acl_test1*

                $ setfacl -m u::rwx acl_test1 

                $ ll -d acl_test1 

                    -rwxrwxr--+ 1 anderson anderson 0 11月 16 14:14 acl_test1*

        

                $ getfacl acl_test1         ----查看acl_test1档案的acl属性

                            # file: acl_test1

                            # owner: anderson

                            # group: anderson

                            user::rwx

                            user:yxl:rwx

                            group::r--

                            mask::rwx

                            other::r--

                $ setfacl -m g:myteam:rx acl_test1       ----给myteam这个群组rx权限

                $ getfacl acl_test1                               ----查看acl_text1这个的档案的acl权限设置

                            # file: acl_test1

                            # owner: anderson

                            # group: anderson

                            user::rwx

                            user:yxl:rwx

                            group::r--

                            group:myteam:r-x                    ----多了这个群组的权限设定

                            mask::rwx

                            other::r--

                针对有效权限mask的设置

                $ setf -m m:r     acl_test1          ----针对acl_test1设置mask(权限上限)为r,这样acl设置最高权限只有r

        三:帐号的切换

                su

                $ su               ----切换为root账户,变量设定方式为no-login shell,环境变量不会改变

                $ su -            ----以login shell的方式切换为root

                $ su -c "head -n 3 /etc/shadow"               ----切换为root执行一条命令,执行完毕后马上切换回来

                $ su -l yxl    or      $ su yxl            ----切换到yxl这个普通用户

                

                sudo

                $ sudo -u yxl touch /home/yxl/sudotest        ----使用yxl帐号建立sudotest

                $ sudo -u yxl sh -c "mkdir ~yxl/www;cd ~yxl/www; echo 'This is index.html file' "   -----一串指令

                visudo和/etc/sudoers   [1-21]

                案例一:让yxl可以通过sudo切换为root,限制仅可以使用passwd帮助anderson修改帐号的密码,但不能修改anderson的密码

                $ sudo visudo 

                        yxl ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd anderson,!/usr/bin/passwd root

                案例二:针对案例一优化,以一种更加有弹性更易扩展维护的方式设置[1-23]

                $ sudo visudo

                        #User_Alias and Cmnd_Alias

                        User_Alias ADMPW =yxl,yl   #这次添加两个助手

                        Cmnd_Alias ADMPWCOM=!/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd anderson,!/usr/bin/passwd root 

                        ADMPW  ALL=(root) ADMPWCOM

                 案例三:sudo 搭配su实现普通帐号在不知道root密码的情况下使用root身份进行工作(sudo su -)

                注意:仅在这些帐号您都十分信任的情况下

                $ sudo visudo

                User_Alias ADMINS=user1,user2,user3

                ADMINS ALL=(root) /bin/su -

    四.用户的特殊shell与PAM模块

               1: nologin shell :我的ubuntu的nologin shell为/usr/sbin/nologin,而且我没在/etc/下找到nologin.txt,新建了一个也不起作用

               2:passwd呼叫PAM接口的过程[1-24]

    以下的学习平台更换为centos 6.4 on vmware 10.0.1

               3:PAM控制旗标所造成的回报流程[1-25]

               4:centos 6的PAM预设档案

                             /etc/pam.d/login             ----登入系统执行的pam验证流程

                             /etc/pam.d/ststem-auth        ----被多次呼叫

                            /etc/pam.d/*                          ----各个程序的pam配置文件

                            /etc/security/*                 ----其它环境的pam配置文件

                            

  • 相关阅读:
    基于ARM的指纹识别门禁系统设计方案
    基于ARM9的指纹识别系统的设计和实现
    使用TI 的低功耗C5x DSP的指纹识别方框图和解决方
    基于ATmega162的指纹识别电子机械锁设计
    一种光学指纹识别系统的设计方案
    利用DSP高速处理能力对指纹识别的系统方案
    加性噪声--传递概率密度函数=噪声概率密度函数
    信号的方差与功率的关系
    Bayes factor
    频率学派贝叶斯学派估计的区别
  • 原文地址:https://www.cnblogs.com/eli01/p/3559654.html
Copyright © 2011-2022 走看看