linux核心基础-用户管理
一、linux用户管理前言
1、linux用户信息配置文件
/etc/passwd
2、/etc/passwd字段信息解释
3、其余用户,组相关配置文件
/etc/passwd 用户信息
/etc/shadow 用户密码信息
/etc/group 用户组信息
/etc/gshadow 用户组密码信息 ,在大公司,用户和组数量很大的情况下,需要制定复杂的权限管理,那时会用到组密码
/etc/skel
skel是skeleton的缩写,意为骨骼、框架。故此目录的作用是在建立新用户时,用于初始化用户根目录。系统会将此目录下的所有文件、目录都复制到新建用户的根目录,并且将用户属主与用户组调整为与此根目录相同。
4、密码文件的权限
#用户信息文件,权限是644,所有人可读,有一定安全隐患
[root@pylinux ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1698 10月 13 2019 /etc/passwd
#用户密码文件,除了root用户,其他用户默认是没有任何权限,
[root@pylinux ~]# ll /etc/shadow
---------- 1 root root 892 10月 20 2019 /etc/shadow
#用户密码文件
[root@pylinux ~]# tail -5 /etc/shadow
mysql:!!:17980::::::
yu:$1$Kx9cz6sK$GE3jiHtjJikn9Ai4ECINn/:18031:0:99999:7:::
epmd:!!:18074::::::
rabbitmq:!!:18074::::::
py:!!:18182:0:99999:7:::
二、用户管理linux命令实战
用户管理涉及的命令
1、useradd
用法1:useradd -D #查看创建用户的默认值
用法2:useradd[选项]用户名 #根据选项创建用户
选项
-g:表示指定用户的用户主(主要)组,选项值可以是用户组ID,也可以是组名 (注意是加入已经存在的组)
-G:表示指定用户的用户附加(额外)组,选项值可以是用户组ID,也可以是组名 (注意是加入已经存在的组)
-u :uid,用户的id(用户的标识符),系统默认会从500 /或1000之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
-c:comment,添加注释(选择是否添加)
-s:指定用户登入后所使用的shell 解释器,默认/bin/bash【专门的接待员】,如果不想让其登录,则 可以设置为/sbin/nologin (重要)
-d:指定用户登入时的启始目录(家目录位置)
-n:取消建立以用户名称为名的群组(了解)
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
2、usermod
命令:usermod(user modify)
语法:usermod [选项 选项的值] … 用户名
作用:修改用户的各种属性
选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的ID,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的ID,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500 之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
-L:锁定用户,锁定后用户无法登陆系统lock
-U:解锁用户unlock
-c<备注>:修改用户帐号的备注文字
-d<登入目录>:修改用户登入时的目录
-s<shell>:修改用户登入后所使用的shell
3、userdel
建议注释/etc/passwd用户信息而非直接删除用户
语法
userdel(选项)(参数)
选项
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
4、passwd
标准输入密码
[root@yuanlai-0224 ~]# echo '123456' | passwd --stdin yuchao2
Changing password for user yuchao2.
passwd: all authentication tokens updated successfully.
5、chpasswd
chpasswd命令用于同时更改多个用户的密码。它可以从标准输入或指定的文件中读取用户名和密码的组合,并将其应用于系统中的用户。chpasswd命令通常用于批量更改用户密码,特别是在自动化脚本Q或批处理任务中,该命令需要root账户权限才可以执行。使用chpasswd命令时,可以通过以下两种方式提供用户名和密码的组合:
•从标准输入读取:可以通过管道或重定向操作符将用户名和密码的组合传递给chpasswd命令。每个用户名和密码的组合应占据一行,并使用冒号分隔用户名和密码。
•从文件读取:可以通过指定文件路径作为chpasswd命令的参数来读取用户名和密码的组合。文件中的每个用户名和密码的组合应占据一行,并使用冒号分隔用户名和密码。
1、从标准输入读取
[root@muserver1 /]# useradd -m cupp -d /cupp
[root@muserver1 /]# echo 'cupp:cupp@123' | chpasswd
[root@muserver1 /]# su - pei
上一次登录:五 5月 17 03:49:57 EDT 2024pts/1 上
[pei@muserver1 ~]$ su - cupp
密码:
[cupp@muserver1 ~]$
2、从文件读取
输入chpasswd命令后直接回车,交互窗口下按照如下格式输入用户名和密码,使用ctl+D结束输入。
[root@muserver1 /]# chpasswd
ops01:123
pei:321
cupp:231
[root@muserver1 /]#
3、当然我们也可以使用cat结合/管道符的方式,可以完成批量用户密码修改。
[root@s152 ~]# cat pass.txt
username1:1234567
username2:1234567
username3:12345678
[root@s152 ~]# cat pass.txt | chpasswd
6、chage 用于密码的实效管理,用来修改帐号和密码的有效期。
-d,--lastday 最近日期 修改最近一次密码设置的时间。
-E,--expiredate 过期日期 账户国企过期时间 0表示马上过期,-1表示永不过期
-l, 列出当前用户的密码过期设置。普通用户仅可以查看自己的密码过期时间。
-W, 用户密码到期前,提前收到警告信息的天数
-M, 密码有效期
7、gpasswd管理用户组
gpasswd命令是Linux下工作组文件/etc/group和/etc/gshadow的管理工具
8、groupmod
groupmod是group modify的缩写,在Linux中 groupmod 命令用于更改群组识别码或名称。
-g <群组识别码> 设置欲使用的群组识别码。
-0 重复使用群组识别码。
-n <新群组名称> 设置欲使用的群组名称
9、chgrp
chgrp命令用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。
组名称必须在/etc/group 存在
[root@muserver1 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 5月 17 22:33 ceshi.txt
[root@muserver1 tmp]# chgrp ops01 ceshi.txt
[root@muserver1 tmp]# ll
总用量 0
-rw-r--r--. 1 root ops01 0 5月 17 22:33 ceshi.txt
[root@muserver1 tmp]#
10、cut命令
cut在文件的每一行中提取片断
在每个文件的各行中, 把提取的片断显示在标准输出。
若不指定file参数,该命令将读取标准输入。 必须指定 -b、-c 或 -f 标志之一。
语法格式:cut [参数] [文件]
-d:分隔符,按照指定分隔符分割列。与-f一起使用 默认为制表符”TAB”
-f:依据-d 的分隔字符将一段信息分割成为数段,用-f 取出第几段的意思(列号,提取第几列)
-C:以字符(characters)的单位取出固定字符区间
-b:以字节为单位进行分
[root@muserver1 ~]# cat yuchao.txt | cut -b 4
i
h
d
[root@muserver1 ~]# cat yuchao.txt
me is yuchao and i love linux!
wo haak dk ji
kajdfa k
[root@muserver1 ~]#
[root@muserver1 ~]# cat yuchao.txt |cut -b 4-6
is
haa
dfa
[root@muserver1 ~]#
# 中文提取,按字符提取,1一个中文,当做1个字符处理了 -c参数
[root@yuanlai-0224 ~]# echo '于超牛啊' | cut -c 1-3
于超牛
# -f 显示指定字段的内容,和-d 指定分隔符结合使用。
[root@yuanlai-0224 ~]# tail -5 /etc/passwd |cut -d ':' -f 2
x
x
x
x
x
11、Linux设置中文
安装中文语言包
yum install kde-l10n-Chinese
yum reinstall glibc-common
写入配置文件
[root@yuchao-tx-server ~]# tail -2 /etc/profile
# by chinese
export LC_ALL="zh_CN.UTF-8"
改为英文
LC_ALL="en_US.UTF-8"
12、whoami、who、w、last、lastlog
1、last
last读取的是如下文件信息,二进制加密数据。
[root@yuanlai-0224 ~]# ll /var/log/wtmp
-rw-rw-r--. 1 root utmp 170112 Mar 12 15:16 /var/log/wtmp
last -5 显示最近5条连接终端服务器的记录
##pts/0(为伪终端) ssh和telnet远程连接的在用
##tty是虚拟终端的代号
2、lastlog
命令用于显示系统中所有用户最近一次登录的信息
命令用于查询/var/log/lastlog文件
该文件记录了每个用户最近一次登录的信息。通过使用 lastlog 命令,可以检查特定用户的最后一次登录时间,并格式化输出Q相应的登录日志。需要以root 身份运行该命令。
13、sudo
sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。
visudo命令
使用visudo命令,提供了语法检测功能。
visudo用于编辑/etc/sudoers文件,且提供语法检测,用于配置sudo命令
给yuchao01用户配置sudo使用权
1.直接输入visudo命令,相当于打开vim /etc/sudoers
找到如下行
89 ## The COMMANDS section may have other options added to it.
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
2.添加你想让执行sudo命令的用户
89 ## The COMMANDS section may have other options added to it.
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 yuchao01 ALL=(ALL) ALL
3.保存退出,使用vim/vi的模式,此时已经可以用yuchao01用户,使用sudo命令了
切换普通用户
[root@yuanlai-0224 ~]# su - yuchao01
Last login: Wed Mar 9 20:07:26 CST 2022 on pts/0
[yuchao01@yuanlai-0224 ~]$
用sudo提权,修改文件内容
[yuchao01@yuanlai-0224 ~]$ sudo vim /opt/三里屯美女微信.txt
[yuchao01@yuanlai-0224 ~]$
[yuchao01@yuanlai-0224 ~]$ cat /opt/三里屯美女微信.txt
美女微信 54321
用sudo提权,修改其他用户的密码
[yuchao01@yuanlai-0224 ~]$ passwd caixukun
passwd: Only root can specify a user name.
[yuchao01@yuanlai-0224 ~]$
[yuchao01@yuanlai-0224 ~]$ sudo passwd caixukun
Changing password for user caixukun.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[yuchao01@yuanlai-0224 ~]$
降低sudo权限
1.编辑visudo
修改权限,只允许执行mkdir,useradd
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
yuchao01 ALL=(ALL) /usr/bin/mkdir,/usr/sbin/useradd
2.再次使用sudo,尝试使用vim,权限不够了,不让用
[yuchao01@yuanlai-0224 ~]$ sudo vim /opt/三里屯美女微信.txt
[sudo] password for yuchao01:
Sorry, user yuchao01 is not allowed to execute '/bin/vim /opt/三里屯美女微信.txt' as root on yuanlai-0224.
3.使用mkdir是可以的
[yuchao01@yuanlai-0224 opt]$ mkdir yuchao到此一游
mkdir: cannot create directory ‘yuchao到此一游’: Permission denied
[yuchao01@yuanlai-0224 opt]$
[yuchao01@yuanlai-0224 opt]$ sudo mkdir yuchao到此一游
[yuchao01@yuanlai-0224 opt]$ ll
total 4
drwxr-xr-x 2 root root 6 Mar 9 20:29 yuchao到此一游
-rw-r--r-- 1 root root 19 Mar 9 20:21 三里屯美女微信.txt
[yuchao01@yuanlai-0224 opt]$
4.使用useradd是可以的
[yuchao01@yuanlai-0224 opt]$ id caixukun01
uid=1011(caixukun01) gid=1011(caixukun01) groups=1011(caixukun01)
[yuchao01@yuanlai-0224 opt]$
删除用户命令如何添加上?
[yuchao01@yuanlai-0224 opt]$ sudo userdel caixukun01
Sorry, user yuchao01 is not allowed to execute '/sbin/userdel caixukun01' as root on yuanlai-0224.