咸鱼的鱼

导航

Linux将用户添加到组的指令

原文:https://blog.csdn.net/youmatterhsp/article/details/80549683;                    https://www.cnblogs.com/clicli/p/5943788.html

   https://www.cnblogs.com/jxhd1/p/6528574.html

在 Linux 中,增加用户或改变用户的组属性可以使用 useradd 或者 usermod 命令。useradd增加一个新用户或者更新默认新用户信息。usermod 则是更改用户帐户属性,例如将其添加到一个已有的组中。

在 Linux 用户系统中存在两类组。第一类是主要用户组,第二类是附加用户组。所有的用户帐户及相关信息都存储在 /etc/passwd 文件中,/etc/shadow 和 /etc/group 文件存储了用户信息。

 

Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除与修改。
用户口令的管理。
用户组的管理。

一、Linux系统用户账号的管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
1、添加新的用户账号使用 useradd命令,其语法如下:
代码:
useradd 选项 用户名
其中各选项含义如下:
代码:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名 指定新账号的登录名。
例1:
代码:
# useradd –d /usr/sam -m sam
此命令创建了一个用户sam,
其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。
例2:
代码:
# useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
这里可能新建组:#groupadd group及groupadd adm 
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。
2、删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令,其格式如下:
代码:
userdel 选项 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
例如:
代码:
# userdel sam
此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
3、修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
代码:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用如下选项:
代码:
-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:
代码:
# usermod -s /bin/ksh -d /home/z –g developer sam
此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
4、用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。
指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:
代码:
passwd 选项 用户名
可使用的选项:
代码:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
代码:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
代码:
# passwd sam
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:
代码:
# passwd -d sam

此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:
代码:
# passwd -l sam
新建用户异常:
useradd -d /usr/hadoop -u 586 -m hadoop -g hadoop
1 Creating mailbox file: 文件已存在
删除即可 rm -rf /var/spool/mail/用户名
2 useradd: invalid numeric argument 'hadoop'
这是由于hadoop组不存在 请先建hadoop组
通过cat /etc/passwd 可以查看用户的pass
cat /etc/shadow 可以查看用户名
cat /etc/group 可以查看 组


linux下创建用户(二)
二、Linux系统用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1、增加一个新的用户组使用groupadd命令。 其格式如下:

代码:
groupadd 选项 用户组

可以使用的选项有:
代码:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

例1:

代码:
# groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

例2:

代码:
#groupadd -g 101 group2

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

2、如果要删除一个已有的用户组,使用groupdel命令, 其格式如下:

代码:
groupdel 用户组

例如:

代码:
#groupdel group1

此命令从系统中删除组group1。

3、修改用户组的属性使用groupmod命令。 其语法如下:

代码:
groupmod 选项 用户组

常用的选项有:
代码:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

例1:

代码:
# groupmod -g 102 group2

此命令将组group2的组标识号修改为102。

例2:

代码:
# groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3。

4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。 例如:

代码:
$ newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。


权限分配
分配权限
chown -R hadoop:hadoop /usr/hadoop/

让普通用户拥有root的权限
1.root登录
2.adduser 用户名
3.passwd 用户名
确定密码
4.修改/etc/passwd即可,把用户名的ID和ID组修改成0。

 

 

useradd 示例 – 增加一个新用户到附加用户组

新增加一个用户并将其列入一个已有的用户组中需要用到 useradd 命令。如果还没有这个用户组,可以先创建该用户组。

命令参数如下:

useradd -G {group-name} username

例如,我们要创建一个新用户 cnzhx 并将其添加到用户组 developers 中。首先需要以 root 用户身份登录到系统中。先确认一下是否存在 developers 这个用户组,在命令行输入:

# grep developers /etc/group

输出类似于:

developers:x:1124:

如果看不到任何输出,那么就需要先创建这个用户组了,使用 groupadd 命令:

# groupadd developers

然后创建用户 cnzhx 并将其加入到 developers 用户组:

# useradd -G developers cnzhx

为用户 cnzhx 设置密码:

# 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

useradd 示例 – 增加一个新用户到主要用户组

要增加用户 cnzhx 到组 developers,可以使用下面的指令:

# useradd -g developers cnzhx
# id cnzhx

输出类似于:

uid=1123(cnzhx) gid=1124(developers) groups=1124(developers)

请注意如前面的示例的区别,这里使用了小写字母 g (-g)作为参数,此时用户的主要用户组不再是 cnzhx 而直接就是 developers。

