Linux用户管理

news/2024/10/7 16:26:13

Linux用户管理

  • Linux下面我们管理系统通过对应的用户.
  • 我们当前是root用户.我们就需要有不同类型的用户,然后通过不同的用户管理系统.
  • 未来工作中的70%故障,安全事故,基本内部误操作导致.
  • Linux是多用户系统,多个用户登录一般不会互相影响.

1. 分类

UID,GID

  • ⭐ ⭐ ⭐ ⭐ ⭐ UID:User ID用户id号,类似于身份证号码.
  • GID:Group ID用户组号,类似于户口本号码.
Linux用户分类        UID        说明
root                 0         超级用户,管理员用户
虚拟用户(傀儡用户)    1-999      用于保证服务/进程正常运行的用户,这种用户无法直接使用.
普通用户             >= 1000   开始没有root那么高权限的用户,只能管理自己的家目录

2.相关文件

  • 添加用户,系统会修改这几个文件的内容.
  • 不要直接修改这几个文件.
文件               说明
/etc/passwd       不存放密码,用于存放用户的信息.UID,GID,家目录,命令解释器.
/etc/group        用户组信息.
/etc/shadow       密码信息.密码过期.通过man 5 shadow查看帮助
/etc/gshadow      几乎不用,用户组密码.

/etc/passwd ⭐⭐⭐⭐⭐
主要能看出与关注:用户名,UID,家目录,命令解释器即可(是否为虚拟用户).

1:统计/etc/passwd中可以登录系统的用户的数量
grep '/bin/bash' /etc/passwd | wc -l2:统计/etc/passwd中虚拟用户数量(命令解释器非/bin/bash)
grep -v '/bin/bash' /etc/passwd |wc -l3:统计排除root用户后可登录系统的用户数量(命令解释器为/bin/bash)
grep -v '^root' /etc/passwd |grep '/bin/bash' |wc -l
# ^ 以...开头的行,三剑客

3. 核心命令

3.1 增:添加用户

红帽系列系统中:useradd,adduser一致,添加普通用户,虚拟用户.
debian系列系统中: useradd添加用户,默认命令解释器/bin/sh,需要指定-s/bin/bash

useradd选项     说明
-u             # 指定uid
-s             # 指定命令解释器,默认是/bin/bash(红帽类系统) ubt/debian 要指定-s /bin/bash
-m             # 创建家目录(ubt需要指定)
-M             # 不创建家目录.

红帽系列添加用户user1,设置密码,切换用户⭐ ⭐ ⭐ ⭐ ⭐

#1.添加用户
useradd user1
#2.设置密码
passwd user1 #passwd 用户名只能root用户使用,其他用户只能运行
passwd
#3.切换用户 switch user
su - user1
#4.查看当前用户名 我是谁
whoami
#5.退出当前用户
ctrl + d #或者输入logout/exit

debian系列添加用户⭐ ⭐ ⭐ ⭐ ⭐

# 指定命令解释器和要求创建家目录
[root@ubuntu2204 ~]# useradd -s /bin/bash -m xk2
[root@ubuntu2204 ~]# passwd xk2
New password: 
Retype new password: 
passwd: password updated successfully

su - 与 su区别
su切换用户 switch user切换用户.(比如从root切换到user1普通用户时,user所在家目录还在/root下)
su - 是su命令的选项.系统在切换用户时更新环境变量(推荐)

添加虚拟用户vm1,指定uid 9999.⭐ ⭐ ⭐ ⭐ ⭐

# 潜台词:虚拟用户不需要创建家目录,指定命令解释器为/sbin/nologin
[root@Kylin-V10-sp3 ~]# useradd -u 9999 -s /sbin/nologin -M vm1
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# grep vm1 /etc/passwd
vm1:x:1001:1001::/home/vm1:/sbin/nologin
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# tree /home/
/home/
└── xk2

非交互修改密码(passwd为交互输入密码)

# 非交互: 一个回车/一键自动化实现功能
####红帽系统####
# 方法01: passwd选项实现(主要说这个)
# passwd --stdin非交互模式,通过管道获取密码.
[root@Kylin-V10-sp3 ~]# echo 1 | passwd --stdin user1
###红帽系统+ubt######
#方法02: 专用的批量修改密码的命令chpasswd
[root@ubuntu2204 ~] cat pass.txt |chpasswd
[root@ubuntu2204 ~]# cat pass.txt
xk:1
xk2:2

3.2 删:删除用户

