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

编程入门 行业动态 更新时间:2024-10-19 07:26:57

【运维知识<a href=https://www.elefans.com/category/jswz/34/1770030.html style=基础篇】Linux用户管理"/>

【运维知识基础篇】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实际就是执行了logoutpasswd 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_config17 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、加载内核kernel5、启动systemd进程6、读取inittab文件,执行rc.sysinit,rc等脚本7、启动mingetty,进入系统登陆界面 用户名密码验证/etc/passwdCentOS6和Centos7启动区别
1、CentOS6启动方式串行 启动速度慢 第一个进程是init
2、CentOS7启动方式并行 启动速度快 第一个进程是systemd

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

方法1:写入/etc/rc.local.
命令:mkdir /tmp/test
服务:systemctl start firewalld
方法2:只适用于服务
systemctl enable firewalldcentos6.x
/etc/init.d/iptables start
chkconfig network on|off
[root@VMware-koten ~]#chkconfig --listNote: This output shows SysV services only and does not include nativesystemd services. SysV configuration data might be overridden by nativesystemd 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]'console         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 onVMware-koten:!visiblepw, always_set_home,match_group_by_gid, always_query_group_plugin,env_reset, env_keep="COLORS DISPLAY HOSTNAMEHISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",env_keep+="LC_COLLATE LC_IDENTIFICATIONLC_MEASUREMENT LC_MESSAGES",env_keep+="LC_MONETARY LC_NAME LC_NUMERICLC_PAPER LC_TELEPHONE", env_keep+="LC_TIMELC_ALL LANGUAGE LINGUAS _XKB_CHARSETXAUTHORITY",secure_path=/sbin\:/bin\:/usr/sbin\:/usr/binUser koten1 may run the following commands onVMware-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年运维经验,持续分享运维干货,感谢大家的阅读和关注!

 

 

更多推荐

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

本文发布于:2024-02-10 23:54:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1678026.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:基础   知识   用户   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!