一、用户和用户组管理简介:

      linux系统是一个多用户、多任务的操作系统。

      在linux系统中,每个用户都有唯一的身份标识(UID),每一个用户至少属于一个用户组(GID)

 id [OPTION]... [USERNAME]


DESCRIPTION

       Print user and group information for the specified USERNAME, or

       (when USERNAME omitted) for the current user.


       -a     ignore, for compatibility with other versions  显示uID号和gid号


       -Z, --context

              print only the security context of the current user


       -g, --group                                查看用户gid

              print only the effective group ID


       -G, --groups                               查看用户群组ID

              print all group IDs


       -n, --name                                   查看用户名

              print a name instead of a number, for -ugG


       -r, --real                                

              print the real ID instead of the effective ID, wi th -ugG


       -u, --user

              print only the effective user ID

     用户:两类

          根用户(root):唯一的,一般不允许修改名字。

          普通用户:只管理自己的文件,其它需要root用户授权。


二、普通用户的管理:useradd(添加用户)  userdel(删除用户)  usermod(修改用户属性)   与之相关的文件:cat /etc/password  /etc/shadow  /home

    

    useradd详解:

            -c “注释信息” 用户注释信息  如:[root@localhost ~]# useradd test100 -c "cheshi"

                                            test100:x:501:501:cheshi:/home/test100:/bin/bash

            -d  用户登录时系统所使用的目录

            -e  账户失效期限 MM/DD/YY  如:2015年4月30日  04/30/15

            -r  建立系统账户

            -u  用户uid

            -g  用户gid

            -M  不建立用户家目录

            -s  用户的shell  useadd -s /usr/sbin/nologin

            -D  (可以查看用户属性)可以对用户默认属性进行修改;  如:useradd -D 

   案例:添加一用户名为  student uid=1000 gid=1000 家目录=/home/student shell=/bin/bash 账户有效期=2015年10月30日

                                [root@localhost ~]# groupadd -g 1000 student   首先建立1000的用户组

                                [root@localhost ~]# useradd -u 1000 -g 1000 -s /bin/bash -e 10/30/15 student

              注意:指定-g 1000 时,其用户组1000必须事先存在。

                                [root@localhost ~]# tail -l /etc/passwd

                                 test100:x:501:501:cheshi:/home/test100:/bin/bash

                                 student:x:1000:1000::/home/student:/bin/bash

                               [root@localhost ~]# passwd student 指定密码

                               [root@localhost ~]# su student  切换用户

                                [student@localhost root]$  

三、root@localhost /]# cat /etc/passwd

root(用户名):x(密码):0(uid):0(gid):root(注释信息):/root(家目录):/bin/bash(使用的shell)

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

stap-server:x:155:155:Systemtap Compile Server:/var/lib/stap-server:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

ldap:x:55:55:LDAP User:/var/lib/ldap:/sbin/nologin

zabbix:x:500:500::/home/zabbix:/bin/bash

#(表示停用的用户)test100:x:501:501:cheshi:/home/test100:/bin/bash

student(用户名):x(密码):1000(uid):1000(gid):(注释信息):/home/student(家目录):/bin/bash(使用的shell)

[root@localhost /]#


四、[root@localhost /]# cat /etc/shadow  共9个字段,用;分开

root(用户登录名):(影子密码)$6$0brSR4CV$t8s15Y.7HQ.4Qg5bk2wG6JbTwIcMyoqnwg5xpYGsz2Z5UV.mLc2JrTSLfv8wJqcPYghlXu9Fs2mdcbQ5Icbff0:(修改密码的天数)16169:(多少天不能修改密码)0:(多少天需修改密码)99999:(提醒用户修改密码的天数)7:::

bin:*:15980:0:99999:7:::

daemon:*:15980:0:99999:7:::

adm:*:15980:0:99999:7:::

lp:*:15980:0:99999:7:::

stap-server:!!:16168::::::

sshd:!!:16168::::::

