一、创建用户

管理员用户可以为Linux系统创建用户,其基本命令和相关选项如下表:


# useradd USERNAME 或者是

# adduser USERNAME


选项名

用法

-u UID

指定用户ID,有效范围0-65535

-g GID

指定用户的组ID,有效范围为已有的GID

-c COMMENT

指定用户的注释信息,没有特定的要求

-d PATH

通常和-m一起使用,用来指定用户的家目录

-m

必须为用户强制创建家目录

-M

不为用户创建家目录

-r

创建系统用户, ID号范围为1-499之间的用户

-s PATH

更改用户默认使用的shell语言

-G GID

指定用户的组ID,有效范围为已有的GID;可以有多个,用逗号分隔


下面我们来一一举例介绍创建用户的命令和选项:

1. 按默认法则创建用户

# useradd/adduser USERNAME

此命令可以创建一个新用户,通常情况下,创建用户的同时,系统会自动创建一个和用户同名的组,这个组为用户的私有组,一般而言只有用户一人使用。例如我们创建用户tom 可以使用:

# useradd tom

使用 tail 命令可以查看新创建的用户的相关信息:

# tail -1 /etc/passwd

运行上述命令,显示出的是用户的基本信息,以冒号为分隔符,分开的小段是用户的属性:

Account:Password:UID:GID:Comment:Home:Shell

Account:

Password:

UID:

GID:

Comment:

/home/USERNAME:

PATH/Shell

用户名

密码占位符,密码不存在这里,而是放在/etc/shadow中,通常显示为x

用户ID

用户所属的组ID(基本组)

用户的注释信息,可以由多个,逗号隔开,如电话等

用户的家目录

用户默认使用的shell语言的路径


   # tail -1 /etc/shadow

# tail -1 /etc/group

# tail -1 /etc/gshadow

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除

创建用户是系统会默认为用户创建相关的属性信息。默认情况下,用户的ID500开始,由“上一个用户的UID+1”得到,组ID也是由相同的方式得到。

如我们再创建一个用户,并查看其用户属性信息:

# useradd hadoop

# tail -1 /etc/passwd

14_Linux基础知识及命令————创建、删除用户和组_Linux_02

通常情况下,如果没有为用户指定基本组,且其UID相同的GID未被占用,则UIDGID相同;但若有一个组已经占据了和UID相同的GID,则可能出现GIDUID不一致的情况。

创建用户的默认法则可以归纳为:

UID:已有最大UID+1

GID:已有最大GID+1

注释信息:默认为空

家目录:/home/USERNAME, 与用户名同名

Shell/bin/bash, 此为bash的全路径


2. 定制创建用户

    不使用默认法则创建用户也是可以的,通过添加选项,我们可以定制用户的创建属性。

使用 -u 来指定用户的UIDUID的范围是0-65535, 注意,UID不能重复,例如:

 # useradd -u 1000 ubuntu

 # tail -3 /etc/passwd

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_03

使用 -g 来指定用户的GIDGID的有效范围必须是已经存在的 GID,例如:

# useradd -g 1001 debian   //此命令会报错,因为GID 1001不存在

14_Linux基础知识及命令————创建、删除用户和组_Linux_04


使用 -c 来指定用户的注释信息,此命令没有特定的要求,例如:

# useradd -c Linux Distribution gentoo

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_05


使用 -d 选项来指定用户的家目录,注意,家目录的基名如果不存在,系统会自动创建一个,但是家目录的路径必须存在,例如:

# useradd -d /tmp/user/user1 slackware

此命令会报错,因为/tmp/user不存在,正确的操作方式应该是:

# mkdir /tmp/user

# useradd -d /tmp/user/user1 slackware

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_06


创建用户时,上述选项可以组合使用,例如我们想同时为用户指定UID 和 注释,可以使用以下命令:

# useradd -c Light Weight Distribution -u 2000 archlinux

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_07


使用 -r 选项可以创建系统用户,系统用户的UID号范围为1-499,例如:

# useradd -r sysuser

    # tail -1 /etc/passwd

    # ls /hom

注意,系统用户有家目录的路径,但是当我们使用 ls 命令查看,就会发现系统用户的家目录并不会真正被创建

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_08

使用 -m 选项可以为用户强制创建家目录,例如我们想为系统用户创建家目录时,可以用此选项:

# useradd -rm sysuser1

    # tail -1 /etc/passwd

    # ls /hom

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_09


使用 -M 选项则是强制不为用户创建家目录,例如:

# useradd -M hbase

# !tail

# ls /home

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_10


使用 -s 选项可以用来指定用户的默认shell-s选项后面的参数是shell所在的路径,例如:

# useradd -s /bin/csh bsd

# tail -3 /etc/passwd

14_Linux基础知识及命令————创建、删除用户和组_Linux_11

使用 -G 选项可以为用户创建附加组。-G选项的参数有效范围为已有的GID,可以创建多个,以逗号隔开,例如:

# groupadd agrp


# groupadd bgrp


# useradd -G agrp,bgrp moregrp


# id moregrp


14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_12


二、创建组

创建的组的方式和创建用户基本相同,其基本命令为:

# groupadd GROUPNAME

例如我们想创建组testgrp,可以输入:

# groupadd testgrp

我们可以通过tail 命令来查看 /etc/group 的文件内容,以了解组的相关信息:

# tail /etc/group

行上述命令,显示出的是组的基本信息,以冒号为分隔符,分开的小段是组的属性:


Group_Name:Password:GID:User_List

Group_Name:

Password:

GID:

Uer_List

组名

密码占位符,通常显示为x

ID

以此组为额外组的用户列表,用户间用逗号隔开


14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_13


创建组 groupadd 命令的选项主要有两个,即 -g -r。其中,使用 -g 可以在组创建时为其指定GID

例如我们可以进行以下练习:创建一个用户mandriva,其ID号为2008,基本组为distro,组的ID3003,附加组为linux。操作如下:

# groupadd linux

# groupadd -g 3003 distro

# useradd -u 2008 -g distro -G linux mandriva

# tail -1 /etc/passwd


使用 -r 选项,可以用来创建系统组。

例如我们进行以下操作:创建一个用户fefora,其全名为“Fedora Community”,其基本组为 redhat,且redhat是个系统组,默认的shellcsh

# groupadd -r redhat

# useradd -g redhat -c Fedora Community -s /bin/csh fedora

# tail -1 /etc/group

# tail -1 /etc/passwd


14_Linux基础知识及命令————创建、删除用户和组_Linux_14


三、删除用户

删除用户使用的命令为:

# userdel [-r] USERNAME

如删除用户mongodb,可使用:

# userdel mongodb


注意:删除用户不会删除用户的家目录

如果想将用户及其家目录一起删除,可以使用 -r 进行递归删除:

# ls /home

# userdel -r redis

# ls /home

14_Linux基础知识及命令————创建、删除用户和组_用户创建 删除_15


四、 删除组

    和删除用户类似,删除组并不复杂,其命令为:

    # groupdel GROUP_NAME

    如删除组test2grp,可使用:

      # groupdel test2grp


14_Linux基础知识及命令————创建、删除用户和组_Linux_16