一、创建用户
管理员用户可以为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
创建用户是系统会默认为用户创建相关的属性信息。默认情况下,用户的ID从500开始,由“上一个用户的UID+1”得到,组ID也是由相同的方式得到。
如我们再创建一个用户,并查看其用户属性信息:
# useradd hadoop
# tail -1 /etc/passwd
通常情况下,如果没有为用户指定基本组,且其UID相同的GID未被占用,则UID和GID相同;但若有一个组已经占据了和UID相同的GID,则可能出现GID与UID不一致的情况。
创建用户的默认法则可以归纳为:
UID:已有最大UID+1
GID:已有最大GID+1
注释信息:默认为空
家目录:/home/USERNAME, 与用户名同名
Shell:/bin/bash, 此为bash的全路径
2. 定制创建用户
不使用默认法则创建用户也是可以的,通过添加选项,我们可以定制用户的创建属性。
使用 -u 来指定用户的UID,UID的范围是0-65535, 注意,UID不能重复,例如:
# useradd -u 1000 ubuntu
# tail -3 /etc/passwd
使用 -g 来指定用户的GID,GID的有效范围必须是已经存在的 GID,例如:
# useradd -g 1001 debian //此命令会报错,因为GID 1001不存在
使用 -c 来指定用户的注释信息,此命令没有特定的要求,例如:
# useradd -c “Linux Distribution” gentoo
使用 -d 选项来指定用户的家目录,注意,家目录的基名如果不存在,系统会自动创建一个,但是家目录的路径必须存在,例如:
# useradd -d /tmp/user/user1 slackware
此命令会报错,因为/tmp/user不存在,正确的操作方式应该是:
# mkdir /tmp/user
# useradd -d /tmp/user/user1 slackware
创建用户时,上述选项可以组合使用,例如我们想同时为用户指定UID 和 注释,可以使用以下命令:
# useradd -c “Light Weight Distribution” -u 2000 archlinux
使用 -r 选项可以创建系统用户,系统用户的UID号范围为1-499,例如:
# useradd -r sysuser
# tail -1 /etc/passwd
# ls /hom
注意,系统用户有家目录的路径,但是当我们使用 ls 命令查看,就会发现系统用户的家目录并不会真正被创建
使用 -m 选项可以为用户强制创建家目录,例如我们想为系统用户创建家目录时,可以用此选项:
# useradd -rm sysuser1
# tail -1 /etc/passwd
# ls /hom
使用 -M 选项则是强制不为用户创建家目录,例如:
# useradd -M hbase
# !tail
# ls /home
使用 -s 选项可以用来指定用户的默认shell,-s选项后面的参数是shell所在的路径,例如:
# useradd -s /bin/csh bsd
# tail -3 /etc/passwd
使用 -G 选项可以为用户创建附加组。-G选项的参数有效范围为已有的GID,可以创建多个,以逗号隔开,例如:
# groupadd agrp
# groupadd bgrp
# useradd -G agrp,bgrp moregrp
# id moregrp
二、创建组
创建的组的方式和创建用户基本相同,其基本命令为:
# 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 | 以此组为额外组的用户列表,用户间用逗号隔开 |
创建组 groupadd 命令的选项主要有两个,即 -g 和 -r。其中,使用 -g 可以在组创建时为其指定GID。
例如我们可以进行以下练习:创建一个用户mandriva,其ID号为2008,基本组为distro,组的ID为3003,附加组为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是个系统组,默认的shell为csh:
# groupadd -r redhat
# useradd -g redhat -c “Fedora Community” -s /bin/csh fedora
# tail -1 /etc/group
# tail -1 /etc/passwd
三、删除用户
删除用户使用的命令为:
# userdel [-r] USERNAME
如删除用户mongodb,可使用:
# userdel mongodb
注意:删除用户不会删除用户的家目录
如果想将用户及其家目录一起删除,可以使用 -r 进行递归删除:
# ls /home
# userdel -r redis
# ls /home
四、 删除组
和删除用户类似,删除组并不复杂,其命令为:
# groupdel GROUP_NAME
如删除组test2grp,可使用:
# groupdel test2grp