zoukankan      html  css  js  c++  java
  • Linux之用户管理--初级上

    管理用户命令汇总

    命令注释说明(特殊颜色的必须掌握)
    useradd增 同adduser命令,执行此命令可在系统中添加用户。(更改4个用户文件)
    userdel删 执行此命令可删除用户及相关用户的配置或文件(更改4个用户文件)
    passwd 执行此命令可为用户设置或修改密码。更改/etc/shadow文件
    chage 修改用户密码属性。管理/etc/shadow文件
    usermod改 修改用户信息的命令,可以通过usermod来修改登录名,用户的家目录等等
    id查 查看用户的UID,GID及所归属的用户组
    su 用户角色切换工具。su -
    sudo

    sudo是通过另一个用户来执行命令,su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo能在命令后面直接接命令执行,

    比如sudo ls /root,不需要root密码就可以执行只有root才能执行的相应命令或具备的目录权限;这个权限需要通过visudo命令或者直接编辑/etc/sudoers来实现

    visudo visudo配置sudo权限的编辑命令;也可以不用这个命令,直接用vi来编辑/etc/sudoers实现。但推荐用visudo来操作(会自动检查语法)

    管理用户组命令汇总

    命令注释说明(特殊颜色标记需要掌握)
    groupadd 添加用户组
    groupdel 删除用户组

    /etc/skel目录是用来存放新用户环境变量文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下:默认情况下,/etc/skel目录下的所有文件都是隐藏文件以.点开头的文件);通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一的,标准的,初始化用户环境。

    [root@chengliang ~]# cd /etc/skel
    [root@chengliang skel]# ls
    readme
    [root@chengliang skel]# ls -al
    total 20
    drwxr-xr-x.  2 root root 4096 May 12 22:14 .
    drwxr-xr-x. 79 root root 4096 May 16 17:07 ..
    -rw-r--r--.  1 root root   18 May 11  2016 .bash_logout
    -rw-r--r--.  1 root root  176 May 11  2016 .bash_profile
    -rw-r--r--.  1 root root  124 May 11  2016 .bashrc
    -rw-r--r--.  1 root root    0 May 12 22:14 readme
    [root@chengliang skel]# 
    

    命令说明: 在/etc/skel/目录下创建一个文件readme,然后我们创建一个新用户,发现在用户的家目录里也默认有一个readme。因此,得出结论,/etc/skel/目录下的所有文件都会默认出现在新建用户的家目录里。

    [root@chengliang ~]# su - cheng
    [cheng@chengliang ~]$ ls -al
    total 24
    drwx------. 2 cheng cheng 4096 May 13 01:23 .
    drwxr-xr-x. 7 root  root  4096 May 12 22:15 ..
    -rw-------. 1 cheng cheng  125 May 13 01:23 .bash_history
    -rw-r--r--. 1 cheng cheng   18 May 11  2016 .bash_logout
    -rw-r--r--. 1 cheng cheng  176 May 11  2016 .bash_profile
    -rw-r--r--. 1 cheng cheng  124 May 11  2016 .bashrc
    -rw-r--r--. 1 cheng cheng    0 May 12 22:14 readme
    [cheng@chengliang ~]$ 

    企业面试题:请问如下登录故障的原理及解决办法?

    -bash-4.1$
    -bash-4.1$
    

    问题示例: 命令说明:普通用户强制删除了家目录里的变量文件就会出现这种问题。

    [teacher@chengliang ~]$ ls -al
    total 20
    drwx------. 2 teacher teacher 4096 May 30 23:32 .
    drwxr-xr-x. 7 root    root    4096 May 12 22:15 ..
    -rw-------. 1 teacher teacher  149 May 30 23:32 .bash_history
    -rw-r--r--. 1 teacher teacher  176 May 11  2016 .bash_profile
    -rw-r--r--. 1 teacher teacher  124 May 11  2016 .bashrc
    [teacher@chengliang ~]$ rm ./.bash*
    [teacher@chengliang ~]$ ls -al
    total 8
    drwx------. 2 teacher teacher 4096 May 30 23:34 .
    drwxr-xr-x. 7 root    root    4096 May 12 22:15 ..
    [teacher@chengliang ~]$ exit
    logout
    [root@chengliang ~]# su - teacher
    -bash-4.1$ 
    

    解决方法:我们去把/etc/skel/目录下的变量文件复制回来就好了

    [root@chengliang ~]# su - teacher
    -bash-4.1$ 
    -bash-4.1$ cp /etc/skel/.bash* ~
    -bash-4.1$ exit
    logout
    [root@chengliang ~]# su - teacher
    [teacher@chengliang ~]$ ls -al
    total 24
    drwx------. 2 teacher teacher 4096 May 30 23:36 .
    drwxr-xr-x. 7 root    root    4096 May 12 22:15 ..
    -rw-------. 1 teacher teacher   80 May 30 23:36 .bash_history
    -rw-r--r--. 1 teacher teacher   18 May 30 23:36 .bash_logout
    -rw-r--r--. 1 teacher teacher  176 May 30 23:36 .bash_profile
    -rw-r--r--. 1 teacher teacher  124 May 30 23:36 .bashrc
    [teacher@chengliang ~]$ 
    

    知识扩展*和.*的问题

    [root@chengliang etc]# cp /etc/skel/* /tmp/
    [root@chengliang etc]# cd /tmp/
    [root@chengliang tmp]# ls
    etc  mysql.sock  readme
    [root@chengliang tmp]# ls -al
    total 16
    drwxrwxrwt.  4 root  root  4096 May 30 23:48 .
    dr-xr-xr-x. 24 root  root  4096 May 12 15:28 ..
    drwxrwxrwt.  2 root  root  4096 Nov 12  2016 .ICE-unix
    drwxr-xr-x.  8 root  root  4096 Nov 20  2016 etc
    srwxrwxrwx.  1 mysql mysql    0 May 10 21:08 mysql.sock
    -rw-r--r--.  1 root  root     0 May 30 23:48 readme
    [root@chengliang tmp]#
    

    *不复制隐藏文件,所以/etc/skel/目录下的隐藏文件不会复制到/tmp/目录下

    那么在运行cp /etc/skel/.*之前,我们先看看.*里都有什么东西?
    
    [root@chensiqi1 ~]# ls /etc/skel/.*
    /etc/skel/.bash_logout  /etc/skel/.bash_profile  /etc/skel/.bashrc
    
    /etc/skel/.:
    readme
    
    /etc/skel/..:
    ConsoleKit               inputrc                       quotatab
    DIR_COLORS               iproute2                      rc
    DIR_COLORS.256color      issue                         rc.d
    DIR_COLORS.lightbgcolor  issue.bak                     rc.local
    NetworkManager           issue.net                     rc.sysinit
    X11                      issue.net.bak                 rc0.d
    abrt                     kdump-adv-conf                rc1.d
    acpi                     kdump.conf                    rc2.d
    adjtime                  krb5.conf                     rc3.d
    aliases                  latrace.conf                  rc4.d
    aliases.db               latrace.d                     rc5.d
    alsa                     ld.so.cache                   rc6.d
    东西太多以下省略....
    

    .*连etc下的东西都复制出来了,这是为什么呢?别忘了,目录下都还有些什么东西,还有.和..

    .代表当前目录,..代表上级目录。因此.*就把上级目录的所有文件也复制了。所以我们在复制隐藏文件的时候不能用.*来代表所有

    用户管理命令详解

    添加用户命令useradd

    • 添加用户的命令有useradd和adduser,这两个命令所能达到的效果是一样的。当然除了useradd和adduser命令以外,我们还能通过修改用户配置文件/etc/passwd和/etc/group及手动创建文件的办法来直接添加用户,不过这里并不推荐,这里建议大家统一使用useradd命令,本文也仅会针对useradd命令进行举例讲解。
    • 当使用useradd命令不加参数选项,后面直接跟所添加用户名时,系统首先会读取配置文件/etc/login.defs和/etc/default/useradd中所定义的参数或规则,根据设置的规则添加用户,同时会向/etc/passwd和/etc/group文件内添加新建用户和用户组记录。
    • 当然/etc/passwd和/etc/group的加密资讯文件/etc/shadows和/etc/gshadow也会同步生成记录,同时系统还会根据/etc/default/useradd文件中所配置的信息建立用户的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户的家目录中。

    useradd语法:

    [root@chensiqi ~]# man useradd #下面的内容源于此命令帮助的结果,对于部分地方做了修改
    名称:
        useradd - 账号建立或更新新用户资讯的工具
    语法:
        useradd [-c comment] [-d home_dir]
                [-e expire_date] [-f inactive_time]
                [-g initial_group] [-G group[,....]]
                [-m [-k skeleton_dir] | -M] [-s shell]
                [-u uid[-o][-n][-r] login]
        
        useradd -D  [-g default_group] [-b default_home]
                    [-f default_inactive] [-e default_expire_date]
                    [-s default_shell]
                    
    描述:
        新账号建立
        当不加-D 参数时,useradd指令使用命令列来指定新账号的设定值和使用系统上的预设值(指前文提到的/etc/login.defs和/etc/default/useradd等配置文件)。新用户账号将产生一些系统档案,如用户目录的建立,拷贝起始档案等,这些均可以利用命令列选项指定。此版本为Red Hat Linux 提供,可帮每个新加入的用户建立和用户同名的group,要达到这个目的,不能添加-n选项。

    为了方便查看,我们用表格的方式把useradd可使用的参数选项展现给大家如下所示:
    |useradd 参数选项|注释说明(特殊颜色的需要掌握)|
    |--|--|
    |-c comment|新账号password档的说明栏|
    |-d home_dir|新账号每次登入时所使用的home_dir.预设值为default_home内login名称,并当成登入时目录名称|
    |-e expire_date|账号终止日期。日期的指定格式为MM/DD/YY或者YYYY-MM-DD|
    |-f inactive_day|账号过期几日后永久停权。当值为0时账号则立刻被停权。而当值为-1时则关闭此功能,预设值-1|
    |-g initial_group|group 名称以数字来作为用户登入起始用户组(group)。用户组名须为系统现有存在的名称。用户组数字也须为现有存在的用户组,预设的用户组数字为1.|
    |-G group,[...]|定义此用户为多个不同groups的成员,每个用户组使用“,”逗号分隔。用户组名同-g选项的限制。默认值为用户的起始用户组。|
    |-m|用户目录如不存在则自动建立。|
    |-M|不建立用户家目录,优先于/etc/login.defs文件的设定。一般创虚拟用户时不建立家目录,部署服务时需要创建虚拟用户。|
    |-n|默认情况用户的用户组与用户的名称会相同。如果命令加了-n参数,就不会生成和用户同名的用户组了。|
    |-r| 此参数是用来建立系统账号。|
    |-s shell|用户登入后使用的shell名称。默认值不填写,这样系统会帮你指定预设的登入shell(根据/etc/default/useradd预设的值)。cat /etc/shells系统支持的shell|
    |-u uid|用户的ID值。这个值必须是唯一的,除非用-o选项。数字不可为负值|

    示例1:useradd -c,-u,-G,-s,-d,-m多个参数组合例子,自定义用户家目录。

    示例2:新建用户默认的账号终止日期

    示例3:添加用户时的默认shell类型/bin/bash改为/bin/sh

    [root@chensiqi1 ~]# cat /etc/shells #查看当前系统支持的shell种类 
    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/dash
    /bin/tcsh
    /bin/csh
    [root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看当前默认的shell配置
    SHELL=/bin/bash
    [root@chensiqi1 ~]# useradd -D -s /bin/sh  #修改为/bin/sh
    [root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看修改结果
    SHELL=/bin/sh #修改成功
    View Code

    特别提示,这里仅更改了配置文件的默认值,仅对之后建立的新用户生效,和老用户无关

    注意了,这里我更改shell类型之后,useradd新增用户时发现登陆,会出现如下登陆故障!

    -bash-4.1$
    -bash-4.1$
    

      

  • 相关阅读:
    c++ 对特定进程的内存监控
    算法提高 快乐司机 (并不快乐)
    蓝桥 :算法提高 排列数(深度优先)
    算法提高 9-3摩尔斯电码
    算法提高 队列操作
    C++set 和 multiset的使用
    软件工程实践第三次随笔
    软件工程实践第二次随笔
    软件工程实践第一次随笔
    《构建之法》项目管理&典型用户和场景
  • 原文地址:https://www.cnblogs.com/0zcl/p/6862727.html
Copyright © 2011-2022 走看看