linux用户和用户组(2)-操作部分

目录

 

1.Linux:useradd命令详解:添加新的系统用户

2.Linux passwd命令:修改用户密码

3.Linux usermod命令:修改用户信息   

4. Linux  chage命令:修改用户密码状态

5.Linux userdel命令:删除用户   (只有root用户才有权限)

6 Linux id命令:查看用户的UID和GID

7 Linux su命令 :用户间切换(包含su和su - 的区别)

8 Linux whoami 和who ami命令用法和区别

9 Linux  groupadd命令: 添加用户组

10 Linux groupmod命令:修改用户组

11 Linux groupdel命令 : 删除用户组

12 Linux  gpasswd命令: 把用户添加到用户组或从组中删除

13 Linux newgrp命令:切换用户有效组


1.Linux:useradd命令详解:添加新的系统用户

命令格式: useradd [选项] 用户名

                                                                          useradd命令常用选项     

选项含义
-u UID手工指定用户UID,z注意不要小于500
-d 主目录手工指定用户主目录(使用绝对路径),如果手工指定,一定要注意权限问题
-c 用户说明

手工指定/etc/passwd文件中第五个字段的描述性内容,可随意配置

 

-g  组名手工指定用户初始组。一般以和用户名相同的组作为用户的初始组,在创建用户时会默认建立初始组。一旦手动指定,则系统将不会在创建此默认的初始组目录。
-G 组名指定用户的附加组。我们把用户加入其他组,一般都使用附加组;
-s shell手工指定用户的登陆shell,默认是/bin/bash
-e 日期指定用户的失效曰期,格式为 "YYYY-MM-DD"。也就是 /etc/shadow 文件的第八个字段;
-o允许创建的用户的 UID 相同。例如,执行 "useradd -u 0 -o usertest" 命令建立用户 usertest,它的 UID 和 root 用户的 UID 相同,都是 0;
-m建立用户时强制建立用户的家目录。在建立系统用户时,该选项是默认的;
-r创建系统用户,也就是 UID 在 1~499 之间,供系统程序使用的用户。由于系统用户主要用于运行系统所需服务的权限配置,因此系统用户的创建默认不会创建主目录。

案例分析:

[root@localhost ~]# useradd lamp 

命令执行过程:

 (1)在/etc/passwd中创建一条与lamp用户相关的数据

           lamp:x:500:500::/home/lamp:/bin/bash

(2)在/etc/shadow中创建一条与lamp密码相关的数据

         lamp:!!:15710:0:99999:7:::

       这个用户还没有设置密码,所以密码字段是 "!!",代表这个用户没有合理密码,不能正常登录

 (3)在/etc/group中创建一行与用户名一模一样的群组

            lamp:x:500:

  (4)在/etc/gshadow中创建一行与新增群组相关的密码信息

    lamp:!::

 (5)默认创建用户主目录和邮箱

  [root@localhost ~]#ll -d /home/lamp/

  drwx------ 3 lamp lamp 4096 1月6 00:19 /home/lamp/

  [root@localhost ~]#ll /var/spod/mail/lamp

 -rw-rw---- 1 lamp mail 0 1月6 00:19 /var/spool/mail/lamp

(6)将 /etc/skel 目录中的配置文件复制到新用户的主目录中

useradd在创建用户时默认参考的文件有两个:/etc/dafault/useradd和/etc/login/defs

查看新建用户的默认值:useradd -D

                                                                 /etc/default/useradd文件内容