userdel默认不会删除家目录,需要加上参数-r 
[root@Kylin-V10-sp3 ~]# userdel -r xk2
如果删除失败,可以通过kill结束对应的进程,占用用户的进程.
#推荐大家通过在/etc/passwd进行注释操作,替代userdel删除.避免使用userdel.

3.3 改

修改已有用户的信息,很少用 了解即可 usermod
usermod选项与useradd类似

[root@ubuntu2204 ~]# usermod -c 'xk linux'  xk   # 给xk用户添加注释信息"xk linux"
[root@ubuntu2204 ~]# 
[root@ubuntu2204 ~]# id xk
uid=1000(xk) gid=1000(xk) groups=1000(xk),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd)
[root@ubuntu2204 ~]# 
[root@ubuntu2204 ~]# usermod -G root xk  # 改变用户组
[root@ubuntu2204 ~]# 
[root@ubuntu2204 ~]# id xk
uid=1000(xk) gid=1000(xk) groups=1000(xk),0(root)
[root@ubuntu2204 ~]# 
[root@ubuntu2204 ~]# grep xk /etc/passwd
xk:x:1000:1000:xk linux:/home/xk:/bin/bash
xk2:x:1001:1001::/home/xk2:/bin/bash
[root@ubuntu2204 ~]# 
[root@ubuntu2204 ~]# usermod -s /sbin/nologin xk   # 改变解释器信息
[root@ubuntu2204 ~]# 
[root@ubuntu2204 ~]# grep xk /etc/passwd
xk:x:1000:1000:xk linux:/home/xk:/sbin/nologin
xk2:x:1001:1001::/home/xk2:/bin/bash
[root@ubuntu2204 ~]#

3.4 查:查看用户的信息

查询用户信息指令   说明
whoami           # 显示当前用户名字
id               # 查看用户的信息或检查用户是否存在.
w                # 查看谁登录了系统并在做什么
last             # 查看用户的登录情况(谁,哪里,登入时间,登出时间)
lastlog          # 查看所有用户的登录情况查询用户信息指令  说明                                       应用场景
whoami     显示当前用户名字                                  # 查看用户,写入脚本剧本.
id         查看用户的信息或检查用户是否存在.                  # 检查用户是否存在.
w          查看谁登录了系统并在做什么查看系统登录了哪些用户?    # 排查与定位系统是否繁忙(平均负载)?
last       查看用户的登录情况(谁,哪里,登入时间,登出时间)       # 查看历史登录信息.
lastlog    查看所有用户的登录情况                             # 查看历史登录信息.

检查用户是否存在

[root@Kylin-V10-sp3 ~]# id xk2
用户id=1000(xk2) 组id=1000(xk2) 组=1000(xk2)
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# id user3
id: “user3”:无此用户
[root@Kylin-V10-sp3 ~]# 

查看此时此时系统中有谁登录了?并且正在做啥?

# 登录用户名名字(USER)
# 登录用户来自于哪里(FROM)
# 登录用户正在做什么(WATH)
[root@ubuntu2204 ~]# w16:58:44 up  6:31,  3 users,  load average: 0.08, 0.04, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
xk       tty1     -                16:58   20.00s  0.05s  0.01s -bash
root     pts/0    10.0.0.1         16:57    2.00s  0.01s  0.00s w
root     pts/1    10.0.0.1         16:58   12.00s  0.01s  0.00s tail -f /etc/passwd
[root@ubuntu2204 ~]# 
[root@ubuntu2204 ~]# tty
/dev/pts/0
[root@ubuntu2204 ~]# # tty表示终端  tty1表示本地登录
# WHAT -bash表示当前没做操作
# FROM  - 表示本地的登录

其他命令

[root@Kylin-V10-sp3 ~]# whoami
root
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# last | head -3    # 查看所有用户登录,登出情况.是否有异常登录
root     pts/2        10.0.0.1         Wed Aug 28 12:52   still logged in
root     pts/1        10.0.0.1         Wed Aug 28 11:42 - 14:15  (02:33)
root     pts/0        10.0.0.1         Sun Aug 25 12:25 - 14:17 (3+01:52)
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# lastlog | head -5   # 所有用户最近1次登录情况.
用户名           端口     来自             最后登录时间
root             pts/2    10.0.0.1         三 8月 28 12:52:11 +0800 2024
bin                                        **从未登录过**
daemon                                     **从未登录过**
adm                                        **从未登录过**
[root@Kylin-V10-sp3 ~]# 
[root@Kylin-V10-sp3 ~]# export LANG=C
[root@Kylin-V10-sp3 ~]#              
[root@Kylin-V10-sp3 ~]# lastlog | head -5
Username         Port     From             Latest
root             pts/2    10.0.0.1         Wed Aug 28 12:52:11 +0800 2024
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
[root@Kylin-V10-sp3 ~]# 

