Linux时一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响,每个用户之间不能越权访问。因此,不同用户具有不同的权限,每个用户是在允许的范围内完成不同的任务,Linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。

Linux下用户的角色分类:

    -超级用户:拥有对系统的最高管理权限,默认是root用户;

    -普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限;

    -虚拟用户:也叫“伪用户”,这类用户最大的特点是不能登录系统,它的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin,adm,nobody用户等。


用户:如果要使用系统资源,就必须向系统管理员申请一个账户(密码),通过这个帐号进入系统。该帐号同用户是一个概念。建立不同属性的帐号,一方面,可以合理的利用和控制系统资源,另一方面,也可以帮助用户组织文件,提供对用户文件的安全性保护。


用户组:用户组是具有相同特征用户的逻辑集合,有时需要让多个用户具有相同的权限,一种方法时分别对多个用户进行文件访问授权另一种方法就是建立一个组,让这个组具有相应的权限,然后将所有需要这些权限的用户放入这个组中。通过定义用户组,在很大程度上简化了管理工作。


用户与组具有的对应关系有:一对一,一对多,多对一,多对多。


用户配置文件

    -/etc/passwd文件:系统用户配置文件,时用户管理中最终要的一个文件。该文件记录了系统中每个用户的一些基本属性,并且对所有用户可读。文件中每一行记录对应一个用户,每行记录又被冒号分割。

        记录格式:用户名:口令:用户标识号:组标识号:注释性描述:主目录:默认shell 

    -/etc/shadow文件:用户影子文件,由于/etc/passwd文件时所有用户都可读的,这就导致了用户的密码容易出现泄露,因此,Linux将用户的密码信息从passwd文件中分离出来,单独放到shadow文件中,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。

        记录格式:用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段

    -/etc/group文件:用户组配置文件,用户组的所有信息都存放在此文件中。
        记录格式:组名:口令:组标识号:组内用户列表

    -/etc/login.defs文件:用来定义创建一个用户时的默认设置,比如制定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。

    -/etc/default/useradd文件:当我们通过useradd命令不加任何参数创建一个用户后,用户默认的主目录一般位于/home下,默认使用的shell是/bin/bash,这是为什么呢,看看/etc/default/useradd这个文件的内容就完全明白了。

    -/etc/skel目录:在创建一个新用户后,会在新用户的主目录下看到类似.bash_profile, .bashrc, .bash_logout等文件,这些文件是怎么来的呢,如果我想让新建立的用户在主目录下默认拥有自己指定的配置文件,该如何设置呢?
/etc/skel目录就是解决这个问题的,/etc/skel目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。


一、用户账号的管理

     用户帐号的管理工作主要设计到用户帐号的添加、修改和删除。

1、添加新的用户账号——useradd命令

    添加用户帐号就是在系统中创建一个新帐号;然后为新帐号分配用户号、用户组、瞩目路和登录Shell等资源。刚添加的帐号是被锁定的,无法使用。

    添加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等.
    Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。


语法:
     useradd 选项 用户名

选项:
  -c comment            指定一段注释性描述。
  -d 目录                   指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  -g 用户组               指定用户所属的用户组。
  -G 用户组 用户组   指定用户所属的附加组。
  -s Shell文件            指定用户的登录Shell。
  -u 用户号               指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  用户名                   指定新用户的登录名。


2、删除用户帐号——userdel命令

    如果一个用户的帐号不再使用,可以从系统中删除。

    删除用户帐号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。


语法:
     userdel 选项 用户名

选项:
     -r,  把用户的主目录一起删除。


3、修改用户帐号——usermod命令

    修改用户帐号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。


语法:

    usermod 选项 用户名

选项:

    同useradd命令中的选项一样。


二、用户口令的管理

    用户帐号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即便是指定空口令。

1.指定和修改口令——passwd命令

    超级用户可以为自己和其他用户指定口令,为其它用户修改时不许要知道原口令;普通用户只能用它修改自己的口令,使用passwd,需要输入原口令。


语法:

    passwd 选项 用户名

选项:

     -l     锁定口令,即禁用账号。
     -u     口令解锁。
     -d     使账号无口令。
     -f     强迫用户下次登录时修改口令。
    如果默认用户名,则修改当前用户的口令。


三、用户组的管理

    每个用户都有一个用户组,系统可以对一个用户组中的所哟用户进行集中管理。

    不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

    组的管理实际上就是对/etc/group文件的更新。

1、用户组的增加——groupadd命令

语法:
     groupadd 选项 用户组
选项:
     -g GID   指定新用户组的组标识号(GID)。
     -o       一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。


2、用户组的修改——groupmod命令

语法:
    groupmod 选项 用户组
选项:
    -g GID           为用户组指定新的组标识号。
    -o               与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
    -n  新用户组     将用户组的名字改为新名字


3、用户组的删除——groupdel命令

语法:
    groupdel 用户组


4、用户在用户组之间的切换——newgrp命令

    用户可以在登录后,使用该命令切换到其他用户组。

语法:

    newgrp 目标用户组


四、用户root权限的赋予方法

1、修改 /etc/sudoers 文件找到下面一行,把前面的注释(#)去掉

        ## Allows people in group wheel to run all commands
        %wheel    ALL=(ALL)    ALL

    然后修改用户,使其属于root组(wheel),命令如下:

        #usermod -g root tommy

    修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。


2、修改 /etc/sudoers 文件找到下面一行,在root下面添加一行,如下所示:

        ## Allow root to run any commands anywhere
        root    ALL=(ALL)     ALL
        tommy   ALL=(ALL)     ALL

    修改完毕,现在可以用tommy帐号登录,然后用命令 sudo – ,即可获得root权限进行操作。


3、修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
    tommy:x:0:33:tommy:/data/webroot:/bin/bash

    修改完毕,现在可以用tommy帐号登录,然后用命令su-  ,即可获得root权限。


    建议使用方法二,不要轻易使用方法三。



fgx292.gif

感谢以下两篇博文的总结:

1.Linux下添加用户并赋予root权限. http://blog.csdn.net/stormbjm/article/details/9086163

2.浅谈Centos用户权限管理. http://www.centoscn.com/CentOS/Intermediate/2013/0803/929.html