小写字母 g (-g)将新增加的用户初始化为指定为登录组(主要用户组)。此组名必须已经存在。组号(gid)即是此已有组的组号。

usermod 示例 – 将一个已有用户增加到一个已有用户组中

将一个已有用户 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 的主组。

附:管理用户(user)和用户组(group)的相关工具或命令

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 组中达到目的。

 

 

用户管理相关命令
useradd        添加用户
adduser        添加用户
userdel         删除用户
passwd         为用户设置密码
usermod       修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等

 

用户组管理相关命令
groupadd     添加用户组
groupdel      删除用户组
groupmod    修改用户组信息
groups         显示用户所属的用户组
newgrp        切换到相应用用户组


大家看了这么多的命令,可能会很头晕,其实在日常使用和维护中,我们常用的并不是很多,下面我们就把他们重新拆分组合,让学习变的很容易。

 


命令的具体使用
 

1、增加新用户、编辑用户与删除用户

相关命令:useradd, passwd, usermod, userdel

新增用户useradd/adduser

语法:useradd [options] LOGIN
options有很多(可以用useradd –hlep 或者man useradd查看),我们简单介绍几个。


-d 目录       指定用户主目录,(默认是在/home目录下创建和用户名一样的目录)
-g 用户组    指定用户所属的用户组(主组)
-G 用户组   指定用户所属的附加组(这些组必需事先已经增加过了或者是系统中已经存在)
-s Shell      指定用户的登录Shell
-u UID        指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
-c 描述        指定一段注释性描述
-m              使用者目录若不存在则自动建立(默认选项)


我们来看几个实例
实例1,最简单的新增用户
[root@yufei ~]# useradd opser_1
[root@yufei ~]# passwd opser_1
Changing password for user opser_1.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.


注:如果设置的密码过于简单的话,系统会给出上面的提示,其实密码已经设定了。这只是针对root来说的,如果是用户自己设置了过于简单的密码,系统是不会接收的。

[root@yufei ~]# grep opser_1 /etc/passwd
opser_1:x:501:501::/home/opser_1:/bin/bash

用户和组的ID都是501,家目录和使用的SHELL都给出来了。注意,这两个ID可以是不同的。


[root@yufei ~]# grep opser_1 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7:::
用户的密码和关于密码的一些限制也很明白(不明白看上面的例子)

[root@yufei ~]# grep opser_1 /etc/group /etc/gshadow
/etc/group:opser_1:x:501:
/etc/gshadow:opser_1:!::

我们可以看到,在建立用户的同时,也建立了一个和用户同名的用户组

[root@yufei ~]# ls -a /home/opser_1/
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla

 

用户家目录下的内容
[root@yufei ~]# ls -ld /home/opser_1/
drwx——. 4 opser_1 opser_1 4096 Jan  7 14:41 /home/opser_1/ 

实例2,新增用户,并设置UID、组以及附加组并指定一个不可登陆的SHELL
[root@yufei ~]# groupadd -g 600 opser.org
[root@yufei ~]# groupadd user_group
[root@yufei ~]# tail -n 4 /etc/group
yufei:x:500:
opser_1:x:501:
opser.org:x:600:
user_group:x:601:

我们看到,增加的第一个opser.org用户组的时候,我限制了他的GID是600,而第二个没有限制就变成了601了。
[root@yufei ~]# useradd -g user_group -G opser.org -u 580 -s /sbin/nologin opser_2
[root@yufei ~]# passwd opser_2
Changing password for user opser_2.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

我对增加的用户opser_2做了一些限制,而且也对他设置了与opser_1一样的密码(其实这个密码设置了也没有什么用,因为我后面限制了他所使用的SHELL是/sbin/nologin,同样是无法登陆系统),我们来对比
opser_1与opser_2这两个用户的相关文件

[root@yufei ~]# tail -n 2 /etc/passwd
opser_1:x:501:501::/home/opser_1:/bin/bash
opser_2:x:580:601::/home/opser_2:/sbin/nologin
[root@yufei ~]# tail -n 2 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7:::
opser_2:$6$VZTnZmFj$hayn6ycBCy9Mnfpwi13pAUOquwOVTmC/NiUuBViMnCp4PhowNBeYuFsYZGe3flfYhH2GVJhimbDF5o9pn6E5h0:14981:0:99999:7:::
[root@yufei ~]# tail -n 2 /etc/group
opser.org:x:600:opser_2
user_group:x:601:

