【运维知识基础篇】Linux用户管理

吾日三省吾身,想出类拔萃,要把知识学牢,学全,学深,学广。


本期我们介绍Linux用户管理的有关内容,包括:用户分类、用户相关配置文件、用户相关目录、用户管理相关命令、删除用户、修改用户、修改用户文件的属组属主、用户间的切换、修改用户密码、密码管理、优化SSH服务、MD5校验、开机启动流程、如何让一个命令或服务开机自动启动、查询系统信息命令、sudo临时让用户获得权限(sudo提权)

用户分类

第一类:管理员   root最高权限 相当于皇帝
第二类:虚拟用户 系统运行程序必须有一个用户来支持,用户不需要登录系统,目的就是为了维持程序
第三类:普通用户 常用个人用户,为了提高系统的安全性,企业都是用普通用户登录系统
登录系统
可以通过uuid区分 0为管理员 1-999的是虚拟用户(centos6是1-499) 普通用户是1000+
系统默认创建的是上面的,我们也可以自己去指定普通用户和虚拟用户的

用户相关配置文件

[root@VMware-koten ~]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@VMware-koten ~]#

第一列:用户名称 新创建的用户在文件的底部 登录系统需要验证的用户名
如果用户前面加上#注释 则此用户无法登录
同事离职,先别删,删了家目录下所有文件都没有了

第二列:x 加密的密码 所有的用户密码在passwd中都是以x表示
如果删除x则用户无法登录,但是可以先登录别的用户在linux系统中进行用户间切换
正常有x切换,需要密码,删除了x就不要密码了

第三列:表示用户的uid 唯一标识

第四列:表示用户的GID 组ID 小组的名称

第五列:表示用户的描述信息,是啥都行,可有可无

第六列:表示用户的家目录,管理员是根下的root,普通用户是根下的home下的用户名称的目录

第七列:表示解释器
Linux操作系统默认的解释器就是bash

/bin/bash       表示可以登录操作系统,表示管理员和普通用户的,可以登录操作系统的
/sbin/nologin   表示虚拟用户,不可以登录操作系统

示例1:统计管理员有几个,虚拟用户有几个,普通用户有几个

示例2:通过统计解释器,来统计管理员 虚拟用户 普通用户的数量

/etc/shadow        放密码的地方,root:到后面的一个冒号
/etc/group         用户组的信息
/etc/gshadow       用户组密码的信息

用户相关目录

/etc/skel    作用:所有普通用户家的模板
创建用户的流程
1、使用命令useradd 用户名 创建用户 会自动创建家目录/home/boy/
2、复制/etc/skel目录下隐藏的环境变量文件到家目录下
3、复制后将文件的属主数组修改为普通用户下boy的权限

适用场景:不小心删了家目录下的隐藏文件

用户管理相关命令

useradd  用户名称   #创建用户,一次性只能创建一个用户
    -u    指定uid
    -s    指定解释器
    -M    不创建家目录(创建虚拟用户)如果不指定,默认是创建家目录
    -g    属于哪个组(默认属于自己组)指定gid

    -G    附属组
       
创建koten用户的同时,系统默认创建一个koten的组

[root@VMware-koten ~]# useradd koten    
useradd: user 'koten' already exists    #该用户已经存在

[root@VMware-koten ~]# id koten
uid=1001(koten) gid=1001(koten) groups=1001(koten)
[root@VMware-koten ~]# 

示例1:指定创建koten用户指定UID为666 
[root@VMware-koten ~]# useradd -u666 koten #最好是把参数选项放在前面
[root@VMware-koten ~]# 

查看koten用户
[root@VMware-koten ~]# id koten
uid=666(koten) gid=1001(koten) groups=1001(koten)
[root@VMware-koten ~]# 

示例2:删除用户
[root@VMware-koten ~]# userdel -r koten #加-r删除用户的所有东西
[root@VMware-koten ~]# 

示例3:企业案例:创建普通用户
[root@VMware-koten ~]# useradd koten

[root@VMware-koten ~]# grep koten /etc/passwd
koten:x:666:1001::/home/koten:/bin/bash
[root@VMware-koten ~]# 

