Linux用户、用户组的管理

简介: 首先用户大家都不陌生,我们在使用电脑的时候进入电脑登录的就是我们的账号也就是用户,用户组顾名思义里面可以存放多个用户方便管理以及授权。

     首先用户大家都不陌生,我们在使用电脑的时候进入电脑登录的就是我们的账号也就是用户,用户组顾名思义里面可以存放多个用户方便管理以及授权。


一、用户


首先我们需要用超管(root)登录才可以进行下列操作。


1、创建用户,不指定选项


注意:在创建用户后不给其密码是无法登陆的


命令:

      useradd sure1                //创建用户sure1,不指定任何选项。


//创建一个用户sure1

[root@localhost ~]# useradd sure1

//id 用户名   查询用户信息

[root@localhost ~]# id sure1

uid=1002(sure1) gid=1002(sure1) 组=1002(sure1)

//用户创建以后,在home里会默认创建一个sure1,作为家目录。

[root@localhost ~]# ls /home

dir  dir001  dir002  dir10  shuo01  sure1  user01


uid、gid、组是上篇文章讲过的分别表示用户id、组id、组成员,这样我们就创建了一个用户


2、创建用户,指定选项


命令:

       useradd  sure2   -u   1503        //创建用户user02,指定uid

       useradd  sure3   -d   /user03      //创建用户user03,指定家目录


//创建一个sure2用户并指定他的uid为2022

[root@localhost ~]# useradd sure2 -u  2022

[root@localhost ~]# id sure2

uid=2022(sure2) gid=2022(sure2) 组=2022(sure2)

//创建一个sure3用户指定他的家目录为/sure3

[root@localhost ~]# useradd  sure3 -d /sure3

[root@localhost ~]# ls /

1.txt  aaa  bin   dev  home  lib64  mnt  proc  run   srv    sys  usr

3.txt  bbb  boot  etc  lib   media  opt  root  sbin  sure3  tmp  var


3、删除用户


命令:

       userdel -r user02                 //要加-r才能删除用户的家目录


//删除用户sure3

[root@localhost ~]# userdel  -r   sure3

//查看sure3

[root@localhost ~]# id sure3

id: sure3: no such user

//查看sure3的家目录是否存在

[root@localhost ~]# ls /

1.txt  aaa  bin   dev  home  lib64  mnt  proc  run   srv  tmp  var

3.txt  bbb  boot  etc  lib   media  opt  root  sbin  sys  usr

//删除用户sure2

[root@localhost ~]# userdel sure2

[root@localhost ~]# id sure2

id: sure2: no such user

//用户被删除但是家目录依然存在

[root@localhost ~]# ls /home

dir  dir001  dir002  dir10  shuo01  sure1  sure2  user01


4、修改用户密码


注意:在输入密码的时候是不显示的,在输入完直接回车即可。


修改密码有两个方法:

方法一:root修改其他用户(sure1)密码。

passwd alice

方法二:用户(sure1)登录,自己修改密码。

passwd


方法一:

[root@localhost ~]# passwd sure1

更改用户 sure1 的密码 。

新的 密码:

无效的密码: 密码是一个回文

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

方法二:

[sure1@localhost ~]# passwd

更改用户sure1的密码。

为sure1更改STRESS密码。

(当前)UNIX 密码:

新的 密码:

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。


5、修改用户信息


这里先举一个例子


命令:usermod   -u       用户参数


//创建sure2用户

[root@localhost ~]# useradd sure2

//查看修改前sure2的信息

[root@localhost ~]# id sure2

uid=1003(sure2) gid=1003(sure2) 组=1003(sure2)

//修改sure2的用户id

[root@localhost ~]# usermod -u 1004 sure2

usermod:警告:/var/spool/mail/sure2 不属于 sure2

//查看修改后的sure2信息

[root@localhost ~]# id sure2

uid=1004(sure2) gid=1003(sure2) 组=1003(sure2)