注:
1、opser_1和opser_2这两个用户虽然密码都是一样,但经过加密后,在shadow中显示的依然是不同的。
2、opser_2这个用户的UID和GID不再是用系统默认的,而是我们指定的。
3、opser_2他的主组的GID是601,也就是user_gruop,同时在opser.org这个组中,也有opser_2这个成员。
4、opser_2这个用户虽然指定了SHELL,但这个SHELL是个特殊的SHELL,是不能登陆系统的。这个(/sbin/nologin)SHELL一般是在增加系统帐户的时候常用。
5、在建立用户的时候会以最后建立的用户UID为参考。如opser_2的UID是580,那么再建立一个用户的时候,就变成581了,而502~579这些就没有用户在使用,那么我想从503开始的话,要怎么来实现?可以通过加上-r参数或者是自己指定。
关于其他的参数,请各位看官自己看帮助来研究。


和用户相关的其他调用文件


通过上面的两个例子,有没有朋友会有这样的疑问,在增加用户的时候,家目录里面的文件是从哪里来的?UID和GID参考了什么?还有shell是根据什么来的?

想知道这些问题,可以用man useradd来查看,你会发现,在这个帮助文件中,会有FILES那一段,除了我们上一节讲的四个文件外,还有

/etc/default/useradd
           Default values for account creation.

/etc/skel/
           Directory containing default files.

/etc/login.defs
           Shadow password suite configuration.


看到了上面的这三个文件的说明,上面的问题是不是已经找到答案了!

想看看是如何规划的,那么就打开文件看看吧。
/etc/default/useradd 通过useradd 添加用户时的规则文件
[root@yufei ~]# vim /etc/default/useradd
# useradd defaults file

GROUP=100                 #主组的GID也是从100开始的
HOME=/home               #把用户的家目录建在/home中,这个目录也可以自己设定
INACTIVE=-1                #是否启用密码过期后是否会失效,-1表示密码永远不会失效。如10,则代表过期10天后才失效。
EXPIRE=                       #帐号终止日期,不设置表示不启用
SHELL=/bin/bash          #所用SHELL的类型
SKEL=/etc/skel              #用户家目录里面文件的参照位置。也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
CREATE_MAIL_SPOOL=yes    #创建用户的邮件池。相当于一个用户的邮箱


/etc/skel/ 增加用户时候,用户家目录下的文件来源。此目录下的文件都是隐藏文件。
[root@yufei ~]# ls -la /etc/skel/
total 36
drwxr-xr-x.  4 root root  4096 Dec 15 22:41 .
drwxr-xr-x. 96 root root 12288 Jan  7 13:40 ..
-rw-r–r–.  1 root root    18 Jun 22  2010 .bash_logout
-rw-r–r–.  1 root root   176 Jun 22  2010 .bash_profile
-rw-r–r–.  1 root root   124 Jun 22  2010 .bashrc
drwxr-xr-x.  2 root root  4096 Jul 14 23:55 .gnome2
drwxr-xr-x.  4 root root  4096 Dec 15 22:35 .mozilla

/etc/login.defs 创建用户时的一些规划。比如创建用户时,是否需要家目录,UID和GID的范围,用户的期限等等。
[root@yufei ~]# vim /etc/login.defs
MAIL_DIR        /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件

PASS_MAX_DAYS   99999        #用户的密码不过期最多的天数
PASS_MIN_DAYS   0            #密码修改之间最小的天数
PASS_MIN_LEN    5            #密码最小长度
PASS_WARN_AGE   7            #警告时间

UID_MIN                   500    #UID从500开始
UID_MAX                 60000    #最大UID为60000

GID_MIN                   500    #GID从500开始
GID_MAX                 60000    #最大GID为60000

CREATE_HOME     yes            #是否创用户家目录

UMASK           077            #创建用户家目录时候的默认权限限制

USERGROUPS_ENAB yes            #用userdel删除用户的时候,如果这个主组中没有其他用户,那么也把这个组给删除
ENCRYPT_METHOD SHA512        #用户密码的加密方式为SHA512

 

通过上面的讲解,我想你已经深入了解了在linux系统中增加用户的过程了吧,这个过程就是:

在 /etc/passwd 里面建立一行与账号相关的数据,包括建立 UID/GID/家目录等;
在 /etc/shadow 里面将此账号的密码相关参数填入,但是尚未有密码;
在 /etc/group 里面加入一个与账号名称一模一样的组名;
在 /home 底下建立一个与账号同名的目录作为用户家目录,且权限为 700
从/etc/skel/中COPY相应的文件到用户的家目录
最后通过passwd命令,把密码加密后写到/etc/shadow中

 