tcpdump:!!:16168::::::

ldap:!!:16169::::::

zabbix(用户登录名):(未启动密码,无法登录)!!:16534:0:99999:7:::

test100(用户登录名):(未启用密码,无法登录)!!:16537:0:99999:7:::

student(用户登录名):(影子密码)$6$ChGHEs7X$mrvz2qHoXJSMMWS5UhaVqxBpmJ/yF4XASCfahroYyKgO5wBWm16bHqMTrSUBe0..wxuYX7hcwS34ErhJnadfN.:16537:0:99999:7::16738:

[root@localhost /]#    


五、修改用户账户属性:

     usermod  -c “”   更新用户注释信息

              -d      修改用户家目录

              -e      修改用户账户停用时间  格式MM月/DD日/YY年

              -g      修改用户登录所属的组,即GID

              -u      修改uid

              -s      修改shell

              -l      修改登录时的名字。


六、修改用户密码:root用户除修改自己的密码外,还可以修改其它用户的密码。其它用户只能修改自己的密码。

       passwd  -l 锁定用户不能登录  [root@localhost /]# passwd -l student

               -u 解锁用户          [root@localhost /]# passwd -u student

               -d 删除用户密码       [root@localhost /]# passwd -d student

               -w 设定密码过期前,发出警报


七、删除用户:密切相关的文件 /etc/passwd  /etc/shadow  /etc/group

      userdel+username  删除用户,保留家目录及其相关属性

              -r   删除用户及其家目录

ps -aux grep | "httpd"  查看相关进程。 kill  4001  强制删除进程。


八、用户默认配置文件  /etc/login.defs


   [root@localhost /]# cat /etc/login.defs 

# *REQUIRED*

#   Directory where mailboxes reside, _or_ name of file, relative to the

#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.

#   QMAIL_DIR is for Qmail

#

#QMAIL_DIR Maildir

MAIL_DIR /var/spool/mail   管理员邮箱位置

#MAIL_FILE .mail


# Password aging controls:

#

# PASS_MAX_DAYS Maximum number of days a password may be used.

# PASS_MIN_DAYS Minimum number of days allowed between password changes.

# PASS_MIN_LEN Minimum acceptable password length.

# PASS_WARN_AGE Number of days warning given before a password expires.

#

PASS_MAX_DAYS 30       默认密码可以使用的天数

PASS_MIN_DAYS 30       连续使用的天数

PASS_MIN_LEN 5        密码最小长度

PASS_WARN_AGE 7        密码失效前多少天开始报警


#

# Min/max values for automatic uid selection in useradd

#

UID_MIN  500    自动生成uid最小值

UID_MAX  60000   uid最大值


#

# Min/max values for automatic gid selection in groupadd

#

GID_MIN  500  自动生成gid最小值

GID_MAX 60000   gid最大值


#

# If defined, this command is run when removing a user.

# It should remove any at/cron/print jobs etc. owned by

# the user to be removed (passed as the first argument).

#

#USERDEL_CMD /usr/sbin/userdel_local


#

# If useradd should create home directories for users by default

# On RH systems, we do. This option is overridden with the -m flag on

# useradd command line.

#

CREATE_HOME yes    设定自动创建家目录


# The permission mask is initialized to this value. If not specified, 

# the permission mask will be initialized to 022.

UMASK           077    设定新建文件或目录得权限是077


# This enables userdel to remove user groups if no members exist.

#

USERGROUPS_ENAB yes   如果组内成员为空,自动删除该用户组。


# Use SHA512 to encrypt password.

ENCRYPT_METHOD SHA512 


[root@localhost /]#  


十、root密码恢复。两种方法,一是进入单用户模式  二是进入救援模式  

    (1)当系统启动时,按上下键  按e键,进入编辑模式,输入single(进入单用户模式),esc返回上一级,按b重启,开机后设置新的密码。

    (2)光盘引导启动,启动菜单选择Linux Rescue模式。  启动后用vim编辑器,删除root密码字段,重启,使用passwd重新设置密码。