更多usermod命令可输入命令usermod --help查看


[root@localhost ~]# usermod   --help

用法:usermod [选项] 登录

选项:

 -c, --comment 注释            GECOS 字段的新值

 -d, --home HOME_DIR           用户的新主目录

 -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE

 -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态

 -g, --gid GROUP               强制使用 GROUP 为新主组

 -G, --groups GROUPS           新的附加组列表 GROUPS

 -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,

                               并不从其它组中删除此用户

 -h, --help                    显示此帮助信息并推出

 -l, --login LOGIN             新的登录名称

 -L, --lock                    锁定用户帐号

 -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)

 -o, --non-unique              允许使用重复的(非唯一的) UID

 -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码

 -R, --root CHROOT_DIR         chroot 到的目录

 -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files

 -s, --shell SHELL             该用户帐号的新登录 shell

 -u, --uid UID                 用户帐号的新 UID

 -U, --unlock                  解锁用户帐号

 -v, --add-subuids FIRST-LAST  add range of subordinate uids

 -V, --del-subuids FIRST-LAST  remove range of subordinate uids

 -w, --add-subgids FIRST-LAST  add range of subordinate gids

 -W, --del-subgids FIRST-LAST  remove range of subordinate gids

 -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射


二、用户组


1、什么是组


这里我放个图片介绍一下什么是组。


    拿充会员来说,公司将权限分别分配给VIP和SVIP这两个组,当用户充了VIP的时候我们把用户加入到VIP的组中,用户就获得了VIP组所分配的权限,同理用户充值SVIP也是这样,如果一个用户同时充了VIP和SVIP那么用户将获得两个组的权限,所以一个用户可以加入到多个组。


4f3c42f9718e4527ae79e9634af6fbca.png


2、创建组


   创建组可以不指定任何选项,也可以指定选择。


       命令:groupadd   S1        //创建组S1,不指定任何选项。


               groupadd S2 -g 2022     //创建组S2,指定组id为2022


注意:passwd和shadow是没有S1和S2的信息的,passwd和shadow存放的是用户信息,组的信息不在这里面


  查看组的信息有两种方法,一种是直接查看group中的信息,第二种使用grep  组名  /etc/group查看指定组的信息


       方法一:tail - 1  /etc/group                 //查看组的信息,因为新创建的组会记录在group文件的最后一行所以只需要查看group的最后一行信息。


       方法二:grep -S1 /etc/group        //查看指定组的信息。


//创建组S1

[root@localhost ~]# groupadd S1

//查看组的信息方法一

[root@localhost ~]# tail -1 /etc/group

S1:x:1004:

//查看组的信息方法二

[root@localhost ~]# grep S1 /etc/group

S1:x:1004:                        //上一篇文章介绍了S1为组名、x为密码站位、1004位组id、最后是组成员。

//创建组S2指定组id为2022

[root@localhost ~]# groupadd S2 -g 2022

[root@localhost ~]# grep S2 /etc/group

S2:x:2022:


3、删除组


命令:groupdel  S2                        //删除组S2


[root@localhost ~]# groupdel S2

//查看S2的组信息无信息

[root@localhost ~]# grep S2 /etc/group

4、组的分类  


用户组分为基本组(主组)和附加组

      基本组:随着用户的创建,自动创建一个与用户名相同的组,用户的基本信息显示在/etc/passwd中。

       附加组:用户加入的其他组。


注意:基本组只有一个,附加组可以有多个。


下面通过一个案例来体验一下


1、useradd是创建用户的命令。

2、usermod是修改用户的命令。

3、groupadd是创建组的命令。

4、-u指定用户的UID。

5、-g指定用户的基本组。

6、-G指定用户的附加组。

7、/etc/passwd可以查看的是用户的基本组。

8、/etc/group可以查看用户的附加组。


4.1、创建一个用户sure01,同时生成一个基本组sure01


//创建一个用户为sure01

[root@localhost ~]# useradd   sure01