参数含义
GR0UP=100这个选项用于建立用户的默认组,也就是说,在添加每个用户时,用户的初始组就是 GID 为 100 的这个用户组。但 CentOS 并不是这样的,而是在添加用户时会自动建立和用户名相同的组作为此用户的初始组。也就是说这个选项并不会生效。  Linux 中默认用户组有两种机制:一种是私有用户组机制,系统会创建一个和用户名相同的用户组作为用户的初始组;另一种是公共用户组机制,系统用 GID 是 100 的用户组作为所有新建用户的初始组。目前我们采用的是私有用户组机制。
HOME=/home指的是用户主目录的默认位置,所有新建用户的主目录默认都在 /home/下,刚刚新建的 lamp用户的主目录就为 /home/lamp/。
INACTIVE=-1指的是密码过期后的宽限天数,也就是 /etc/shadow 文件的第七个字段。这里默认值是 -1,代表所有新建立的用户密码永远不会失效。
EXPIRE=表示密码失效时间,也就是 /etc/shadow 文件的第八个字段。默认值是空,代表所有新建用户没有失效时间,永久有效。
SHELL=/bin/bash表示所有新建立的用户默认 Shell 都是 /bin/bash。
SKEL=/etc/skel在创建一个新用户后,你会发现,该用户主目录并不是空目录,而是有 .bash_profile、.bashrc 等文件,这些文件都是从 /etc/skel 目录中自动复制过来的。因此,更改 /etc/skel 目录下的内容就可以改变新建用户默认主目录中的配置文件信息。
CREATE_MAIL_SPOOL=yes指的是给新建用户建立邮箱,默认是创建。也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 /var/spool/mail/ 目录下,和用户名相同。例如,lamp1 的邮箱位于 /var/spool/mail/lamp1。

修改/etc/default/useradd

格式:useradd -D 命令可用选项

选项+参数含义
-b HOME设置所创建的主目录所在的默认目录,只需用目录名替换 HOME 即可,例如 useradd -D -b /gargae。
-e EXPIRE设置密码失效时间,EXPIRE 参数应使用 YYYY-MM-DD 格式,例如 useradd -D -e 2019-10-17。
-f INACTIVE设置密码过期的宽限天数,例如 useradd -D -f 7。
-g GROUP设置新用户所在的初始组,例如 useradd -D -g bear。
-s SHELL设置新用户的默认 shell,SHELL 必须是完整路径,例如 useradd -D -s /usr/bin/csh。

2.Linux passwd命令:修改用户密码

格式:passwd [选项】用户名

  • -S:查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
  • -l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!",使密码失效。仅 root 用户可用;
  • -u:解锁用户,和 -l 选项相对应,也是只能 root 用户使用;
  • --stdin:可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
  • -n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
  • -x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
  • -w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
  • -i 日期:设置用户密码过期后的宽限时间,对应 /etc/shadow 文件中各行密码的第 7 个字段。

例子:

  • root用户修改普通用户密码:

[root@localhost ~]#passwd lamp Changing password for user lamp.

New password: <==直接输入新的口令,但屏幕不会有任何反应

Retype new password:  <==再次验证输入的密码,再输入一次即可

  • 修改系统已登陆用户密码:

[root@localhost ~]#passwd #passwd直接回车代表修改当前用户的密码

Changing password for user vbird2. Changing password for vbird2 (current) UNIX password: <==这里输入『原有的旧口令』

New password: <==这里输入新口令

 Retype new password: <==通过口令验证!所以重复这个口令的输入

  • 查看用户密码的状态[root@localhost ~]# passwd -S lamp


     lamp PS 2013-01-06 0 99999 7 -1 (Password set, SHA512 crypt.)
     #上面这行代码的意思依次是:用户名 密码 设定时间(2013*01-06) 密码修改间隔时间(0) 密码有效期(99999) 警告时间(7) 密码  不失效(-1),密码已使用

  • 修改密码有效期、宽限时间[root@localhost ~]# passwd -x 60 -i 10 lamp  

    #上面这行代码的意思是60天内必须修改密码;码过期10天后无法再登陆系统

  • 暂时锁定lamp用户密码:【root@localhost ~]# passwd -l lamp

