六.账户与组

一.账户与组的概念

        Linux系统对账户与组的管理通过ID实现。在Linux中,用户ID被称为UID,组ID被称为GID、其中UID为0,代表超级管理员,也成root用户,1~4777会被保留,创建的普通用户ID从500算起。

        Linux组有基本组和附加组,一个用户只能加入一个基本组,但同时可以加入多个附加组,创建用户时,系统默认创建同名的组,并设置用户加入该基本组里

用户:

超级用户:root,UID为0

系统用户:用来管理和运行服务,系统用户的shell为/sbin/noligin,不让该用户登录,UID为201-999

普通用户:1000-60000,添加一般用户时,默认用户创建主目录和邮箱(/home/用户名)(/var/mail/用户名)

二.创建用户和组

使用useradd创建用户,groupadd创建组用户(注:创建账户及组时需要管理员权限)

2.1 useradd:创建新的Linux用户

语法:useradd [选项] 用户名

-c comment,用户的描述,短用户名,一般为账户全称

-d 指定用户的家目录,默认为/home/用户名

-e 设置账户失效时期,格式为YYYY-MM-DD

-g 指定用户的基本组

-G 指定用户的附加组,多个附加组用逗号隔开

-M 不创建账户家目录,一般与-s结合使用

-s 指定用户的shell,默认为bash

-u 指定uid

[root@localhost ~]# cat /etc/passwd
#看最后一行就是用户
rhcsa:x:1000:1000:rhcsa:/home/rhcsa:/bin/bash
[root@localhost ~]# useradd wyy
rhcsa:x:1000:1000:rhcsa:/home/rhcsa:/bin/bash
wyy:x:1001:1001::/home/wyy:/bin/bash
#设置系统账号为admin,全称为administrator,家目录为/home/admin,用户失效时间为2022年7月14日,账户基本组为root,附加组为bin,adm,mail
[root@localhost ~]# useradd -c administrator -d /home/admin -e 2022-7-14 -g root -G bin,adm,mail admin
#创建无法不能登陆操作系统的用户(就不配有家目录)
[root@localhost ~]# useradd -s /sbin/nologin -M zhangsan

2.2 groupadd:创建组用户

语法:groupadd [选项] 组名称

选项:

-g 设置组ID

[root@localhost ~]# groupadd tom
[root@localhost ~]# groupadd -g 1001 jerry

2.3 id:显示账户及组信息

语法:id 用户名

[root@localhost ~]# useradd wyy -G tom  用户存在,加不进去
useradd: user 'wyy' already exists
[root@localhost ~]# useradd xiaolan -G tom
[root@localhost ~]# id xiaolan
uid=1004(xiaolan) gid=1005(xiaolan) groups=1005(xiaolan),1004(tom)

2.4 用户切换

当普通用户需要超级用户的权限时,怎样进行切换管理工作呢?

命令一:

su:切换用户身份的命令

语法:su [选项] [-c 命令] [username]

选项:

-         单纯使用,如:“su -”,代表使用login-shell的变量文件读取方式来登录系统;如果用户名没有写,代表切换到root用户

-l         与-相似,但后面需要加切换的用户账号

-m         跟-p一样,表示使用当前环境边设置,而不读取新用户的配置文件

-c         仅进行一次命令,所以-c后面可以加命令

我们以普通用户登录系统后,当要是系统中执行useradd添加用户时,会发现用户没有权限,只有root才能使用,怎么办呢?

解决办法:

1)退出用户,重新以root用户登录

2)在用户下使用su来切换到root下进行添加用户的工作,等工作完成后,再退出root用户

[root@localhost ~]# useradd wyy
[root@localhost ~]# su - wyy
[wyy@localhost ~]$ exit
logout

[root@localhost ~]# su - wyy
Last login: Thu Jul 14 07:52:50 EDT 2022 on pts/0
[wyy@localhost ~]$ su - root   #看他要密码啦
Password: 
#su跟su - 不一样,su到root下,su -到家目录下
[root@localhost ~]# su wyy
[wyy@localhost root]$ exit
exit
[root@localhost ~]# su - wyy
Last login: Thu Jul 14 07:54:50 EDT 2022 on pts/0
[wyy@localhost ~]$ exit
logout
[root@localhost ~]# su - wyy
Last login: Thu Jul 14 07:54:59 EDT 2022 on pts/0
[wyy@localhost ~]$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[wyy@localhost ~]$ su - root -c "cat /etc/shadow"
Password: 
root:$6$rGVB3x285aWsiH5I$aKNdnypA7BuHseNumAuvrk3kF5.kdwZCFHuEHVUX2M8MkZ7YulF384UvtPWU.fmZ8omW5BmvYCL7rJP.m79dK0:19187:0:99999:7:::
bin:*:18367:0:99999:7:::
daemon:*:18367:0:99999:7:::
adm:*:18367:0:99999:7:::
lp:*:18367:0:99999:7:::
sync:*:18367:0:99999:7:::