用户密码设置

 

上面我们着重讲了用户创建,没有太多的讲用户的密码设置。
其实在Linux系统中,命令的作用就是改配置文件,而这个passwd命令就是把密码加密后写入/etc/shadow(二栏)中,我们也知道这个文件中的栏位有9栏,那么其它栏要如何通过passwd这个命令来改呢?
看帮助吧

passwd –help
格式:passwd [OPTION...] <accountName>
-l  :是Lock的意思,会将 /etc/shadow 第二栏最前面加上”!”使密码失效
-u :与-l相对,是Unlock的意思
-S :列出密码相关参数,即shadow文件的大部分信息
-n :后面接天数,shadow的第4字段,不可修改密码天数
-x :后面接天数,shadow的第5字段,多长时间内必须要修改密码
-w :后面接天数,shadow的第6字段,密码过期前的警告天数
-i  :后面接日期,shadow 的第7字段,密码失效日期


这些大家自己来实验吧,我除了密码用passwd设置外,其它的相关限制,我更习惯直接在/etc/shadow中修改。
还有一个和passwd相似的命令,那就是chage大家也是自己研究吧!


在这里顺便也说一个技巧,就是我们常常会遇到这样一种情况:比如我下载了某个应用,但这个应该是人家集成好的,这时候别人会给你一个默认的用户和密码,第一次登陆的时候,只有重新设置密码后才登陆。其实这个功能的实现,就是改我们shadow中的第三栏,把这个数值改成0就OK了!有兴趣的朋友可以试试。

 

编辑用户usermod

新增用户已经搞定,但要是对用户的相关信息进行一下修改,除了通过改文件外,还有没有其他的方法了?当然有啊,命令啊,命令的最终目的也是改配置文件。那么下面就来看看如何通过usermod来修改用户的相关0信息。
[root@yufei ~]# usermod -h
Usage: usermod [options] LOGIN

-c :后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明
-d :后面接账号的家目录,即修改/etc/passwd的第六栏
-e :后面接日期,格式是YYYY-MM-DD也就是在/etc/shadow内的第八栏
-f  :后面接天数,修改shadow的第七栏
-g :后面接主群组,修改/etc/passwd的第四个字段,即是GID的字段
-G:后面接附加群组,修改这个使用者能够支持的群组,修改的是/etc/group
-a :与 -G 合用,可增加附加群组的支持而非设定
-l  :后面接账号名称。修改账号名称,/etc/passwd的第一栏
-s :后面接Shell的文件,例如/bin/bash或/bin/csh等等
-u :后面接 UID 数字,修改用户的UID /etc/passwd第三栏
-L :暂时将用户的密码冻结,让他无法登入。其实就是在/etc/shadow的密码栏前面加上了“!”
-U:将/etc/shadow 密码栏的“!”去掉


其实,这个usermod和useradd的用法非常相似,只是增加了用户锁定与解锁。
我们看几个例子


修改用户的说明信息
[root@yufei ~]# grep opser_1 /etc/passwd
opser_1:x:501:501::/home/opser_1:/bin/bash
[root@yufei ~]# usermod -c “opser.org exmple” opser_1
[root@yufei ~]# grep opser_1 /etc/passwd
opser_1:x:501:501:opser.org exmple:/home/opser_1:/bin/bash


设置用户的过期日期
[root@yufei ~]# grep opser_1 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7:::
[root@yufei ~]# usermod -e “2011-02-01″ opser_1
[root@yufei ~]# grep opser_1 /etc/shadow
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7::15006:
我们就简单的给大家介绍这两个参数,其他的自己研究吧!

 


删除用户userdel


这个命令很简单,
[root@yufei ~]# userdel -h
Usage: userdel [options] LOGIN
-f :强制删除,包括用户的一切相关内容,这个参数是危险的参数,不建议大家使用。详细说明看MAN
-r :删除用户的家目录和用户的邮件池
其实这个-r参数就是删除用户的相关配置文件中的信息
用户账号/密码相关参数:/etc/passwd, /etc/shadow
用户相关参数:/etc/group, /etc/gshadow
用户个人文件数据: /home/username, /var/spool/mail/username

不给大家演示了,自己动手实践吧!

 

注:
1、userdel -r 这个命令使用的时候,一定要确认这个用户的所有数据真的不再使用了。
2、建议在使用这个命令之前,查找出这个帐户的所有数据(find / -user username),确认后再进行操作。

 


2、用户组管理

这也和上面的用户管理差不多,只是修改的文件(/etc/group, /etc/gshadow)不同


