• 第十一章 用户的创建


    一.用户创建扩展知识
    useradd创建用户时,系统会以/etc/login.defs、/etc/defaults/useradd两个配置文件作为参照物
    1./etc/login.defs

    #用户的邮件目录
    MAIL_DIR	/var/spool/mail
    
    #密码的最大天数
    PASS_MAX_DAYS	99999
    #密码最小使用天数
    PASS_MIN_DAYS	0
    #密码最小长度
    PASS_MIN_LEN	5
    #剩多少天警告
    PASS_WARN_AGE	7
    #普通用户最小uid
    UID_MIN                  1000
    #普通用户最大uid
    UID_MAX                 60000
    #系统用户最小uid
    SYS_UID_MIN               201
    #系统用户最大uid
    SYS_UID_MAX               999
    #普通用户最小gid
    GID_MIN                  1000
    #普通用户最大gid
    GID_MAX                 60000
    #系统用户最小gid
    SYS_GID_MIN               201
    #系统用户最大gid
    SYS_GID_MAX               999
    #是否创建家目录
    CREATE_HOME	yes
    #创建家目录的权限(700)
    UMASK           077
    #创建用户的同时 创建组,删除用户的同时,删除组
    USERGROUPS_ENAB yes
    #密码的 加密算法
    ENCRYPT_METHOD SHA512
    
    
    
    
    2./etc/default/useradd
    #依赖于/etc/login.defs的USERGRUUPS_ENAB参数,如果为no,则在此处控制
    GROUP=100
    #普通用户家目录
    HOME=/home
    #是否启用账号过期  -1表示不启用
    INACTIVE=-1
    #账号的终止日志 不设置表示不启用
    EXPIRE=
    #默认登录shell
    SHELL=/bin/bash
    #用户的家目录 环境变量
    SKEL=/etc/skel
    #创建邮件
    CREATE_MAIL_SPOOL=yes
    

    设置随机复杂密码(扩展)
    yum install -y expect

    mkpasswd
    -l:密码长度
    -d:数字
    -c:小写字母
    -C:大写字母
    -s:特殊字符

    当使用useradd创建用户时,创建的用户家目录下会存在.bash_*环境变量相关的文件,这些环境变量默认文件在/etc/skel目录中拷贝。这个默认拷贝环境变量位置是由/etc/defaults/useradd配置文件中定义
    企业故障案例

    在当前用户的家目录下,想要删除所有文件,执行了如下命令

    [root@db04 ~]# rm -fr .*

    结果再次登录时

    -bash-4.1#

    解决办法

    -bash-4.1# cp /etc/skel/.bash* .

    再次登录 即可恢复

    [root@db04 ~]#

    用户密码管理
    创建完账户后,默认是没有设置密码的,所以该账户是没有办法登陆操作系统。只有使用passwd设置好密码后方可登录系统。

    交互式shell和非交互式shell、登录shell和非登录shell的区别
    2014年09月12日 22:58:01 比不了就不比 阅读数 379收起
    个人分类: UNIX环境高级编程
    交互式shell和非交互式shell、登录shell和非登录shell的区别。
    首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录。
    交互式shell和非交互式shell(interactive shell and non-interactive shell)
    交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。
    shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。
    可以通过打印“(-”变量的值(代表着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。 master@jay-intel:~/workspace/shell) echo (- himBH master@jay-intel:~/workspace/shell) ./test.sh
    echo $-
    hB

    登录shell和非登录shell
    登录shell:是需要用户名、密码登录后才能进入的shell(或者通过”–login”选项生成的shell)。
    非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。
    执行exit命令,退出一个shell(登录或非登录shell);
    执行logout命令,退出登录shell(不能退出非登录shell)。
    master@jay-intel:~$ bash --login
    master@jay-intel:~$ logout
    master@jay-intel:~$ bash --login
    master@jay-intel:~$ exit
    logout

    master@jay-intel:~$ bash
    master@jay-intel:~$ logout
    bash: logout: not login shell: use `exit'
    master@jay-intel:~$ exit
    exit

    bash是 login shell 时,其进程名为”-bash“ 而不是”bash”。 比如下面的命令行演示:
    man bash: A login shell is one whose first character of argument zero is a -, or one started with the –login option.

    在 login shell 中:

    [perf@host_220-188 ~]$ echo (0 -bash [perf@host_220-188 ~]) ps -ef | grep '-bash' | grep -v grep
    root 16823 16821 0 May06 pts/0 00:00:00 -bash
    perf 21135 21134 0 May07 pts/1 00:00:00 -bash

    后向引用创建用户

    在root用户的情况下,不切换普通用户下执行'Pwd'

    在root的用户下,不切换到普通用户的情况下执行普通用户的操作

    在一个非登陆shell中:

    jay@jay-linux:~$ echo (0 /bin/bash jay@jay-linux:~) ps -ef | grep '-bash' | grep -v grep
    jay@jay-linux:~$

    总结一下曾经看在chinaunix论坛中看到的关于登录shell与非登录shell、交互式shell与非交互式shell的讨论:
    Login Shell:当init3时,mingetty spawn出登录提示符的时候,你输入帐号和密码进入了,出现了shell提示符,这个过程就是登录shell;
    Interactive Shell:接下来你得到了一个像“root@host />”这样的提示符,你输入什么,它就解释出什么,这就是交互式shell;你在当前shell又fork了一个 shell(bash),这个bash也是交互式shell。通常情况下interactive shell是login shell派生出来的。
    Non Interactive Shell:你需要写一个bash script,用外部shell执行“bash script.sh”命令,它(bash)从可以第一条命令执行到最后一条然后退出,不与你进行任何交互,它就是非交互式shell。
    交互式非登录shell,例如你在Gnome图形界面中打开“终端”出来的那种窗口程序,和登录shell相比,它是“非登录”的,你并不需要输入用户名和密码,和非交互式shell相比,这是“交互式”的,就像你说的那它“你输入什么,它就解释什么”。
    对于Bash来说,登录shell(包括交互式登录shell和使用“–login”选项的非交互shell),它会首先读取和执行/etc/profile全局配置文件中的命令,然后依次查找/.bash_profile、/.bash_login 和 ~/.profile这三个配置文件,读取和执行这三个中的第一个存在且可读的文件中命令。除非被“–noprofile”选项禁止了。
    在非登录shell里,只读取 ~/.bashrc (和 /etc/bash.bashrc、/etc/bashrc )文件,不同的发行版里面可能有所不同,如RHEL6.3中非登录shell仅执行了“~/.bashrc”文件(没有执行/etc/bashrc),而KUbuntu10.04中却依次执行了/etc/bash.bashrc 和 ~/.bashrc 文件。
    对于这些规则,可以直接在相应的配置文件中加一些echo命令来验证其真实性。

    人的一生或多或少都在为一些事情努力着,有目标的人生是精彩的!朋友请不要在原地画圈圈,该行动了!
  • 相关阅读:
    boost库的使用介绍
    《架构实战软件架构设计的过程》
    常用开发命令
    《项目管理最佳实践案例剖析》
    From Live Writer
    希望实现的程序
    正在进行调试的Web服务器进程已由Internet信息服务(IIS)终止。可以通过在IIS中配置应用程序池Ping设置来避免这一问题。有关更多详细信息,请参见“帮助”
    请确保此代码文件中定义的类与“inherits”属性匹配
    更改IE默认源代码编辑器
    MS的.net源码地址
  • 原文地址:https://www.cnblogs.com/ronglianbing/p/11734832.html
Copyright © 2020-2023  润新知