​​​​​​   ​#其实就是在密码前面加了!!,使密码暂时失效,用户无法再使用此账户登录系统

  • 解锁lamp用户密码:【root@localhost  ~] passwd -u lamp
  • 调用管道符给lamp设置密码:【root@localhost ~] echo "123" | passwd --stdin lamp 

   #这种方法设置密码主要用在批量给用户设置初始密码,这样设定的密码会把密码明文保存在历史命令中,如果系统被攻破,别人可以在 /root/.bash_history 中找到设置密码的这个命令,存在安全隐患。那么应该记住两件事情:第一,手工清除历史命令;第二,强制这些新添加的用户在第一次登录时必须修改密码

3.Linux usermod命令:修改用户信息   

格式:usermod [选项] 用户名

选项:

  • -c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
  • -d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
  • -e 日期:修改用户的失效曰期,格式为 "YYYY-MM-DD",即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
  • -g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
  • -u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
  • -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
  • -l 用户名:修改用户名称;
  • -L:临时锁定用户(Lock);
  • -U:解锁用户(Unlock),和 -L 对应;
  • -s shell:修改用户的登录 Shell,默认是 /bin/bash。

#其实 usermod 命令提供的选项和 useradd 命令的选项相似,因为 usermod 命令就是用来调整使用 useradd 命令添加的用户信息的。需要注意的是,并不是所有的 Linux 发行版都包含这个命令,因此,使用前可以使用 man usermod 命令确定系统是否支持。

  • 锁定用户:[root@localhost ~]# usermod -L lamp  

    #其实锁定就是在密码字段前加入"!",这时lamp用户就暂时不能登录了

  • 解锁用户: [root@localhost ~]# usermod -U lamp

#取消了密码字段前的 "!"

  • 把lamp加入root用户组:[root@localhost ~]#usermod -G root

4. Linux  chage命令:修改用户密码状态

格式:chage [选项] 用户名

选项:

  • -l:列出用户的详细密码状态;
  • -d 日期:修改 /etc/shadow 文件中指定用户密码信息的第 3 个字段,也就是最后一次修改密码的日期,格式为 YYYY-MM-DD;
  • -m 天数:修改密码最短保留的天数,也就是 /etc/shadow 文件中的第 4 个字段;
  • -M 天数:修改密码的有效期,也就是 /etc/shadow 文件中的第 5 个字段;
  • -W 天数:修改密码到期前的警告天数,也就是 /etc/shadow 文件中的第 6 个字段;
  • -i 天数:修改密码过期后的宽限天数,也就是 /etc/shadow 文件中的第 7 个字段;
  • -E 日期:修改账号失效日期,格式为 YYYY-MM-DD,也就是 /etc/shadow 文件中的第 8 个字段。

注:lamp特殊功能:强制用户在第一次登录后,必须先修改密码,并利用新密码重新登陆系统,此用户才能正常使用。

[root@localhost ~]#echo "lamp" | passwd --stdin lamp           # 管理员批量发布账号和初始密码

[root@localhost ~]#chage -d 0 lamp                                       #将密码最后一次修改时间设置为0,也就是1970-01-01,用户登录以后强制必须修改密码

5.Linux userdel命令:删除用户   (只有root用户才有权限)

格式:userdel  -r  用户名

  -r  表示在删除用户同时删除家目录

注:

1.通过前面的学习我们知道,用户的相关数据包含如下几项:

  • 用户基本信息:存储在 /etc/passwd 文件中;
  • 用户密码信息:存储在 /etc/shadow 文件中;
  • 用户群组基本信息:存储在 /etc/group 文件中;
  • 用户群组信息信息:存储在 /etc/gshadow 文件中;
  • 用户个人文件:主目录默认位于 /home/用户名,邮箱位于 /var/spool/mail/用户名。

2.如果用户创建使用过一段时间,最好在使用 userdel 命令之前,先通过 find -user 用户名 命令查出系统中属于该用户的文件,然后在加以删除。

6 Linux id命令:查看用户的UID和GID

格式:id 用户名

7 Linux su命令 :用户间切换(包含su和su - 的区别)

格式:su [选项] 用户名

注:普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密码,直接可切换成功。

选项:

  • -:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
  • -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
  • -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
  • -m:和 -p 一样;
  • -c 命令:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。