命令二:

sudo:切换用户

su致命缺点:

1)普通用户需要知道root密码才能切换到root用户,密码就泄露了,被刀都不知道啥时候刀的

2)使用su切换身份,无法对切换后的身份做精细控制,拿到超级权限的人可以为所欲为,甚至更改root密码,让真正管理员无法再拥有root权限

那么怎么办呢?这时候sudo命令就诞生了,可以对超级用户权限分类有针对性的授权给普通用户,并且普通用户不需要知道root密码

#使用超级用户来执行命令(一般时root用户),想要使用sudo在/etc/sudoers中添加用户,先利用su - 进入root用户,在输入vim sudo编写sudoers文件
[root@localhost ~]# vi /etc/sudoers

## Sudoers allows particular users to run various commands as
## users or groups.
##
## This file must be edited 
......
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL                         #root代表用户,ALL代表主机,括号里的是以什么身份运行,最后一个ALL,是要执行什么命令

redhat    ALL=(ALL)    /usr/sin/useradd        #要写全路径,这一行我补的
 ......
[root@localhost ~]# whereis useradd      #怎么看路径
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz

三.修改账户及组

3.1 passwd:更新账户认证信息

语法:passwd [选项] [账户名称]

选项:

-l 锁定账户,仅root使用

--stdin 从文件或管道读取信息

-u 解锁账户

-d 快速清空账户密码,仅root使用

[root@localhost ~]# echo "12345" | passwd --stdin wyy   #有弊端,看历史命令能力看到密码
Changing password for user wyy.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# history


   47  echo "12345" | passwd --stdin wyy
   48  history
[root@localhost ~]# passwd
Changing password for user root.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
Sorry, passwords do not match.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -l wyy
Locking password for user wyy.
passwd: Success
[root@localhost ~]# passwd -u wyy
Unlocking password for user wyy.
passwd: Success

3.2 gpasswd:修改组用户

语法:gpasswd [选项] [组名]

选项:

-a 添加用户到组

-d 将指定用户移出本组(从附加组移出)

-M 设置组成员列表

-A 指定组管理员为那个用户

-r 删除组密码

[root@localhost ~]# id xiaolan
uid=1004(xiaolan) gid=1005(xiaolan) groups=1005(xiaolan),1004(tom)
[root@localhost ~]# gpasswd -a wyy tom
Adding user wyy to group tom
[root@localhost ~]# id wyy
uid=1001(wyy) gid=1001(wyy) groups=1001(wyy),1004(tom)
[root@localhost ~]# gpasswd tom
Changing the password for group tom
New Password: 
Re-enter new password: 

3.3 newgrp:登录一个新组

语法:newgrp [组名]

退出登录的组:exit

[root@localhost ~]# mkdir 111file

[root@localhost ~]# newgrp tom
[root@localhost ~]# mkdir 123
[root@localhost ~]# ll            #注意看这里,111file组用户是root,而123组用户是tom
total 3196
drwxr-xr-x. 2 root root       6 Jul 14 07:22  111file
drwxr-xr-x. 2 root tom        6 Jul 14 07:23  123
-rw-------. 1 root root    1563 May 31 03:22  anaconda-ks.cfg
-rw-r--r--. 1 root root       0 Jun 21 02:16  file2
-rw-r--r--. 2 root root      10 Jun 21 02:02  filebak
-rw-r--r--. 2 root root      10 Jun 21 02:02  filebak1
-rw-r--r--. 1 root root  447041 Jul 12 01:41 'WPSͼƬƴͼ(2).png'
-rw-r--r--. 1 root root 2809450 Jul 12 01:21  wyy.tar.bz2
[root@localhost ~]# exit         #必须要退出,必须要退出
exit
[root@localhost ~]#              #退出之后是这个,再退就退出登陆了,用的是第三方软件的话

3.4 usermod:修改账户信息(跟useradd相同)

语法:usermod [选项] 账户名称

选项:

-d 修改账户家目录

-e 修改账户失效信息

-g 指定用户的基本组

-G 指定用户的附加组,多个附加组用逗号隔开

-s 指定用户的shell,默认为bash

-u 指定uid

3.5 groupmod:修改组用户