十一、用户组的管理   /etc/group  /etc/gshadow

    groupadd   -g(GID)  -r(创建小于500的系统组)  如groupadd -g 1000 student 

    修改用户组属性  groupmod  -g(修改gid)  -n(修改用户组名称)  如:groupmod -g 550 -n  director teacher

    删除用户组  groupdel  teacher 

十二、 /etc/group 文件 权限644

      [root@localhost ~]# cat /etc/group

root(用户组名称):x(用户组密码):0(GID):组成员列表

bin:x:1:bin,daemon

daemon:x:2:bin,daemon

sys:x:3:bin,adm

adm:x:4:adm,daemon

tcpdump:x:72:

slocate:x:21:

ldap:x:55:

zabbix:x:500:

test100:x:501:

student(用户组名称):x(用户组密码):1000(GID):(组成员)

[root@localhost ~]#   


十三、 /etc/gshadow 文件 644 

   [root@localhost ~]# cat /etc/gshadow

root(用户组名称):(用户组密码):(用户组管理员账户):(组成员列表)

bin:::bin,daemon

daemon:::bin,daemon

sys:::bin,adm

adm:::adm,daemon

tty:::

disk:::

cgred:!::

stap-server:!::

sshd:!::

tcpdump:!::

slocate:!::

ldap:!::

zabbix:!::

test100:!::

student:!::

[root@localhost ~]# 

 


十四、用户和用户组管理常见问题处理:

   (1)查询当前系统中存在的用户  who

    例如:[root@localhost ~]# who

          root     pts/0        2015-04-12 21:56 (183.228.19.221)

   (2)查询最近一月登录的用户:last

    例如:[root@localhost ~]# last

\root     pts/0        183.228.19.221   Sun Apr 12 21:56   still logged in   

root     pts/1        183.228.19.221   Sun Apr 12 16:14 - 16:20  (00:06)    

root     pts/0        183.228.19.221   Sun Apr 12 15:04 - 16:14  (01:09)    

root     pts/1        183.228.19.210   Sat Apr 11 23:40 - 23:54  (00:13)    

root     pts/2        183.228.19.210   Sat Apr 11 23:16 - 01:50  (02:34)    

root     pts/1        183.228.19.210   Sat Apr 11 23:09 - 23:17  (00:08)    

root     pts/0        183.228.19.210   Sat Apr 11 22:58 - 01:20  (02:21)    

root     pts/0        :0.0             Wed Apr  9 09:51 - down   (00:02)    

root     tty1         :0               Wed Apr  9 09:50 - down   (00:04)    

reboot   system boot  2.6.32-431.el6.i Wed Apr  9 09:49 - 09:54  (00:04)    

root     pts/0        :0.0             Wed Apr  9 09:36 - down   (00:00)    

root     tty1         :0               Wed Apr  9 09:35 - down   (00:01)    

[root@localhost ~]# 



    (3)删除系统预设的一些不必要的账号;


十五、账号管理常用命令:

    (1)id:用于显示当前用户的uid、gid和用户所属组列表

    [root@localhost ~]# id

     uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

    (2)whoami 用户显示当前用户的名称

    [root@localhost ~]# whoami 

       root

    (3)w 显示当前登录用户信息



实验:常见用户共享目录;


    例如:三个用户   student1  student2  student3   共享目录为/home/student

          (1)[root@localhost ~]# groupadd student

          (2)[root@localhost ~]# useradd -u 1001 student1 -g student  创建三个用户并且设置密码

               [root@localhost ~]# useradd -u 1002 student2 -g student

               [root@localhost ~]# useradd -u 1003 student3 -g student

          (3)[root@localhost home]# chmod 770 student   /home/下建立student文件夹,且修改权限为770

          (4)[root@localhost home]# chmod g+s /home/student   使目录组中所有用户具有所有权限

          (5)[root@localhost home]# chgrp student /home/student  设置目录所有权