注意,使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。
举个例子,普通用户 lamp 通过 su 命令切换成 root 用户,但没有使用 - 选项,这样情况下,虽然看似是 root 用户,但系统中的 $PATH 环境变量依然是 lamp 的(而不是 root 的),因此当前工作环境中,并不包含 /sbin、/usr/sbin等超级用户命令的保存路径,这就导致很多管理员命令根本无法使用。不仅如此,当 root 用户接受邮件时,会发现收到的是 lamp 用户的邮件,因为环境变量 $MAIL 也没有切换。

例子:

  • 仅切换用户执行一次命令,执行后自动切换回来

    [lamp@localhost ~]$ su - -c "useradd user1" root 密码:

    #不切换成root,但是执行useradd命令添加user1用户

     [lamp@localhost ~]$ whoami lamp

  • 查看用户环境变量(只有查看当前用户的)   

    [xiaowu@localhost ~]$ env | grep xiaowu
   USER=xiaowu
  MAIL=/var/spool/mail/xiaowu
  PATH=/usr/lib64/qt-    3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xiaowu/.local/bin:/home/xiaowu/bin
 PWD=/home/xiaowu
 HOME=/home/xiaowu
 LOGNAME=xiaowu

 

8 Linux whoami 和who ami命令用法和区别

whoami 命令和 who am i 命令是不同的 2 个命令,前者用来打印当前执行操作的用户名(实际用户(UID)当前系统下真实工作的用户),后者则用来打印登陆当前 Linux 系统的用户名(有效用户(EUID,即 Effective UID),系统登陆的用户)。

执行 whoami 命令,等同于执行 id -un 命令;执行 who am i 命令,等同于执行 who -m 命令。

例子:

[root@localhost ~]# whoami

root
[root@localhost ~]# who am i
xiaowu   pts/0        2020-09-01 15:43 (:0)

9 Linux  groupadd命令: 添加用户组

格式:group [选项[ 组名

选项:

  • -g GID:指定组 ID;
  • -r:创建系统群组。

 例子: 

  [root@localhost ~]# groupadd group1
   #添加group1组
   [root@localhost ~]# grep "group1" /etc/group

10 Linux groupmod命令:修改用户组

格式: group [选项]  组名

选项:

  • -n 新组名   组名

11 Linux groupdel命令 : 删除用户组

格式:groupdel  组名

注意,不能使用 groupdel 命令随意删除群组。此命令仅适用于删除那些 "不是任何用户初始组" 的群组,换句话说,如果有群组还是某用户的初始群组,则无法使用 groupdel 命令成功删除。

12 Linux  gpasswd命令: 把用户添加到用户组或从组中删除

  格式: gpasswd [选项]  组名

选项功能
 选项为空时,表示给群组设置密码,仅 root 用户可用。
-A user1,...将群组的控制权交给 user1,... 等用户管理,也就是说,设置 user1,... 等用户为群组的管理员,仅 root 用户可用。
-M user1,...将 user1,... 加入到此群组中,仅 root 用户可用。
-r移除群组的密码,仅 root 用户可用。
-R让群组的密码失效,仅 root 用户可用。
-a user将 user 用户加入到群组中。
-d user将 user 用户从群组中移除。

注:除 root 可以管理群组外,可设置多个普通用户作为群组的管理员,但也只能做“将用户加入群组”和“将用户移出群组”的操作。

13 Linux newgrp命令:切换用户有效组

我们知道,每个用户可以属于一个初始组(用户是这个组的初始用户),也可以属于多个附加组(用户是这个组的附加用户)。既然用户可以属于这么多用户组,那么用户在创建文件后,默认生效的组身份是哪个呢?
当然是初始用户组的组身份生效,因为初始组是用户一旦登陆就获得的组身份。也就是说,用户的有效组默认是初始组,因此所创建文件的属组是用户的初始组。那么,既然用户属于多个用户组,能不能改变用户的初始组呢?使用命令 newgrp 就可以。

格式:newgrp  组名

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值