示例4:指定UID创建一个虚拟用户
[root@VMware-koten ~]# useradd -s /sbin/nologin -M xunikoten
[root@VMware-koten ~]# id xunikoten
uid=1001(xunikoten) gid=1002(xunikoten) groups=1002(xunikoten)
[root@VMware-koten ~]# grep xunikoten /etc/passwd
xunikoten:x:1001:1002::/home/xunikoten:/sbin/nologin
[root@VMware-koten ~]# ll /home
total 0
drwx------ 2 koten  koten  62 Mar 11 09:35 koten
[root@VMware-koten ~]# 

示例5:企业案例:创建虚拟用户 指定UID 不创建家目录 不允许登录

[root@VMware-koten ~]# useradd -u111 -s /sbin/nologin -M www
[root@VMware-koten ~]# id www
uid=111(www) gid=1003(www) groups=1003(www)
[root@VMware-koten ~]# grep www /etc/passwd
www:x:111:1003::/home/www:/sbin/nologin
[root@VMware-koten ~]# ll /home/
total 0
drwx------ 2 koten  koten  62 Mar 11 09:35 koten
[root@VMware-koten ~]# 

示例6:创建uid为777 gid为777 不允许登录 不创建家目录的blog用户
指定组的时候小组必须得存在,先创建组为777的
[root@VMware-koten ~]# useradd -u777 -g777 -s /sbin/nologin -M blog
useradd: group '777' does not exist

[root@VMware-koten ~]# groupadd -g777 blog
[root@VMware-koten ~]# 
[root@VMware-koten ~]# useradd -u777 -g777 -s /sbin/nologin -M blog
[root@VMware-koten ~]# id blog
uid=777(blog) gid=777(blog) groups=777(blog)
[root@VMware-koten ~]# 

创建用户小结:
创建个人登录系统的普通用户:useradd 姓名 然后指定密码
创建系统运行程序的虚拟用户
groupadd -g666 www
useradd -u666 -g666 -M -s /sbin/nologin www

删除用户

userdel -r 用户名称
-r 删除用户和用户相关的所有内容 不光是家目录,还有邮件啥的 /var/spool/mail
如果只删除了用户,没有删除相关信息,则无法继续创建,需要手动去删

groupdel 删除组

修改用户

usermod 参数选项
    -u    修改uid
    -g    修改属组
    -G    修改附加组 可以逗号分割多加几个
    -c    修改描述,一般都是系统创建有描述,自己创建的都没有

usermod -groot test #权限和陌生人一样,所以添加没有意义
usermod -G'' test #删除附加组

修改文件的属组和属主

chown 属主.属组 文件名称

示例1:修改文件的属主给koten用户,属组无所谓,因为属组权限跟普通用户跟陌生人的一样
chown koten test.txt  #修改属主

chown .koten test.txt #修改属组

示例2:修改目录及目录以下所有的属组和属主
chown koten.koten test.txt  #修改属主和属组

chown -R koten.koten test.txt  #递归修改属主和属组

测试一般把家目录下文件移动到/tmp/下,不然普通用户没有权限
tmp下所有用户都能访问,但是一般需要修改属组属主才能操作

用户间的切换

su -用户名称 不需要重启
带上-自动执行环境变量,不然还会在原目录
su -默认切到root
示例1:root用户切换到koten用户 不需要密码

[root@VMware-koten ~]# su - koten
Last login: Sat Mar 11 10:30:38 CST 2023 on pts/0
[koten@VMware-koten ~]$ exit #回到上一次所在的家,最终断开远程连接
logout
[root@VMware-koten ~]# 

exit #回到上一次所在的家,最终断开远程连接
跟ctrl+d一样的效果,ctrl+d实际就是执行了logout

passwd koten #可以使用koten用户名去远程登录
[root@VMware-koten ~]# passwd koten
Changing password for user koten.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@VMware-koten ~]# 

示例2:koten用户切换到root用户 需要密码
[koten@VMware-koten ~]$ su -
Password: 
Last login: Sat Mar 11 10:44:52 CST 2023 from 10.0.0.1 on pts/1
[root@VMware-koten ~]# 

示例3:普通用户koten切换到普通用户test 需要密码
[root@VMware-koten ~]# passwd test
Changing password for user test.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@VMware-koten ~]# 

[koten@VMware-koten ~]$ su - test
Password: 
Last failed login: Sat Mar 11 10:49:36 CST 2023 on pts/1
There were 3 failed login attempts since the last successful login.
[test@VMware-koten ~]$ 

修改用户密码

有两种方式
交互式:passwd 直接回车 默认修改当前用户
       passwd koten   修改指定用户密码
免交互式:
       echo 1|passwd --stdin root  将密码授权给root