4. 用户组

5. 安全防护

  • 给危险命令设置别名,暂时无法使用rm。shell编程可以写回收站脚本,代替rm命令
  • 给普通用户设置sudo权限,以root权限执行命令
  • 用户操作审计,堡垒机,跳板机

5.1 sudo提权

5.1.1 应用场景
  • 普通用户需要以root权限运行命令的时候或查看没有权限的文件的时候.
  • 使用sudo实现需求.
  • 也就是说想让普通用户临时成为root
5.1.2 案例
# 1 授权xk用户查看日志权限
选择好命令,head/tail/grep/less/more/cat
var log messages
var log secure
..
root用户进行授权(尚方宝剑)
xk用户使用(亮剑)
visudo #命令
100行
写入配置
xk ALL=(ALL) /bin/cat, /bin/head, /bin/less, /bin/more,
/bin/tail
保存
修改xk密码
echo 密码 | passwd --stdin oldboytail /var/log/secure
sudo tail /var/log/secure
输入当前用户密码# 2: 授权devops-li所有权限并且不需要输入密码
# root授权
devops-li ALL=(ALL) NOPASSWD: ALL # devops-li测试
# 查看当前用户具有什么sudo权限
sudo -l#然后切换到root
sudo su - 直接切换到root不需要密码.
su - root 或su - 一个意思.切换为root.# ubt/debian配置sudo
vim /etc/sudoers
在env_reset这行上面写上,
Defaults editor=/usr/bin/vim
Defaults env_reset
visudo的时候默认使用的是nano编辑器
5.1.3 sudo总结

能够说出sudo应用场景.
能够给普通用户配置sudo权限执行指定的命令.
能够给普通用户配置sudo权限执行所有命令并且不需要密码.
visudo === vi /etc/sudoers
后面直接添加到末尾.

5.2 别名

用于给命令设置昵称.
用途:
🅰 给危险命令加层防护. ✅
🅱 添加方便.给ls -l 设置别名ll

5.2.1 查看系统已有别名

