Linux用户和组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个惟一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改
  • 用户口令的管理
  • 用户组的管理

 

用户管理

1.用户创建

创建用户用useradd或者adduser命令(在CentOS系统中adduser是useradd的软链接)

命令语法

useradd [options] LOGIN
useradd -D
useradd -D [options]

命令选项

-u : UID
-o : 配合-u 选项,不检查UID的唯一性
-g : GID:指明用户所属基本组,可为组名,也可以GID
-c "COMMENT": 用户的注释信息
-d : HOME_DIR: 以指定的路径(不存在)为家目录
-s : SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中
-G : GROUP1[,GROUP2,...]:为用户指明附加组,组须事先存在
-N : 不创建私用组做主组,使用users组做主组
-r : 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
-m : 创建家目录,用于系统用户
-M : 不创建家目录,用于非系统用户
-D : 显示或更改默认的 useradd 配置,默认值在/etc/default/useradd文件中

示例

创建nginx用户,其UID为80,家目录为 /var/www/nginx (不创建),shell类型为 /sbin/nologin,备注信息为 Web Services

[root@centos7 ~]# useradd -u 80 -d /var/www/nginx -M -s /sbin/nologin -c "Web Services" nginx

2.查看用户信息

使用id命令查看用户相关信息

命令语法

id [OPTION]... [USER]

命令选项

-u :查看UID
-g :查看基本组的GID
-G :查看所有组的GIO
-n :和上面的选项组合使用,用于显示名称,而非id号

示例

[root@centos7 ~]# id chen
uid=1000(chen) gid=1000(chen) groups=1000(chen)

使用finger命令也能查看用户信息(如未安装请使用 yum install finger -y 安装)

[root@centos7 ~]# finger chen
Login: chen                       Name: 
Directory: /home/chen                   Shell: /bin/bash
Last login Sat Jul 28 10:54 (CST) on pts/0
No mail.
No Plan.

3.切换用户

使用 su 命令可以切换用户或以其他用户身份执行命令

命令语法

su [options] [-] [USER [arg]...]

命令选项

- 或 -l :切换用户
-c ‘COMMAND’ :切换身份执行命令

切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码

示例

[root@centos7 ~]# su chen -c 'pwd'
/root
[root@centos7 ~]# su - chen -c 'pwd'
/home/chen

4.用户属性修改

(1)使用usermod来修改用户的用户信息

命令语法

usermod [options] LOGIN

命令选项

-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字;
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限

示例

修改centos用户的登录名为redhat,UID为10086,家目录为 /home/reahat 并移动原家目录,注释信息为 'redhat distribution,white house,911,119',附加组为 chen

[root@centos7 ~]# usermod -u 10086  -d /home/reahat -m -l redhat -c 'redhat distribution,white house,911,119' -G chen centos

[root@centos7 ~]# id redhat
uid=10086(redhat) gid=1002(centos) groups=1002(centos),1000(chen)
[root@centos7 ~]# finger redhat
Login: redhat                     Name: redhat distribution
Directory: /home/reahat                 Shell: /bin/bash
Office: white house, 911        Home Phone: 119
Never logged in.
No mail.
No Plan.

(2)使用 chfn 命令能修改用户的注释信息

命令语法

chfn [options] [username]

命令选项

-f <full-name>  :  设置全名
-o <office>     :  设置办公地址
-p <phone>      :  设置办公电话
-h <phone>      :  设置家庭电话

示例

不使用选项的 chfn 则是交互式更改用户备注信息

[root@centos7 ~]# chfn redhat
Changing finger information for redhat.
Name []: Redhat         
Office []: White House
Office Phone []: 911
Home Phone []: 119

Finger information changed.

(3)使用 chsh 可以修改用户的shell

[root@centos7 ~]# chsh -s /bin/sh redhat
Changing shell for redhat.
Shell changed.

5.用户删除

使用 userdel 命令来删除用户

命令语法

userdel [options] LOGIN

命令选项

-f : 强制删除用户,即使用户当前已登录
-r : 删除用户家目录和邮件池

示例

[root@centos7 ~]# userdel -r redhat

 6.批量新建用户

使用 newusers 命令可以批量新建用户

其用法是 newusers FILE ,FILE的格式和  /etc/passwd 格式一样

[root@centos7 ~]# cat user_list 
ubuntu:x:1200:1200::/home/ubuntu:/bin/bash
suse:x:1300:1300::/home/suse:/bin/bash
debian:x:1400:1400::/home/debian:/bin/bash
centos:x:1500:1500::/home/centos:/bin/bash
freebsd:x:1600:1600::/home/freebsd:/bin/bash

[root@centos7 ~]# newusers user_list 

 

 

密码管理

1.用户密码修改

使用 passwd 命令修改用户密码

命令用法

passwd [OPTION...] <accountName>

命令选项

-d : 删除指定用户密码
-l : 锁定指定用户
-u : 解锁指定用户
-e : 强制用户下次登录修改密码
-f : 强制操作
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码

示例

[root@centos7 ~]# echo 'redhat' | passwd --stdin chen
Changing password for user chen.
passwd: all authentication tokens updated successfully.

2.用户密码策略修改

使用 chage 修改用户密码策略

命令语法