语法:groupmod -n 新组名 -g gid 原组名

选项:

-n 指定新组名

-g 修改gid信息

[root@localhost ~]# id wyy
uid=1001(wyy) gid=1001(wyy) groups=1001(wyy),1004(tom)
[root@localhost ~]# id xiaolan
uid=1004(xiaolan) gid=1005(xiaolan) groups=1005(xiaolan),1004(tom)
[root@localhost ~]# groupmod -n tom1 tom
[root@localhost ~]# id xiaolan
uid=1004(xiaolan) gid=1005(xiaolan) groups=1005(xiaolan),1004(tom1)
[root@localhost ~]# id wyy
uid=1001(wyy) gid=1001(wyy) groups=1001(wyy),1004(tom1)

四.删除账户及组

4.1 userdel:删除账户及组相关信息

语法:userdel [选项] 账户名称

选项:

-r 删除账户及相关文件(删的是家目录)

[root@localhost ~]# userdel xiaolan 
[root@localhost ~]# id xiaolan id: ‘xiaolan’: no such user 
[root@localhost ~]# ls /home/ admin bbb rhcsa rhcsacd wyy 
[root@localhost ~]# userdel -r wyy 
[root@localhost ~]# ls /home/ admin bbb rhcsa rhcsacd

4.2 groupdel:删除组用户

语法:groupdel 组名

[root@localhost ~]# groupdel tom1 
[root@localhost ~]# id wyy uid=1001(wyy) gid=1001(wyy) groups=1001(wyy)

五.账户与组文件解析

5.1 账户信息文件

账户信息文件被保存在/etc/passwd文件中,通过cat来查肯文件如下:

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

文件以:分隔符

第一列 root 为用户名称,第二列为密码占位符

第二列 x 要用密码登录,为空时,需要密码即可登录

第三列 0 UID

第四列 0 GID

第五列 root 为用户附加基本信息,一般为储存账户名全称、联系方式等信息

第六列 /root 用户家目录位置

第七列 /bin/bash 账户登录shell,/bin/bash账户可登录,/sbin/nologin表示账户无法登录系统

5.2 账户密码文件

账户密码文件在/etc/shadow文件中,通过cat来查看文件如下:

[root@localhost ~]# cat /etc/shadow
root:$6$rGVB3x285aWsiH5I$aKNdnypA7BuHseNumAuvrk3kF5.kdwZCFHuEHVUX2M8MkZ7YulF384UvtPWU.fmZ8omW5BmvYCL7rJP.m79dK0:19187:0:99999:7:::
bin:*:18367:0:99999:7::
daemon:*:18367:0:99999:7:::
adm:*:18367:0:99999:7:::
lp:*:18367:0:99999:7:::
sync:*:18367:0:99999:7:::
shutdown:*:18367:0:99999:7:::
halt:*:18367:0:99999:7:::
………………

文件以:分隔符

第一列 用户名称

第二列 密码(当密码为!!,设置密码后加密显示)

第三列 上次修改密码的时间到1970年1月1号的时间距离

第四列 密码最短的有效天数(0代表无限制)

第五列 密码最长的有效天数(默认为99999可以理解为永不过期)

第六列 过期的告诫天数(提前7天警告,进去警告日期后仍可以使用旧密码登录)

第七列 密码过期后的宽限天数(会预留几天改密码,但无法使用旧密码)

第八列 用户失效时间(从1970年1月1号起开始多少天时效)

第九列 暂时保留使用

5.3 组账户信息文件

账户信息文件被保存在/etc/proup文件中,通过cat来查肯文件如下:

[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:admin
daemon:x:2:
sys:x:3:
adm:x:4:admin
tty:x:5:
disk:x:6:
lp:x:7:
………………

文件以:分隔符

第一列 组用户名称

第二列 密码占位符

第三列 GID

第四列 组成员信息(注:仅显示附加,基本成员不显示)

5.4 组账户密码文件

账户信息文件被保存在/etc/gshadow文件中,通过cat来查肯文件如下:

[root@localhost ~]# cat /etc/gshadow
root:::
bin:::admin
daemon:::
sys:::
adm:::admin
tty:::
disk:::
lp:::
mem:::

文件以:分隔符

第一列 组用户名称

第二列 密码

第三列 组管理员

第四列 组成员信息(注:仅显示附加,基本成员不显示)

通过设置组密码,添加组管理员

[root@localhost ~]# gpasswd wyy
Changing the password for group wyy
New Password: 
Re-enter new password: 

[root@localhost ~]# gpasswd -A wyy wyy

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值