用户和用户组

news/2024/11/13 20:18:32/文章来源:https://www.cnblogs.com/xuruizhao/p/18544707

用户/用户组

【1】、 用户分类

  • 一般看用户名,本质要看用户uid,gid.
  • uid user id 用户id 相当于身份证号码. 也是我们最关注。
  • gid group id 组id,相当于户口本号码.
用户分类 uid 说明
root 固定是 0 权限高 /root/
普通用户 一般是>=1000 权限低,只能管理自己家目录 /home/xxx
虚拟用户(傀儡用户) 一般1-999之间,但实际上可以修改 无法登录,让服务,进程正常运行

用户的分类本质要看uid和命令解释器。

在Linux中可以允许同时登录多个系统

【2】、用户相关文件

/etc/passwd

[root@kylin-xu ~]# head -5 /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
第1列 第2列 第3-4列 第5列 第6列 第7列
用户名 x 密码标记
密码存放在/etc/shadow里
UID:GID 说明信息(可以为空) 用户家目录(root,普通用户即可) 命令解释器
/bin/bash 可以登录系统
/sbin/nologin 虚拟用户

/etc/shadow

[root@kylin-xu ~]# head -5 /etc/shadow
root:$6$h1B0FEVoIVn0B3in$SOWTbnl.z/rzXmiZYxnswdLiQduLYwXAguj3W1D3pON.8ptxGuedBD29BPGUVnOTobTOJAtDl5dDq9kcIGsT01::0:99999:7:::
bin:*:18699:0:99999:7:::
daemon:*:18699:0:99999:7:::
adm:*:18699:0:99999:7:::
lp:*:18699:0:99999:7:::

补充

常用的命令解释器

  • /bin/bash

  • /bin/sh

  • /bin/dash #ubt,debian命令解释器

    xu@xu-ubuntu:~$ ll /bin/bash /bin/sh /bin/dash
    -rwxr-xr-x 1 root root 1396520 Mar 14  2024 /bin/bash*
    -rwxr-xr-x 1 root root  125688 Mar 23  2022 /bin/dash*
    lrwxrwxrwx 1 root root       4 Mar 23  2022 /bin/sh -> dash*
    
  • /sbin/nologin 虚拟用户

  • ..... /bin/csh /bin/tcsh /bin/xxxx

【3】、用户增删改查的命令

1、增加用户

  • 添加用户

  • 设置密码

  • 切换用户

  • 检查.

  • kylin、redhat

useradd  tom
grep  --color tom  /etc/passwd  /etc/shadow  /etc/group   /etc/gshadow # 设置密码,在kylin中给用户设置的密码,必须满足规定的复杂度要求
passwd   # 修改当前用户的密码
passwd 用户名  # 指定修改某一用户的密码,只能root用户使用[root@kylin-xu ~]# passwd tom
更改用户 tom 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。# 切换用户,从root切换到普通用户,不管该普通用户的是否设置了密码,都是不需要输入密码的,但是从普通用户切换回root是需要密码的
# 切换用户后,如何退出?   快捷键:CTRL+d   命令:logout
# 查看当前系统的登录用户相关命令
# id命令
# whoami命令
[root@kylin-xu ~]# su - tom
[tom@kylin-xu ~]$ whoami
tom
[tom@kylin-xu ~]$ id
用户id=1000(tom) 组id=1000(tom) 组=1000(tom)
[tom@kylin-xu ~]$ su - root
密码:
上一次登录: 二 11月  5 11:46:43 -03 2024 tty1 上[root@kylin-xu ~]# 注销
[tom@kylin-xu ~]$ logout
[root@kylin-xu ~]# 
  • Ubuntu
useradd 的时候不创建家目录,命令解释器是/bin/sh(/bin/dash)
# 虽然我们创建了用户,而且在 /etc/passwd中也有相关信息,但是他会在系统中去创建家目录,需要我们在创建用户时额外指定,家目录
# 而且我们可以看到在 Ubuntu 中用户的解释器默认是 sh,在Ubuntu中 /bin/sh  -->  /bin/dash,这和我们经常使用的bash 解释器是有区别的,因此我们还需要自己在创建用户时自己制定 解释器为 /bin/bash
root@xu-ubuntu:~# useradd tom
root@xu-ubuntu:~# grep tom /etc/passwd
tom:x:1001:1001::/home/tom:/bin/sh
root@xu-ubuntu:~# ll /home/tom
ls: cannot access '/home/tom': No such file or directoryuseradd 
-s 指定命令解释器   
-m 表示在创建用户时同时创建家目录   用户  useradd    -s /bin/bas -m   tom
root@xu-ubuntu:~# ll /home/tom -d
drwxr-x--- 2 tom tom 4096 Nov  6 07:00 /home/tom/
root@xu-ubuntu:~# grep tom /etc/passwd
tom:x:1001:1001::/home/tom:/bin/bash
useradd 说明
-s 指定命令解释器
-m 创建家目录
-M 不创建家目录
-u 指定uid,不指定uid的话,就是从上一个uid顺延 +1
-c 添加用户的增加说明信息
  • 添加 虚拟用户(命令解释器/sbin/nologin,不创建家目录),uid12306, abc