增加用户组groupadd

[root@yufei ~]# groupadd -h
Usage: groupadd [options] GROUP
-g gid :设置用户组,并指定相应的GID
-r :这个参数和我们的useradd -r 是一样的道理
这个命令的使用,我们前面已经涉及到了,也很简单。
[root@yufei ~]# tail -n 4 /etc/group /etc/gshadow
==> /etc/group <==
yufei:x:500:
opser_1:x:501:
opser.org:x:600:
user_group:x:601:

==> /etc/gshadow <==
yufei:!!::
opser_1:!::
opser.org:!::
user_group:!::

[root@yufei ~]# groupadd new_group_1
[root@yufei ~]# groupadd -r new_group_2
[root@yufei ~]# tail -n 4 /etc/group /etc/gshadow
==> /etc/group <==
opser.org:x:600:
user_group:x:601:
new_group_1:x:602:
new_group_2:x:489:

==> /etc/gshadow <==
opser.org:!::
user_group:!::
new_group_1:!::
new_group_2:!::

 

编辑用户组groupmod

与usermod也是类似的
[root@yufei ~]# groupmod -h
Usage: groupmod [options] GROUP
-g :修改既有的 GID 数字;
-n :修改既有的组名


看个例子
将刚刚上个指令建立的new_group_2名称改为mygroup,GID为666
[root@yufei ~]# groupmod -g 666 -n mygroup new_group_2
[root@yufei ~]# tail -n 4 /etc/group /etc/gshadow
==> /etc/group <==
opser.org:x:600:
user_group:x:601:
new_group_1:x:602:
mygroup:x:666:

==> /etc/gshadow <==
opser.org:!::
user_group:!::
new_group_1:!::
mygroup:!::

注:这个GID建议还是不要随意更改,防止造成系统的GID混乱。

 

删除用户组groupdel

这个命令更简单,没有任何的参数,后面直接跟上想删除的用户组名
注:不能用groupdel -h 或 groupdel –help来查看帮助,只能用man groupdel

[root@yufei ~]# tail -n 2 /etc/passwd /etc/shadow
==> /etc/passwd <==
yufei:x:500:500:yufei:/home/yufei:/bin/bash
opser_1:x:501:501:opser.org exmple:/home/opser_1:/bin/bash

==> /etc/shadow <==
yufei:$6$VdpG9FMuvcR49tD2$zhfYkufmtPd5jjzYG/lSvErSWPusnrqv52ikQxsRs0sYCBwLOakw8v/cz3nksC6p7l8MhePXC7FCXDhv1YbTM/:14958:0:99999:7:::
opser_1:$6$cIFPSKDr$rQV1fCHYfpUBSqgtpUGcO5A.Wp0feoaMxAQn9QgBWTW7outyIsSN6baVCxhlfAnCZD0GDfDWiaV/UWHFgKuqx/:14981:0:99999:7::15006:
[root@yufei ~]# tail -n 5 /etc/group /etc/gshadow
==> /etc/group <==
opser_1:x:501:
opser.org:x:600:
user_group:x:601:
new_group_1:x:602:
mygroup:x:666:

==> /etc/gshadow <==
opser_1:!::
opser.org:!::
user_group:!::
new_group_1:!::
mygroup:!::

 

我们把前面建立和几个用户组给删除
[root@yufei ~]# groupdel mygroup
[root@yufei ~]# groupdel new_group_1
[root@yufei ~]# groupdel opser.org
[root@yufei ~]# groupdel opser_1
groupdel: cannot remove the primary group of user ‘opser_1′
为什么删除不了opser_1用户组呢?因为这个组里面还有用户。所以在删除用户组前,一定要查看这个组中还有没有成员了。

[root@yufei ~]# tail -n 3 /etc/group /etc/gshadow
==> /etc/group <==
yufei:x:500:
opser_1:x:501:
user_group:x:601:

==> /etc/gshadow <==
yufei:!!::
opser_1:!::
user_group:!::

 

用户组的管理员设置gpasswd

[root@yufei ~]# gpasswd
Usage: gpasswd [option] GROUP
   :没有参数,设置用户组密码
-a : 增加用户到用户组中
-d :从用户组中删除用户
-r :删除用户组的密码
-M :设置用户组成员(多成员)
-A :设置用户组管理员(列表)


我们来看个例子
先建立两个用户,并为其设置密码
[root@yufei ~]# useradd test_user1
[root@yufei ~]# passwd test_user1
Changing password for user test_user1.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@yufei ~]# useradd test_user2
[root@yufei ~]# passwd test_user2
Changing password for user test_user2.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

 