示例1:修改当前用户密码
[root@VMware-koten ~]# passwd
Changing password for user root.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@VMware-koten ~]# 

示例2:修改指定用户koten的密码
[root@VMware-koten ~]# passwd koten
Changing password for user koten.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@VMware-koten ~]# 

示例3:非交互式修改root密码
[root@VMware-koten ~]# echo 2|passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
[root@VMware-koten ~]# 

密码管理

密码要求复杂度
服务器密码复杂度要高一些

可以通过命令生成密码,需要安装工具
[root@VMware-koten ~]# yum -y install expect
[root@VMware-koten ~]# mkpasswd
1eCHk6=bk
[root@VMware-koten ~]# 

也可以在Windows上使用keepass保险柜保存密码,每个公司保存密码方式都不一样,具体看公司要求。

优化ssh服务

禁止root远程登录
修改前先创建个别的用户,设置一个密码,防止待会儿登录不上
[root@VMware-koten ~]# vim /etc/ssh/sshd_config
38 PermitRootLogin no   # 将root修改为禁止登录
重启服务生效:
[root@VMware-koten ~]#systemctl restart sshd
发现登录不上了,通过别的用户登录,切换到root,最后将root恢复远程登录

修改默认的端口
[root@VMware-koten ~]#vim /etc/ssh/sshd_config
 17 Port 2222
#保存修改退出
#重启服务生效:
[root@VMware-koten ~]#systemctl restart sshd
#查看端口号是否修改,需要安装net-tools软件包
[root@VMware-koten ~]# netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      129100/sshd         
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1436/master         
tcp6       0      0 :::2222                 :::*                    LISTEN      129100/sshd         
tcp6       0      0 ::1:25                  :::*                    LISTEN      1436/master         
udp        0      0 127.0.0.1:323           0.0.0.0:*                           790/chronyd         
udp6       0      0 ::1:323                 :::*                                790/chronyd         
[root@VMware-koten ~]# 

MD5校验

可以为文件生成一个MD5哈希值
通过哈希值来判断文件是否被修改
MD5sum test.txt test1.txt 也可以同时生成多个,同时写入文件

第一步:为文件生成哈希值
[root@VMware-koten ~]# md5sum test.txt 
9ce59ab5ae4fbeb70a5b827ed7222812  test.txt
[root@VMware-koten ~]# 

第二步:修改文件内容,重新生成哈希值与之前做比较
[root@VMware-koten ~]# md5sum test.txt 
9ce59ab5ae4fbeb70a5b827ed7222812  test.txt
[root@VMware-koten ~]# echo 11 >> test.txt 
[root@VMware-koten ~]# md5sum test.txt 
628a302bbedcbd28cc16d9e9a2e0f879  test.txt
[root@VMware-koten ~]# 

将文件md5写入到单独的文件,进行文件比对

第一步,将MD5值写入保存
md5sum koten.txt >> md5.txt
第二步:修改文件内容
echo 123 >> koten.txt
第三步:通过命令检查当前文件的哈希值和已经保存的哈希值是否能匹配上
md5sum -c md5.txt    检查md5里面存放的文件的现md5与存储的md5是否匹配上
不能改名,不能在别的路径 为防止找不到,所以一定要使用绝对路径!!!
如果前面没有路径就是表示当前,当前在哪个目录,就会找哪个目录下的

原理:自动获取当前文件最新的MD5值,再去进行之前的MD5进行比对
匹配上输出ok,如果匹配不上输出Failed,有多个会一个一个去比对。

企业案例:如何保障我们系统文件的安全
做定时任务,每五分钟去校验下md5

一般下载也有md5校验,但是一般没人劫持,目的是为了让你下载完整

在目录下所有文件进行md5sum需要find
[root@VMware-koten ~]# find ./ -type f|xargs md5sum > md5.log
[root@VMware-koten ~]# md5sum -c md5.log
这样会把md5.log本身的md5也写入md5.log

开机启动流程

CentOS6.x 串行启动
1、按下服务器电源
2、开机自检(BIOS)放在主板的,BIOS电池一般就是是纽扣电池
开机设置什么启动,在bios里面设置
检查主机硬件是否有问题,没有问题进入MBR引导
3、MBR引导,第一个0磁道0扇区
4、加载GRUB菜单
5、加载内核
6、运行INIT进程,第一个进程,init初始化进程,祖先进程
7、读取/etc/inttab配置文件
8、执行/etc/rc.d/rc.sysinit脚本
根据系统的运行级别,开机的时候启动不同软件