# kylin  redhat
useradd -u 12306  -s /sbin/nologin  -M abc  
[root@kylin-xu ~]# useradd -u 12306  -s /sbin/nologin  -M abc
[root@kylin-xu ~]# grep abc /etc/passwd
abc:x:12306:12306::/home/abc:/sbin/nologin
[root@kylin-xu ~]# ll /home/abc -d
ls: 无法访问 '/home/abc': 没有那个文件或目录# ubuntu,在Ubuntu中由于它在创建用户时默认是自动创建家目录的,所以我们可以不加 -M 选项
root@xu-ubuntu:~# useradd -u 12306 -s /sbin/nologin abc
root@xu-ubuntu:~# grep abc /etc/passwd
abc:x:12306:12306::/home/abc:/sbin/nologin
root@xu-ubuntu:~# ll /home/abc -d
ls: cannot access '/home/abc': No such file or directory
  • su 与su -区别
su命令切换用户,一些环境变量没有更新
su - 的时候环境变量就更新。
  • passwd 红帽类系统 非交互改密码,只能 root 使用
echo   '0207xrzh!'  |passwd --stdin tom
  • passwd ubt,debian passwd命令没有--stdin需要使用chpasswd
# 首先需要把用户名和对应的密码写入文件中
echo "tom:123" > passwd.txt
cat passwd.txt | chpasswd

用户模板

在我们创建新的用户后,用户的家目录下是存在文件的

[root@kylin-xu ~]# ll /home/tom -a
总用量 20
drwx------ 2 tom  tom   97 11月  5 11:51 .
drwxr-xr-x 3 root root  17 11月  5 11:42 ..
-rw------- 1 tom  tom   27 11月  5 11:51 .bash_history
-rw-r--r-- 1 tom  tom   75  8月 25  2022 .bash_logout
-rw-r--r-- 1 tom  tom   71  8月 25  2022 .bash_profile
-rw-r--r-- 1 tom  tom  138  8月 25  2022 .bashrc
-rw-r--r-- 1 tom  tom  204  3月 22  2022 .zshrc# 新创建的用户家目录下存在什么文件,取决于/etc/skel目录下的文件,/etc/skel 相当于是用户家目录的模板
# 我们可以修改/etc/skel下的内容,这样新创建的用户的家目录也就会发生改变
[root@kylin-xu ~]# cd /etc/skel/
[root@kylin-xu skel]# ls
[root@kylin-xu skel]# echo hello > readme.txt
[root@kylin-xu skel]# cd 
[root@kylin-xu ~]# useradd jerry
[root@kylin-xu ~]# ll /home/jerry/
总用量 4
-rw-r--r-- 1 jerry jerry 6 11月  5 14:26 readme.txt
[root@kylin-xu ~]# cat /home/jerry/readme.txt 
hello

2、删除

  • userdel 删除用户,默认不删除家目录。
  • userdel -r 删除用户与家目录。
  • 修改/etc/passwd用户名前加上 #号(注释)
userdel abc
userdel -r abc # 删除用户时,同时删除用户家目录# 直接修改 /etc/passwd 删除用户,在对应行前加注释
[root@kylin-xu ~]# vim /etc/passwd
[root@kylin-xu ~]# id abc
id: “abc”:无此用户
[root@kylin-xu ~]# vim /etc/passwd
[root@kylin-xu ~]# id abc
用户id=12306(abc) 组id=12306(abc) 组=12306(abc)

3、查看用户信息

  • whoami
  • id 查看用户uid,gid,查看用户是否存在,用户属于哪些组、附加组
  • w 查看谁登录了正在干啥,负载信息...
[root@kylin-xu ~]# w
# 2 users:有两个用户正在登录系统
# load average:平均负载,和CPU核心数进行比较  最近一分钟  最近五分钟  最近十五分钟
# up 13:12:运行时间
# TTY:虚拟终端,本地叫tty1,远程交pts12:22:21 up 13:12,  2 users,  load average: 0.01, 0.03, 0.04
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      11:46   35:33   0.06s  0.06s -bash
root     pts/2     11:17    1.00s  0.13s  0.01s w
[root@kylin-xu ~]# tty
/dev/pts/2# 云服务器
root@xu-ecs:~# w15:22:12 up 1 day, 10 min,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ecs-assi pts/1    -                Tue15   24:06m  0.01s  0.01s sudo su -
root     pts/2    60.28.43.165     15:22    1.00s  0.01s  0.00s w
  • last 查看用户登录情况