查看这两个用户的相关信息
[root@yufei ~]# tail -n 2 /etc/passwd /etc/shadow
==> /etc/passwd <==
test_user1:x:502:502::/home/test_user1:/bin/bash
test_user2:x:503:503::/home/test_user2:/bin/bash

==> /etc/shadow <==
test_user1:$6$EL8UBf7P$gZL3N9GJDL6JhBJnwTZYyiOO8d2zu7Ti9B5eDTP7Hb17AT6Xe4/BuiNVBszO/UoycYIBZZygIH3oA3aKDOSA11:14982:0:99999:7:::
test_user2:$6$tTs0BG90$7LLaUwF9pP/g0h4/IPAwH1x4JE.rSXjYP/wbUq2kxPsXM4/7AaniQdi6G85QIfH6.cspo7OTutqPZblbRUUVT/:14982:0:99999:7:::


查看系统中最后加入的用户组(说法有点牵强)
[root@yufei ~]# tail -n 3 /etc/group /etc/gshadow
==> /etc/group <==
user_group:x:601:
test_user1:x:502:
test_user2:x:503:

==> /etc/gshadow <==
user_group:!::
test_user1:!::
test_user2:!::


把test_user1、test_user2加到user_group组中
[root@yufei ~]# gpasswd -a test_user1 user_group
Adding user test_user1 to group user_group
[root@yufei ~]# gpasswd -a test_user2 user_group
Adding user test_user2 to group user_group
[root@yufei ~]# tail -n 3 /etc/group /etc/gshadow

==> /etc/group <==
user_group:x:601:test_user1,test_user2
test_user1:x:502:
test_user2:x:503:
==> /etc/gshadow <==
user_group:!::test_user1,test_user2
test_user1:!::
test_user2:!::


设置test_user1为user_group组的管理员
[root@yufei ~]# gpasswd -A test_user1 user_group
[root@yufei ~]# tail -n 3  /etc/gshadow
user_group:!:test_user1:test_user1,test_user2
test_user1:!::
test_user2:!::
注:这个用户组的管理员的作用就是,可以像root用户一样来管理用户组中其他成员。


设置user_group的密码
[root@yufei ~]# gpasswd user_group
Changing the password for group user_group
New Password:
Re-enter new password:
[root@yufei ~]# tail -n 3  /etc/gshadow
user_group:$6$2UZWz/O32$vViBQd.Bu8y.RfUbH/9QFYxqN.t31u7r2PztjfysgnKsJ4SUFBvtc1qg7N89bqBRpqUG1fQNno5ij0ja4B/3M1:test_user1:test_user1,test_user2
test_user1:!::
test_user2:!::

 

切换用户组newgrp

该命令将当前用户切换到相应的用户组
注:前提条件是这个用户组要是该用户的主组或附加组。

 

 

如何在linux下使用userdel和 groupdel删除用户和用户组


userdel很简单,只有一个参数可选 -r ;如果加参数-r ,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;比如我们现在有个用户murray,其家目录位于/var目录中,现在我们来删除这个用户

userdel murray 注:删除用户murray,但不删除其家目录及文件;
userdel -r murray 注:删除用户murray,其家目录及文件一并删除;

警告: 请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份;
其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd 是极为重要的文件,可能您一不小心会操作失误;

groupdel 是用来删除用户组的;
语法格式:groupdel 用户组
groupdel admin

 

 


debian添加删除用户

 


增加普通用户命令: 
adduser abc

passwd abc

exit

用abc登录

/etc/passwd中保存了用户信息

LINUX创建用户的命令 
useradd -g test -d /home/test1 -s /etc/bash -m test1 
注解:-g 所属组 -d 家目录 -s 所用的SHELL 
删除用户命令 
userdel -r test1 
创建密码命令 
passwd

创建新用户

useradd命令(也能够使用adduser)用来创建新的用户帐号,其命令格式如下: 
表4—19 useradd命令常用选项
常用现象
意 义
-d
配置新用户的登陆目录
-e
配置新用户的停止日期,日期格式为MM/DD/YY
-f
帐户过期几日后永久停权。当值为0时帐号则立即被停权。而当值为-1时则关闭此功能。预设值为-1
-g
使新用户加入群组
-G
使新用户加入一个新组。每个群组使用逗号“,”隔开,不能够夹杂空白字 
-s
指定新用户的登陆Shell
-u
设定新用户的ID值