# Ubuntu
[root@ubuntu2204 ~]# alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
[root@ubuntu2204 ~]# # kylin 
[root@Kylin-V10-sp3 ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
[root@Kylin-V10-sp3 ~]# 

5.2.2 设置别名 ⭐⭐⭐⭐只要运行rm命令,实际运行echo命令输出警告 pls do not use rm

# 临时配置别名
alias rm='echo pls do not use rm'
# 测试别名
touch /test/1.txt
rm -fr /test/1.txt #发现无法删除
# 临时取消别名,使命令可用
\rm -fr /test/1.txtt#(修改/etc/profile文件)永久配置别名
#1.修改配置文件 /etc/profile
vim /etc/profile
写入到最后一行
alias rm='echo pls do not use rm'
#2. 自己配置的rm别名与系统配置的rm别名冲突
#修改~/.bashrc里面关于rm的别名(只限于rm别名的时候)
vim ~/.bashrc
找到rm的那一行,行首添加个#注释即可.
#3. 别名或环境变量生效
source /etc/profile
#4. 最后测试(重新连接测试)
alias rm

5.2.3 配置grep,egrep别名,增加颜色

命令行临时测试
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
永久生效,/etc/profile
重新登录并生效,检查

5.3 Xshell无法使用

  • 备用方案1:git bash
  • 备份方法2:powershell
  • 苹果系统(linux,unix)
上面各种系统通用的2个命令
ssh (远程连接)  ssh -p 22 root@10.0.0.200
scp (传输文件)  scp -P 22 -r KeePass-2.50.rar root@10.0.0.200:/home/

5.4 /etc/skel/

5.4.1 详解

  • 目录下存放新用户的家目录模板.
  • 添加新用户的时候会复制/etc/skel下面所有内容到新用户的家目录.
  • 应用场景:
    想让所有新用户,家目录下带个说明文件.
    家目录被你删除了,通过复制/etc/skel下面内容恢复.
[root@kylin-v10-sp3 ~]# ll -a /etc/skel/
总用量 24
drwxr-xr-x. 2 root root 62 8月 23 12:14 .
drwxr-xr-x. 81 root root 8192 9月 4 08:18 ..
-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc

5.4.2 故障案例:用户不小心误删除家目录,导致命令行变成-bash-4.2$形式⭐⭐⭐⭐⭐⭐

# 故障模拟(centos7)
第1步:注释掉/etc/profile中的 PS1的部分.
加上井号即可:
vim /etc/profile
G到最后一行,如果没有PS1,则不用修改直接到第2步即可.
#export PS1=xxxxxxxxxx
第2步:添加普通用户
useradd user1
第3步:切换用户,切换到user1用户
su - user1
第4步骤:删根
rm -f ~/.bash*
第5步骤:退出用户,重新切换到oldboy
按ctrl+d退出用户
su - user1重启切换到oldboy即可# 故障原因:
用户误删除家目录下面的几个隐藏文件导致的.
.bash_profile 和.bashrc
命令行PS1的样子没了.# 故障解决
从/etc/skel/下面重新复制即可(出故障的问题)
cp /etc/skel/.bash* ~
重新登录即可.

5.5 堡垒机

核心应用场景:

  • 加强网站,系统安全(为了等保测评).
  • 对用户操作,审计,限制(sudo),屏蔽命令.

http://docs.jumpserver.org 帮助与部署文档.
http://demo.jumpserver.org 演示站点.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

创建结算清单时提示冲突解决方案

一、报错界面 二、原因分析【我的冲突列表】下没有这个冲突 原来组织间结算单独表单显示。 依次点击【供应链】→【组织间结算】→【基础资料】→【组织间结算冲突操作列表】,如下图所示 三、解决方式

最优化与计数

动态规划:可以认为由状态,转移两个过程构成 树上优化技巧 P1272 重建道路 设,dp[i][j]为包含i的大小为j的连通块的最小操作次数,枚举i的每个子树一个个合并上去。 考虑两个点i,j只会在lca处有计算时间贡献,所以是\(O(n^2)\)的 LOJ160. 树形背包 先跑dfs序,设dp[i][w]为从第…

轻松搞定工厂数据分析:一款报表工具就够了

在当今快速发展的工业环境中,工厂管理者越来越依赖数据分析来优化生产流程、提升效率、降低成本。然而,传统的数据分析工具通常较为复杂,操作困难且价格高昂,这让许多工厂望而却步。不过,最近我发现了一款非常实用的报表工具,能够帮助工厂管理者轻松完成综合数据分析,并…

Redis组件介绍(二)

今天我们继续学习 Redis。写在前面 今天我们继续学习 Redis。 Redis 常用数据类型 在 Redis 中,每个存储的键值对中,键是 String 类型,值可以是不同的数据类型。Redis 的索引是含头含尾的。 String 内存模型常用指令设置值SET key value: 设置一个 key/value。 MSET key1 va…

财务报表分析指南:如何掌握核心指标?

一、概述 财务报表中有大量信息,如果我们在分析时缺乏明确的方向或忽视了重点,就很容易在繁杂的数据中迷失方向。本文将深入探讨财务报表中的几个重要指标,帮助大家更有针对性地理解这些内容,包括如何分析资产负债率、解读净资产收益率,以及计算销售复合增长率。二、关键指…

阿里巴巴对于不同职级的定义和要求

作为国内最知名的互联网大厂,阿里巴巴集团的职级体系经常成为其他互联网企业的用人参考标准,今天从我个人的角度带大家了解一下阿里的职级体系1、P1-P3 是低端职能以及外包的岗位,P4、P5 是专员,一般硕士学历校招进入阿里巴巴职级都是P5,学历极其突出的或者搞技术科研的除…

WPF-Prism Region使用

Region:区域,我的理解,就是窗体上的一部分地方,不是整个窗体。所以区域里都是用户控件UserControl,就是为了解决在窗体上显示一个自定义的公用的控件的。共两种用法:1、原始的方法(不借助prism的依赖注入),用IRegionManager接口,来完成区域的注册和设置。注册代码如下…

需求分析的 5 个步骤,可解决 80% 产品问题

本文将详细介绍拆解需求的五个步骤及一个实际案例分析,帮助读者掌握如何从不同角度切入,精确捕捉并满足用户需求。 一、拆解需求的5个步骤&通用分析角度 1. 谁在用 最基础也是最重要的一步——用户分层。因为同一个功能,不同的用户群体的需求是有差异的。 比如,首次话…