14-用户管理

用户管理


UID

        用户id  相当用户身份证号


用户分类

        root     UID=0


        普通用户


        虚拟用户(无法直接登录系统)

               保证进程/服务正常运行


核心文件或目录

文件

          /etc/passwd   用户信息

          /etc/shadow   存放用户密码信息

          /etc/group      用户组信息

          /etc/gshadow用户组密码信息


         常用的命令解释器

                /bin/bash(/bin/sh  软连接)    #CentOS  正常用户

                /sbin/nologin                  #CentOS   虚拟用户/傀儡用户

                /bin/dash                      #ubuntu

                /bin/csh    /bin/tcsh            #unix


目录

              /etc/skel        新用户家目录的样子

                   skel下文件 

                             .bash_logout  

                             .bash_profile   对某个用户生效的环境变量   

                             .bashrc        对某个用户生效的别名



添加新用户的过程

                      useradd----系统创建家目录----系统修改权限所有者------将/etc/skel下所有内容复制到家目录下

            故障

                        命令行提示符:-bash-4.2$ 或 -bash-4.1$

                                                 当前系统bash的版本   bash --version,命令解释器为4.2版本

                        原因:当前用户的环境变量的配置文件.bash_profile 与 .bashrc 被删除

                        解决方法:复制/etc/skel下文件到当前用户家目录  cp /etc/skel/.bash*  ~


用户管理的命令


操作用户

            useradd         添加用户

                             -u   指定UID

                             -s    指定用户使用的命令解释器

                             -M  创建用户时不创建家目录

                             -c    指定用户的说明信息

                             -g    指定用户组   主要组(gid)

                             -G    指定多个用户组(groups)


              passwd       设置用户密码

--stdin 非交互式设置密码   从管道获取密码  (只能root用户使用)

                                           echo123456 |passwd --stdin  oldboy


              userdel    删除用户,默认不会删除用户家目录

                             -r   删除用户和用户家目录

                              删除用户替代方法   在/etc/passwd中给用户前加上#


                 su              切换用户

                       -    (切换用户时更新用户的环境变量)

                       -c      切换到某个用户执行命令,执行命令后自动退出

                                     su -  oldboy -c  whoami


                 usermod     修改用户的信息

                                -g  指定用户组      主要组(gid)

                                -G  指定多个用户组,附加组(groups)

                                -u  指定UID

                                -s   指定用户使用的命令解释器

      用户组        /etc/group   用户组信息文件

                groupadd   

                                    -g     gid:指定组ID号。

                                    -o      允许组ID号,不必惟一。

                                     -r      加入组ID号,低于499系统账号。

                                     -f      加入已经有的组时,发展程序退出。

                groupdel  

                groupmod

                                   -g     修改既有的 GID 数字;

                                   -n      修改既有的组名

查询用户

                     w               显示谁登录了系统在干什么  查询负载

                             uptime  查询负载

                             who      显示登录信息         

                      id              显示uid  gid

                      whoami     当前用户名

                      last            用户的登录信息  谁什么时候  从哪里登录  什么时候退出

                      lastlog        显示所有用户最近一次的登录时间


保护用户密码

                 设置复杂密码“" _ -

                 记录密码工具   keepass


                 批量生成多个用户并随机生成密码  (生成命令再测试一个,成功后再交给bash运行)


        批量生成stu01-03三个用户并将密码设置为123456

echo stu{01..3}|xargs -n1|sed -r 's#(.*)#useradd \1 ;echo 123456|passwd --stdin \1#g' |bash

echo stu{01..3}|xargs -n1|sed -r 's#&#useradd & ;echo 123456|passwd --stdin &#g' |bash


批量生成多个用户并随机生成密码

echo stu{04..6}|xargs -n1 |sed

's#.*#useradd &;p=$(date +%N);echo $p|passwd --stdin &;echo $p &>>/p.txt#g'

useradd stu04;p=$(date +%N);echo $p|passwd --stdin stu04;echo $p stu04 >>/p.txt

useradd stu05;p=$(date +%N);echo $p|passwd --stdin stu05;echo $p stu05 >>/p.txt

useradd stu06;p=$(date +%N);echo $p|passwd --stdin stu06;echo $p stu06 >>/p.txt

           最后加上bash执行


              bash   命令解释器         |bash 运行管道前的命令


&在sed中s###g里位于第二个#号之间代表第一个#号之间的所有内容


生成随机密码

              1. tr+head         /dev/urandom 

                   tr -cd 'a-zA-Z0-9'


              2.date +md5sum/sha512sum +head

                   date +%N | md5sum |head -c8


             3.echo $((RANDOM+数字)) | head-c5          RANDOM  随机生成数字


               4. uuidgen    生成随机的uuidgen


               5.mkpasswd 


               6.openssl  rand -base64  8


               7. strings  将字符转换为人类可读

string /dev/urandom | tr -cd 'a-zA-Z0-9' | head -c8


               8.gpg --gen-random -armor 1 12



suid   对所有用户给查看的命令的权限


sudo  可以让普通用户在执行某个或某几个命令时临时成为root


      sudo -l 查看当前用户有什么特权   (需输入密码)(5分钟的记住密码缓存) -k清除缓存

                With great power comes greatresponsibility能力越大责任越大


         编辑    visodu ==== vi/etc/sudoers

给用户授权

         配置   (在100行以下添加)   用户名   ALL=(ALL)  命令(绝对路径多个命令以逗号空格隔开)

给用户组授权

               (107行下)组前面加%

         使用    sudo +命令   (执行) 


       常用功能

              给用户配置sudo可以查看系统日志文件

                    /bin/grep 

                    /bin/head

                    /bin/tail

                    /bin/less

                    /bin/more

                    /bin/cat

              给用户配置可以运行/bin下面所有命令但是不能使用vi和su

                    /bin/*, !/bin/vi, !/bin/su

              给用户配置可以运行系统中所有命令并且使用sudo不需要再输入用户的密码

                    NOPASSWD: ALL







$(())双括号内可计算

column  -t   过滤内容显示时对齐

history  -c    清空命令的历史纪录

你可能感兴趣的:(14-用户管理)