成功创建一个新用户以后,在/etc/passwd文档中就会增加一行该用户的信息,其格式如下:
〔用户名〕:〔密码〕:〔UID〕:〔GID〕:〔身份描述〕:〔主目录〕:〔登陆Shell〕
其中个字段被冒号“:”分成7各部分。
由于小于500的UID和GID一般都是系统自己保留,不用做普通用户和组的标志,所以新增加的用户和组一般都是UID和GID大于500的。
例如使用如下命令:

[email=root@localhost]root@localhost[/email]
root〕# useradd user1
将会创建一个名为userl的用户,关于用户管理命令已介绍过,在此也不做更多的介绍了。

4.6.2 配置和修改用户口令passwd

passwd命令用来配置和修改用户命令,只有终极用户和用户自己能够修改密码,其他的普通用户没有修改其他用户密码的权利。其命令如下:
# passwd〔用户名〕
为避免输入密码是被人注意到有多少位,Linux并不采用类似Windows的密码回显〔显示为*号〕,所以,输入的这些字符是看不见的。例如,为新建的userl用户配置密码可使用如下命令:

[email=root@localhost]root@localhost[/email]
root〕# passwd user1
根据系统的提示信息输入两次密码,系统会显示:
passwd ::all authentication tokens updated successfully
表示修改密码成功了。新建用户的工作只有在该用户配置了口令后才算完成,否则无法使用该用户名登陆。

4.6.3 修改用户信息usermod

usermod命令用来修改用户信息,其命令格式如下:
# usermod〔选项〕〔用户名〕

表4-20 usermod命令常用选项
常用选项
意 义
-d
更新使用者新的登陆目录
-e
配置新用户的停止日期,日期格式为MM/DD/YY
-f
帐户过期几日后永久停权。当值为0时帐号则立即被停权。而当值为-1时则关闭此功能。预设值为-1
-g
更新使用者新用户加入群组
-G
定义使用者为一堆groups的成员。每个群组使用“??”隔开,不能够夹杂空白字
-l
变更用户登陆时的名称,同时使用者目录名也会跟着更动成新的名称
-s
指定新用户Shell
-u
用户ID值,必须为唯一的ID值。用户目录树下所用的文档目录其userID会自动变更,放在拥护目录外的文档则要自行手动更动
例如,下面的命令修改用户信息:

[email=root@localhost]root@localhost[/email]
root〕# usermod –d/home/user2 –s/bin/bash user2
将用户名user2的主目录路径配置在/home/user1,登陆的Shell配置为/usr/bin/gcc。
一般情况下usermod命令会参照命令指令的部分修改用户帐号信息。但usermod不允许改变正在线上的使用者帐号名称,因此,当用usermod来改变用户帐号信息时,必须确认这名没在电脑上执行任何程式。 
4.6.4  新建组群groupadd

groupadd命令用来建立新的用户组,其命令格式如下:
# groupadd〔选项〕〔用户名称〕
常用选项有:
-g:GID值。除非使用-o参数不然该值必须是唯一,不可相同,数值不可为负。
GID值预设为最小不得小于500而逐次增加。0—499传统上是保留系统帐号使用。
-f:新增的一个已存在的群组帐号,系统会出现错误讯息然后结束groupadd.
假如是这样的情况,不会新增这个群组(假如是这个情况,系统不会在新增一次)。也可同时加上-g选项,当您加上一个GID时,此时GID就不用是唯一值, 可不加-o参数,建好的群组会显示建立后的结果(adding a group as neither –g or –o options were specified),这是Red Hat Linux额外增设的选项。 
4.6.5 删除用户userdel

userdel命令用来删除已存在的用户及相关的文档,其命令格式如下:
# userdel 〔选项〕用户名
userdel命令的常用选项:
-r将用户目录下的文档一并删除。在其他位置上的文档也将一一找出并删除。
Userdel不允许移除正在线上的用户帐号,因此,假如想删除这类用户帐号,必须先杀掉用户在系统上运行的程式才能进行帐号删除。

4.6.6 删除群组groupdel

groupdel命令用来删除已存在的用户组,其命令格式如下:
# groupdel组名
同userdel类似,假如有任何一个组内的用户在上线,就不能移除该用户组,因此,假如组内有用户在线的话,最好先移出该用户,然后在删除该用户。

4.6.7 用户间转换su