//查看该用户的信息

[root@localhost ~]# grep   sure01 /etc/passwd

sure01:x:1005:1005::/home/sure01:/bin/bash            //用户名为sure01,同时sure01的基本组id为1005


4.2、同样的方法创建一个用户sure02,同时生成一基本组sure02。


//同样的方法创建一个用户sure02

[root@localhost ~]# useradd   sure02

[root@localhost ~]# grep   sure02 /etc/passwd

sure02:x:1006:1006::/home/sure02:/bin/bash


4.3、创建组group03和group04


//创建一个组group03

[root@localhost ~]# groupadd group03

[root@localhost ~]# grep group03 /etc/group

group03:x:1007:                //group03的组id为1007,组内组成员

//创建一个组group04

[root@localhost ~]# groupadd group04

[root@localhost ~]# grep group04 /etc/group

group04:x:1008:                //group04的组id为1008,组内组成员


4.4、修改用户sure01的基本组为group03


//修改前用户sure01的信息

[root@localhost ~]# grep   sure01 /etc/passwd

sure01:x:1005:1005::/home/sure01:/bin/bash                   //sure01的基本组id为1005

修改用户sure01的基本组为group03

[root@localhost ~]# usermod sure01 -g group03

//查看sure01修改后的信息

[root@localhost ~]# grep sure01 /etc/passwd

sure01:x:1005:1007::/home/sure01:/bin/bash                //sure01的基本组id变为了1007,此时sure01的基本组为group03


4.5将用户sure02添加到组group03中


//修改前sure03的组信息

[root@localhost ~]# grep sure03 /etc/group

sure03:x:1007:                                                //group03的组id为1007,组内没有组成员

//修改sure02的附加组(会先将suree02移出原来的附加组,但不移出基本组)

[root@localhost ~]# usermod sure02 -G group03

//查看group03组的信息

[root@localhost ~]# grep group03/etc/group

group03:x:1007:sure02                                //group03组信息中多了一个sure02组成员

//追加附加组, 原先的组保留

[root@localhost ~]# usermod sure02 -aG group04

//查看group04组的信息

[root@localhost ~]# grep group04/etc/group

group04:x:1008:sure02                                //group04组信息中多了一个sure02组成员

[root@localhost ~]# grep group03/etc/group

group03:x:1007:sure02                                //group03组信息中也有sure02组成员


4.6、查看上面所有改动的信息


//查看用户sure01的信息

[root@localhost ~]# grep sure01 /etc/passwd

sure01:x:1005:1007::/home/sure01:/bin/bash        //基本组是group03的组id

//查看group03的组信息

[root@localhost ~]# grep group03 /etc/group

group03:x:1007:sure02

//查看group04的组信息

[root@localhost ~]# grep group04 /etc/group

group04:x:1008:sure02

//这时候sure02的附加组有group03和group04


4.7、将用户sure02移出组group04


//在group04中移出sure02

[root@localhost ~]# gpasswd group04 -d sure02

正在将用户“sure02”从“group04”组中删除

//查看group04组信息

[root@localhost ~]# grep group04 /etc/group

group04:x:1008:


三、提权


当我们用普通用户登录的时候是无法对用户以及用户组进行操作的,因为权限不足,这个时候我们就需要提权,提权分为两个:永久提权和临时提权


1、永久提权


命令:su   -root


//普通用户创建用户组,失败,没有权限

[sure01@localhost ~] $ groupadd group01

groupadd:Permission denied.

groupadd:无法锁定 /etc/group,请稍后重试

//使用root权限

[sure01@localhost ~] $ su   root

密码:                                                        //输入秘密是不显示的,输入完回车即可

//创建组group01

[root@localhost ~] # groupadd group01

[root@localhost ~] # grep group01 /etc/group

group01: x: 1009:                                                //创建成功

[root@localhost ~] # exit                                        //退出

[sure01@localhost ~] $                                                //回到sure01

