在 Linux 操做系统下,如何添加一个新用户到一个特定的组中?如何同时将用户添加到多个组中?又如何将一个已存在的用户移动到某个组或者给他增长一个组?对于不经常使用 Linux 的人来说,记忆 Linux 那繁多的命令行操做真是件不容易的事。php
在 Linux 中,增长用户或改变用户的组属性可使用 useradd
或者 usermod
命令。useradd
增长一个新用户或者更新默认新用户信息。usermod
则是更改用户账户属性,例如将其添加到一个已有的组中。node
在 Linux 用户系统中存在两类组。第一类是主要用户组,第二类是附加用户组。全部的用户账户及相关信息都存储在 /etc/passwd
文件中,/etc/shadow
和 /etc/group
文件存储了用户信息。linux
新增长一个用户并将其列入一个已有的用户组中须要用到 useradd
命令。若是尚未这个用户组,能够先建立该用户组。shell
命令参数以下:apache
useradd -G {group-name} username
例如,咱们要建立一个新用户 cnzhx 并将其添加到用户组 developers 中。首先须要以 root 用户身份登陆到系统中。先确认一下是否存在 developers 这个用户组,在命令行输入:centos
# grep developers /etc/group
输出相似于:bash
developers:x:1124:
若是看不到任何输出,那么就须要先建立这个用户组了,使用 groupadd
命令:服务器
# groupadd developers
而后建立用户 cnzhx 并将其加入到 developers 用户组:app
# useradd -G developers cnzhx
为用户 cnzhx 设置密码:ssh
# passwd cnzhx
为确保已经将该用户正确的添加到 developers 用户组中,能够查看该用户的属性,使用 id
命令:
# id cnzhx
输出相似于:
uid=1122(cnzhx) gid=1125(cnzhx) groups=1125(cnzhx),1124(developers)
前面命令中用到的大写的 G (-G) 参数就是为了将用户添加到一个附加用户组中,而同时还会为此用户建立一个属于他本身的新组 cnzhx。若是要将该用户同时增长到多个附加用户组中,可使用英文半角的逗号来分隔多个附加组名(不要加空格)。例如,同时将 cnzhx 增长到 admins, ftp, www, 和 developers 用户组中,能够输入如下命令:
# useradd -G admins,ftp,www,developers cnzhx
要增长用户 cnzhx 到组 developers,可使用下面的指令:
# useradd -g developers cnzhx # id cnzhx
输出相似于:
uid=1123(cnzhx) gid=1124(developers) groups=1124(developers)
请注意如前面的示例的区别,这里使用了小写字母 g (-g)做为参数,此时用户的主要用户组再也不是 cnzhx 而直接就是 developers。
小写字母 g (-g)将新增长的用户初始化为指定为登陆组(主要用户组)。此组名必须已经存在。组号(gid)便是此已有组的组号。
将一个已有用户 cnzhx 增长到一个已有用户组 apache 中,使此用户组成为该用户的附加用户组,可使用带 -a 参数的 usermod
指令。-a 表明 append, 也就是将用户添加到新用户组中而没必要离开原有的其余用户组。不过须要与 -G 选项配合使用:
# usermod -a -G apache cnzhx
若是要同时将 cnzhx 的主要用户组改成 apache,则直接使用 -g 选项:
# usermod -g apache cnzhx
若是要将一个用户从某个组中删除,则
gpasswd -d user group
可是这个时候须要保证 group 不是 user 的主组。
1)管理用户(user)的工具或命令
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,能够经过usermod 来修改登陆名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操做,是从/etc/shadow和 /etc/passwd 建立/etc/passwd ,而后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是经过另外一个用户来执行命令(execute a command as another user),su 是用来切换用户,而后经过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,好比sudo 不须要root 密码就能够执行root 赋与的执行只有root才能执行相应的命令;但得经过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也能够不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是同样的;
sudoedit 注:和sudo 功能差很少;
2)管理用户组(group)的工具或命令groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:经过/etc/group和/etc/gshadow 的文件内容来同步或建立/etc/gshadow ,若是/etc/gshadow 不存在则建立;
grpunconv 注:经过/etc/group 和/etc/gshadow 文件内容来同步或建立/etc/group ,而后删除gshadow文件;
将一个用户添加到某个组,便可让此用户拥有该组的权限。好比在配置 VPS 上的 LAMP 服务器的时候,运行网站的 apache 用户修改的文件,若是服务器管理用户 cnzhx(能够经过 ssh 登陆到服务器)须要修改此文件的话,就能够将 cnzhx 加入到 apache 组中达到目的。