[root@kylin-xu ~]# last
root     tty1                          Tue Nov  5 11:46   still logged in
root     pts/2        192.168.121.1    Tue Nov  5 11:17   still logged in
。。。
reboot   system boot  4.19.90-52.22.v2 Mon Nov  4 07:22 - 14:40  (07:17)
。。。
  • lastlog 查看所有用户登录情况
[root@kylin-xu ~]# lastlog
用户名           端口     来自             最后登录时间
root             pts/0    192.168.121.1    二 11月  5 12:31:22 -0300 2024
bin                                        **从未登录过**
daemon                                     **从未登录过**
adm                                        **从未登录过**
lp                                         **从未登录过**
sync                                       **从未登录过**
shutdown                                   **从未登录过**
halt                                       **从未登录过**
mail                                       **从未登录过**
operator                                   **从未登录过**
games                                      **从未登录过**
ftp                                        **从未登录过**
nobody                                     **从未登录过**
systemd-coredump                           **从未登录过**
systemd-network                            **从未登录过**
systemd-resolve                            **从未登录过**
systemd-timesync                           **从未登录过**
tss                                        **从未登录过**
libstoragemgmt                             **从未登录过**
rpc                                        **从未登录过**
dbus                                       **从未登录过**
polkitd                                    **从未登录过**
unbound                                    **从未登录过**
named                                      **从未登录过**
setroubleshoot                             **从未登录过**
apache                                     **从未登录过**
cockpit-ws                                 **从未登录过**
chrony                                     **从未登录过**
abrt                                       **从未登录过**
dhcpd                                      **从未登录过**
rpcuser                                    **从未登录过**
sshd                                       **从未登录过**
pesign                                     **从未登录过**
tcpdump                                    **从未登录过**
nginx                                      **从未登录过**
tom              pts/2                     二 11月  5 11:47:09 -0300 2024
abc                                        **从未登录过**

4、修改

  • 对已有的用户修改信息.useradd.
  • usermod修改。

参数和useradd命令的参数类似

【4】、用户安全防护

1、sudo

提权,给普通用户使用

  • 普通用户可以临时成为root,去运行对应的命令

  • 类似于皇帝给大臣发尚方大宝剑.

  • root用户去配置,普通用户进行使用。

  • 授权xu用户,以root权限运行tail,cat,less,head.more,grep

[root@kylin-xu ~]# passwd xu
更改用户 xu 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
  • root授权,visudo 相当于运行 vi /etc/sudoers,我们建议使用visudo去进行修改他可以对我们的修改进行,不建议使用/etc/sudoers
# 在root用户进行授权,具体授权的命令我们需要写绝对路径,多个命令之间使用逗号和空格分开
[root@kylin-xu ~]# visudo 
xu      ALL=(ALL)       /bin/tail, /bin/less, /bin/more
[root@kylin-xu ~]# su - xu
上一次登录: 二 11月  5 16:00:10 -03 2024 pts/0 上
[xu@kylin-xu ~]$ sudo -l   # 通过 sudo -l 查看当前可以执行什么命令我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:#1) 尊重别人的隐私。#2) 输入前要先考虑(后果和风险)。#3) 权力越大,责任越大。[sudo] xu 的密码:
匹配 %2$s 上 %1$s 的默认条目:!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZEKDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATIONLC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGELINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin用户 xu 可以在 kylin-xu 上运行以下命令:(ALL) /bin/tail, /bin/less, /bin/more# 在使用被授权的命令时,需要加上 sudo。
[xu@kylin-xu ~]$ sudo tail -1 /var/log/secure  
Nov  5 16:21:58 kylin-xu sudo[190100]: pam_unix(sudo:session): session closed for user root

在对普通用户进行授权时,不要给很大,需要啥给啥

小结:

  • 给普通用户配置sudo权限。
  • root用户通过visudo进行授权,vi/vim /etc/sudoers
  • 普通用户:sudo + 命令

ubt配置visudo 默认使用的是nano编辑器

在Ubuntu中修改 /etc/sudoers 时默认使用的时nano编辑器,这是可以修改的

Defaults        env_editor,editor=/bin/vim
:wq!  强制保存退出
# 之后就可以使用 visudo 打开了
root@xu-ubuntu:~# visudo 
visudo: /etc/sudoers.tmp unchanged

授权xu所有命令并不需要输入密码

sudo -k : 清除缓存,如果没有设置免密,在第一次输入密码后,会有缓存,在一定时间内也是不需要输入密码