CentOS7.x 并行启动,互不影响
1、开机BIOS自检
检查硬件:内存 磁盘 CPU
经常出现问题的硬件:
内存:
拔一根 试一次 如果可以开机 就是拔的这根有问题
全拔掉 一根一根的插

机械磁盘:寿命无限,跟dvd光驱一样,不划一直能用

固态磁盘:擦除和写入数据有限制的

2、MBR引导
加载,引导不过去可能是系统文件丢失,就开不了机

3、grub引导菜单

4、加载内核kernel

5、启动systemd进程

6、读取inittab文件,执行rc.sysinit,rc等脚本

7、启动mingetty,进入系统登陆界面 用户名密码验证/etc/passwd


CentOS6和Centos7启动区别
1、CentOS6启动方式串行 启动速度慢 第一个进程是init
2、CentOS7启动方式并行 启动速度快 第一个进程是systemd

如何让一个命令或者服务开机自动运行

方法1:写入/etc/rc.local.
命令:mkdir /tmp/test
服务:systemctl start firewalld
方法2:只适用于服务
systemctl enable firewalld

centos6.x
/etc/init.d/iptables start
chkconfig network on|off
[root@VMware-koten ~]#chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:o5:on    6:off

查询系统信息命令

ps axuf     类似windows任务管理器 显示cpu和内存的使用率
top         动态查看负载信息
htop        增强版本的htop,需要提前安装
iotop       磁盘IO I input 写入(上传到别人的服务器) O output 读取(读取别人服务器)
iftop       显示系统的网络流量
普通的百兆网卡理论传输速度为100Mbps,实际换算后极限下载速度12.5MB/s,而千兆网卡的理论传输速度则为125MB/s。
last        查看用户登录系统的时间,什么时候登录退出,待了多久
发现别人root权限了,重要业务,立马把备份的东西做迁移,不重要的业务做备份,看是哪里出了问题
普通用户无所谓,注释掉就可以
lastlog     只显示最新的一次登录的时间,最后一次登录时间,辅助排查问题的

sudo临时让用户获得权限(sudo提权)

让普通用户执行命令时拥有root权限
控制权限:
禁止root登录,使用普通用户登录
比如开发想要查看日志:使用dev用户登录系统 使用cat /var/log/messages
第一步,创建开发koten用户
useradd koten

第二步,切换到koten用户
su - koten

第三步,查看日志信息
cat /var/log/messages
第四步,通过root进行授权给koten用户,cat命令执行时拥有root权限
方法1:使用vimsudo 进行授权 visudo 相当于执行 vim /etc/sudoers 但是有语法检查功能
uoot    ALL=(ALL)       ALL
koten1  ALL=(ALL)       /usr/bin/cat
用户名  默认  授权的命令(必须使用绝对路径)授权多个命令使用逗号来分割
ALL,!/usr/bin/vim    也可以这样对命令取反
NOPASSWD:ALL,!/usr/bin/vim    这样执行sudo命令就不需要输入自己的密码了
方法2:直接编辑源文件 vim /etc/sudoers

第五步:切换到koten后用sudo cat查看日志。
[koten1@VMware-koten ~]$ sudo cat /var/log/messages #sudo+命令

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for koten1: 

查看自己哪些命令可以用,查看用户sudo提权的命令 
sudo -l查看可用命令
sudo -k清空缓存

[koten1@VMware-koten ~]$ sudo -l
Matching Defaults entries for koten1 on
    VMware-koten:
    !visiblepw, always_set_home,
    match_group_by_gid, always_query_group_plugin,
    env_reset, env_keep="COLORS DISPLAY HOSTNAME
    HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION
    LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME
    LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
    XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User koten1 may run the following commands on
        VMware-koten:
    (ALL) /usr/bin/cat
[koten1@VMware-koten ~]$ 

sudo一般用于服务,有些服务只能普通用户运行,但是普通用户运行又没有权限
jumpserver现在企业都用这个了

小结重点:
1、提权命令
visudo vim /etc/sudoers
2、提权
koten1 ALL=(ALL) NOPASSWD:ALL
koten1 ALL=() 带路径的命令/user/sbin/vim,/user/sbin/less
3 、普通用户如何执行sudo命令
sudo vim /etc/hosts
虚拟用户可以授权为ALL

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是koten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值