2、临时提权


  以root身份登录,查看sudoers文件


//进入sudoers文件

vim /etc/sudoders

//第107行看到一下内容

%wheel  ALL=(ALL)       ALL                //允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令


     创建用户s1并添加到wheel组中


//创建s1并加入到wheel组中

[root@localhost ~]# useradd s1 -G wheel

[root@localhost ~]# id s1

uid=1007(s1) gid=1010(s1) 组=1010(s1),10(wheel)

//修改s1密码 不然是无法登录的

[root@localhost ~]# passwd s1

更改用户 s1 的密码 。

新的 密码:

无效的密码: 密码是一个回文

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。


 切换到s1用户登录,创建用户,会失败因为是用普通用户创建的,没有权限,需要使用提权命令sudo就可以进行创建用户操作。


c10c0658ee4a4115a85d8418d1feb7d5.png


今天的分享到这就就结束了,下次将分享用户权限。







相关文章
|
1月前
|
安全 Linux
Linux通配符及其在文件搜索和管理中的应用
Linux通配符及其在文件搜索和管理中的应用
|
2月前
|
Java Linux
Linux上管理不同版本的 JDK
Linux上管理不同版本的 JDK
42 0
|
24天前
|
Linux
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
系统启动以后一直存在且常驻内存没有界面的进程就是服务。Linux系统中的所有服务都保存在下列目录中:/usr/lib/systemd/system,进入该目录就能看到所有的服务。
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
|
1月前
|
Linux
Linux 中RPM软件包管理
Linux 中RPM软件包管理
|
1月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
158 1
|
1月前
|
监控 安全 Unix
探索Linux命令repo-rss:管理仓库更新的新视角
`repo-rss`是一个设想中的Linux工具,用于通过RSS订阅跟踪软件仓库更新。它能订阅仓库、检测更新、生成RSS feed并发送通知。主要特点包括实时性、灵活性、自动化和可扩展性。用户可定制订阅、时间间隔及输出格式。示例用法包括订阅Debian仓库、将更新输出为RSS文件或发送至邮箱。使用时需注意安全、资源消耗和隐私,最佳实践包括定期评估、自动化处理、多源订阅和备份。此工具展示了RSS在软件管理中的创新应用。
|
2月前
|
Linux
【Linux 基础】文件与目录管理
文件和目录的基本概念以及常用命令
42 11
|
2月前
|
Linux 网络安全 开发工具
Linux 管理远程会话 screen:掌握终端的多任务操作
`Linux screen` 命令让多任务管理变得更简单,尤其在SSH连接远程服务器时。创建新会话如`screen -S backup`,查看会话`screen -ls`,退出`exit`。高级功能包括直接在会话中运行命令,如`screen vim memo.txt`,会话共享以协同工作,以及通过`screen -r`或`-D -r`重新连接或强制恢复断开的会话。提高效率,确保任务不间断运行。
27 1
|
2月前
|
安全 Linux 数据处理
探索Linux的kmod命令:管理内核模块的利器
`kmod`是Linux下管理内核模块的工具,用于加载、卸载和管理模块及其依赖。使用`kmod load`来加载模块,`kmod remove`卸载模块,`kmod list`查看已加载模块,`kmod alias`显示模块别名。注意需有root权限,且要考虑依赖关系和版本兼容性。最佳实践包括备份、查阅文档和使用额外的管理工具。
|
2月前
|
监控 数据挖掘 Linux
Linux命令jobs:后台任务管理利器
`jobs`是Linux终端的利器,用于管理和查看后台任务。它显示当前会话中的作业状态,如运行、停止,可通过`Ctrl+Z`暂停任务,`bg`放后台,`fg`回前台。参数`-l`显示PID,`-n`显示最近状态变化的作业。`jobs`帮助高效监控和管理长时间运行的命令,如在数据分析时。记得使用正确任务编号,谨慎使用`kill`,并定期检查任务状态。