visudo
xu      ALL=(ALL)       NOPASSWD: ALL
# ALL=(ALL)
# 所有主机=(任何用户)
[xu@kylin-xu ~]$ sudo -k
[xu@kylin-xu ~]$ sudo -l 
匹配 %2$s 上 %1$s 的默认条目:!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZEKDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATIONLC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGELINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin用户 xu 可以在 kylin-xu 上运行以下命令:(ALL) NOPASSWD: ALL
  • 小结:
    • 给普通用户配置sudo权限。
    • root用户通过visudo进行授权,vi/vim /etc/sudoers
    • 普通用户:sudo + 命令
    • 配置写/etc/sudoers最后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833124.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Logisim-016-海明解码

仓库地址 https://gitee.com/gitliang/logisim-to-cpu

Logisim-016-海明编码

仓库地址 https://gitee.com/gitliang/logisim-to-cpu

Object

Object 类是 Java 中的顶级父类, 所有的类都直接或间接继承于 Object 类. Object 类中的方法可以被所有子类访问. Object 类没有成员变量, 所以只有无参构造方法. Java 中, 子类的共性才会往父类中去抽取, 然而不可能有一个属性是所有类的共性, 所以在 Object 这个类中, 是没有…

Windows平台下安装与配置MySQL5.7

1.下载mysql安装文件 下载地址:https://downloads.mysql.com/archives/installer/2.安装与配置MySQL 双击打开,接受许可协议,点击下一步:选择自定义安装,点击下一步:选择要安装的产品,点击下一步:点击执行按钮:安装完成,点击下一步进入配置界面:配置界面继续点击下一…

C++ 逆向之常用字符集互转

在过往的编程过程中,常常会因为碰到字符集问题而头痛,而每次在进行字符集转换的时候,各种搜索网上文档,想找字符集转换的示例程序,但是都不尽人意,本篇文章的目的就是彻底解决之前编程过程中对字符集认识以及字符集转换之间似懂非懂、云里雾里的状态,并在文章结尾附上 A…

团队作业4——项目冲刺-1-第二篇

团队作业4——项目冲刺-1-第二篇这个作业属于哪个课程 <计科22级34班>这个作业要求在哪里 <作业要求>这个作业的目标 修改完善需求规格说明书、系统设计、Alpha任务分配计划、测试计划GitHub 链接 https://github.com/tangliweiwww/ChatGpt🍟一、团队 1.团队名称…

[Paper Reading] Fusing Monocular Images and Sparse IMU Signals for Real-time Human Motion Capture

目录名称TL;DRMethodLocal Pose EstimationRNN-P1RNN-P2RNN-P3Global Translation EstimationRNN-T1RNN-T2RNN-T3Hidden State Feedback MechanismExperiment效果可视化总结与发散相关链接 名称 link 时间:23.09 作者与单位:主页: https://github.com/shaohua-pan/RobustCap…

HarmonyOS Next 入门实战 - 创建项目、主题适配

​开发一个简单的demo,其中涉及一些鸿蒙应用开发的知识点,其中涉及导航框架,常用组件,列表懒加载,动画,深色模式适配,关系型数据库等内容,在实践中学习和熟悉鸿蒙应用开发。 ​​ ​​ 首先下载并安装DevEco Studio开发环境,下载完成后按照提示安装即可,过程不在多说…

rust学习八、包和模块

总体上,也没有什么特别的地方,和其它语言比较起来。 我们可以看懂熟悉的字眼:包括、模块、use、公共等等 如果是英文,则需要知道crate、pub。 本章节对应相关书籍的第七章节. 一、一个rust可执行程序的大体结构 就本章节而言,尚未接触到一个非常复杂的工程结构,据说有什么…

starrycan的pwn学习记录1

一.Introducation 0x01 简介CTF 0x02 什么是pwn ”Pwn”是一个黑客语法的俚语词,是指攻破设备或者系统 。发音类似“砰”,对黑客而言这就是成功实施黑客攻击的声音--砰的一声,被“黑”的电脑或手机就被你操纵了。 CTF中的pwn CTF中的PWN主要是针对于二进制漏洞挖掘与利用,通…

计算机组成原理与操作系统 第二章 处理机组成与管理

目录1.CPU的功能和组成1.1CPU的四大功能1.2CPU的基本组成1.3 一条指令如何在CPU内运行2.指令系统2.1机器语言与指令2.1.1基本概念2.1.2一条指令一般应包含的信息2.1.3指令的类型与功能2.1.4寻址方式2.2指令格式的设计2.2.1基本概念2.2.2指令类型2.2.3操作码类型2.2.4指令设计2.…

UWB无线通信技术

UWB定位与通信技术标准第2章 UWB无线通信技术 UWB(超宽带)技术最早诞生于无线通信领域,该新兴技术一出现就备受关注UWB信号有着极大的带宽,其时间分辨率高、抗多径效应能力强,被认为是高速率短距离无线通信中具有很强竞争力的候选方案之一为此,本章寻根溯源,从UWB无线通…