su 命令常用于不同用户间转换。其命令格式如下: 
# su〔用户名〕
su命令的常见用法是变成跟用户或终极用户,假如发出不带用户名的su命令,则系统提示输入根口令,输入之后则可换为根用户。假如登陆为根用户,则能够用su命令成为系统上任何用户而无需口令。
例如,假如登陆为user1,要转换为user2,只要用如下命令:
# su user2
然后系统提示输入user2口令,输入正确的口令之后就能够转换到user2。完成之后就能够用exit命令返回到user1。

4.6.8 查看当前在线用户who

who命令主要用于查看当前在线上的用户情况。这个命令很有用。假如用户想和其他用户建立即使通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。
又如,系统管理员希望监控每个登陆的用户此时此刻的所作所为,也要使用who命令。Who命令的常用命令格式和常用选项如下:
# who〔选项〕
命令who常用命令选项如表4-21所示。
表 4-21 命令who常用命令选项
常用选项
意 义
-a
显示任何用户的任何信息
-m
显示运行该程式的用户名,和“who am I”的作用相同
-q
只显示用户的登陆帐号和登陆用户的数量,该选项优先级高于其他任何选项
-u
在登陆用户后面显示该用户最后一次对系统进行操作距今的时间
-H
显示列标题

任何的选项是可选的,例如,使用命令:

[email=root@localhose]root@localhose[/email]
root〕# who-aH
其中主标题的含义如下表4—22所示。
表4-22 who输出常用标题含义
标题
含义
USER
用户登陆
LINE
用户登陆使用终端
TIME
用户登陆时间
LDIE
用户空闲时间,即至进行操作的时间
PID
用户登陆shell的进程ID

也能够单独使用who命令,这时将显示登陆用户另、使用终端设备连同登陆到系统的时间三项内容

 

 

linux (debian)查看和添加用户或用户组

1、Linux里查看所有用户
linux里,并没有像windows的net user,net localgroup这些方便的命令来管理用户.
 
Xwindows界面的就不说了.
 
(1)在终端里.其实只需要查看 /etc/passwd文件就行了.
(2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户.
 
或者用cat /etc/passwd
 
2、用户管理命令
 
useradd 注:添加用户
添加用户以后,会相应的在 /home目录下创建关于该用户的一个文件夹(useradd tuping)
 
 
        给linux增加一个和root相同权限的用户
#useradd -u 0 -o -g 0 username使用 -o参数可以允许建立相同id的用户

增加普通用户命令: 
adduser abc

passwd abc

exit

用abc登录

/etc/passwd中保存了用户信息

LINUX创建用户的命令 
useradd -g test -d /home/test1 -s /etc/bash -m test1 
注解:-g 所属组 -d 家目录 -s 所用的SHELL 
删除用户命令 
userdel -r test1 
创建密码命令 
passwd

1.添加用户

  添加用户的命令为useradd,假设我们添加一个名字为testuser的用户,设置其登录Shell,设置它的其他属性:

  useradd �Cs /bin/bash �CG thiz �Cd /home/testuser testuser

  passwd testuser

  关于useradd的详细帮助可以在man useradd中得到。这里-s参数用来指定用户的启动Shell,如果不希望给用户Shell的许可权,就在/etc/Shells中添加 /dev/null和/usr/bin/passwd,然后指定Shell为/dev/null或者/usr/bin/passwd。第一种情况是根本不 允许用户登录(例如该用户为邮件账号,只允许收发邮件);第二种是只允许登录进来修改密码。-G用来指定用户在属于添加的testuser用户组的同时, 也属于thiz用户组。-d用来指定用户的主目录位置, 这里指定为默认位置/home/testuser(当然也可以不指定,默认创建/home/testuser,并将用户主目录指向该目录)。添加用户以后 就需要使用 passwd 命令为其设置密码。

  对于已经添加的用户,需要修改其属性,可以使用命令usermod,也可以在man usermod中得到更多信息。

  使用Webmin,进入系统信息的用户管理模块。

2.删除用户

  删除用户可以通过命令userdel来完成,这依赖于系统所安装的软件。

  # userdel testuser

  不过需要注意的是删除用户并不会删除为该用户创建的主目录,这样是因为该目录中还有可能保存着有用的文件,如果确信该用户的主目录没有需要的文件了,需要手工删除其主目录,例如:

  # rm -r  /home/testuser

  

  3.修改密码

  修改密码可以使用命令方式:

  # passwd username

  即可对用户密码进行修改。当然在Webmin中提供了修改用户密码的功能,只要选择系统中Change Passwords模块,就会进入修改密码模块。

posted on 2019-05-01 18:46  Holy_Shit  阅读(18201)  评论(0编辑  收藏  举报