chage [options] LOGIN

命令选项

-d LAST_DAY : 最近一次修改密码的时间
-E EXPIRE_DATE : 帐号到期的时间
-I INACTIVE : 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-m MIN_DAYS : 密码可更改的最小天数,为零时代表任何时候都可以更改密码
-M MAX_DAYS : 密码保持有效的最大天数
-W WARN_DAYS : 用户密码到期前,提前收到警告信息的天数
-l : 例出当前的设置

示例

[root@centos7 ~]# chage -m 3 -M 42 -I 5 chen
[root@centos7 ~]# chage -l chen
Last password change                    : Jul 28, 2018
Password expires                    : Sep 08, 2018
Password inactive                    : Sep 13, 2018
Account expires                        : never
Minimum number of days between password change        : 3
Maximum number of days between password change        : 42
Number of days of warning before password expires    : 7

 3.批量修改用户密码

使用 chpasswd 命令可以批量修改用户密码

其用法是 chpasswd < FILE,FILE的格式是  usename:password

[root@centos7 ~]# cat passwd_list 
ubuntu:ubuntu
suse:suse
debian:debian
centos:centos
freebsd:freebsd

[root@centos7 ~]# chpasswd < passwd_list 

 

组管理

1.组创建

使用 groupadd 命令创建组

命令语法

groupadd [options] GROUP

命令选项

-g GID: 指明GID号,[GID_MIN, GID_MAX]
-r : 创建系统组 。CentOS 6: ID<500,CentOS 7: ID<1000
-K KEY=VALUE :不使用 /etc/login.defs 中的默认值

示例

[root@centos7 ~]# groupadd -r -g 306 mysql

 2.组属性修改

使用 groupmod 命令来修改组属性

命令语法

groupmod [options] GROUP

命令选项

-n group_name: 新名字
-g GID: 新的GID

示例

[root@centos7 ~]# groupmod -g 1008 -n test1 test

 3.组密码修改

使用 gpasswd 修改组密码

命令用法

gpasswd [option] GROUP

命令选项

-a : 添加用户到组
-d : 从组删除用户
-A : 指定管理员
-M :  指定组成员
-r : 删除密码
-R : 限制用户登入组,只有组中的成员才可以用newgrp加入该组

示例

为 test1 设置组密码

[root@centos7 ~]# gpasswd test1
Changing the password for group test1
New Password: 
Re-enter new password: 

将 chen 设为 test1 组的管理员

[root@centos7 ~]# gpasswd -A chen test1

以 chen 的身份把 redhat 用户加入 test1 组

[root@centos7 ~]# su - chen -c 'gpasswd -a redhat test1'
Adding user redhat to group test1

4.切换基本组

使用 newgrp 命令临时切换基本组,如果用户本不属于此组,则需要组密码

[chen@centos7 ~]$ id chen
uid=1000(chen) gid=1000(chen) groups=1000(chen)
[chen@centos7 ~]$ touch /tmp/f1
[chen@centos7 ~]$ ls -l /tmp/f1
-rw-rw-r-- 1 chen chen 0 Jul 28 15:30 /tmp/f1
[chen@centos7 ~]$ newgrp test1
Password: 
[chen@centos7 ~]$ touch /tmp/f2
[chen@centos7 ~]$ ls -l /tmp/f2
-rw-r--r-- 1 chen test1 0 Jul 28 15:31 /tmp/f2

5.更改和查看组成员

使用 groupmems 命令更改和查看组成员

groupmems [options] [action]

命令选项

-g GroupName: 更改为指定组

动作

用户和组的相关配置文件

/etc/passwd:用户及其属性信息(名称、UID、基本组ID等等),其格式如下

用户名:密码占位符:UID:GID:用户的注释信息:主目录:默认shell

/etc/group:组及其属性信息,其格式如下

组名:组密码占位符:GID:以当前组为附加组的用户列表(分隔符为逗号)

/etc/shadow:用户密码及其相关属性,其格式如下

用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限:最大密码使用期限:密码警告时间段:密码禁用期:账户过期日期:保留字段

/etc/gshadow:组密码及其相关属性,其格式如下

组名:加密了的组密码:组管理者:组内用户列表  

可以通过直接修改上述4个文件来修改用户和组的属性

使用 vipw 命令可以编辑/ etc/passwd 文件, vigr 命令可以编辑  /etc/group 文件

使用 pwck 命令来验证系统认证文件 /etc/passwd 和 /etc/shadow 的内容和格式的完整性

使用 grpck 命令来验证系统认证文件 /etc/group 和 /etc/gshadow 的内容和格式的完整性

除了文本查看工具外,还可以使用 getent 命令来查看上面4个配置文件,其用法是

getent passwd|shadow|group|gshadow [NAME]

[root@centos7 ~]# getent passwd ubuntu
ubuntu:x:1200:1200::/home/ubuntu:/bin/bash


[root@centos7 ~]# getent group suse
suse:x:1300:

/etc/default/useradd  : 新建用户的默认配置,可以用 useradd -D 显示或更改

/etc/login.defs  : 新建用户和组的默认设置

/etc/skel/  : 用户家目录配置的模板文件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-07-28 16:30  独孤柯灵  阅读(428)  评论(0编辑  收藏  举报