章节目标
- 了解用户和用户组的概念
- 可以添加useradd和删除userdel用户,修改用户密码passwd
- 可以添加groupadd和删除groupdel用户组
- 了解管道符|的作用
- 会使用ifconfig查看IP地址
- 了解网卡配置文件的位置和常见配置项
- 知道常用的SSH客户端连接工具
- 会使用mobaxterm连接到linux
一、用户和组的概念
1. 为什么需要了解用户和组
- 服务器要添加多账户的作用
- 针对不同用户分配不同的权限,不同权限可以限制用户可以访问到的系统资源
- 提高系统的安全性
- 帮助系统管理员对使用系统的用户进行跟踪
2. 用户和组的关系
理论上Linux系统中的每个用户在创建时都应该有一个对应的用户组,这个组就称之为用户的主组。同时,有些情况下,某个用户需要临时使用某个组的权限,那这个组就称之为这个用户的附属组或附加组。
主组只能拥有一个,但是附属组或附加组可以同时拥有多个 => 亲爹,干爹(多个)
3. 查看所有用户/组
3.1. 查看用户
- 查看所有用户
cat /etc/passwd
列出用户的详细信息,包括用户名、用户 ID、组 ID、家目录等
- 查看当前登录用户
who
或
w
- 查看当前会话用户
id
查看当前用户的详细信息,包括用户名、用户 ID、组 ID 等
3.2. 查看组
- 查看所有组
cat /etc/group
查看系统上的所有组。这将列出组的详细信息,包括组名、组 ID、组成员等。
- 查看用户所属的组:
groups
4. 用户组操作
用户组的操作无疑三件事:用户组的添加、用户组的修改以及用户组的删除操作
组:group
添加:add
修改:mod
删除:del
4.1. 【groupadd】用户组的添加
# groupadd [选项] 用户组的组名称
选项说明:
-g :代表用户组的组ID编号,自定义组必须从1000开始,不能重复
案例:在系统中添加一个hr的用户组
groupadd hr
案例:在系统中添加一个test的用户组并指定定编号1100
groupadd -g 1100 test
问题:我们刚才创建的hr以及test用户组到底添加到哪里了?
答:默认情况下,我们添加的用户组都会放在一个系统文件中,文件位置=>/etc/group
tail -3 /etc/group
4.2. 【/etc/group】文件
由以上命令的执行结果可知,在/etc/group文件中,其一共拥有三个冒号,共四列。每列含义:
第一列:用户组的组名称
第二列:用户组的组密码,使用一个x占位符
第三列:用户组的组ID编号,1-999代表系统用户组的组编号,1000以后的代表自定义组的组编号
第四列:用户组内的用户信息(如果一个用户的附属组或附加组为这个组名,则显示在此位置)
4.3. 【groupmod】用户组的修改
# groupmod [选项 选项的值] 原来组的组名称
选项说明:
-g :gid缩写,设置一个自定义的用户组ID数字,1000以后
-n :name缩写,设置新的用户组的名称
案例:把hr用户组更名为ymi
groupmod -n ymi hr
案例:把test用户组的组编号由1100更改为1003
groupmod -g 1003 test
案例:把test组的组名称更改为admin且用户组的组编号更改为1004
groupmod -g 1004 -n admin test
4.4. 【groupdel】用户组的删除
# groupdel 用户组名称
案例:使用groupdel删除test用户组
groupdel test
5. 用户操作
用户:user
添加:add
修改:mod
删除:del
5.1. 【useradd】用户的添加
# useradd [选项 选项的值] 用户名称
选项说明:
- -g :代表添加用户时指定用户所属组的主组,唯一的组信息(重要)
- -s :代表指定用户可以使用的Shell类型,默认为/bin/bash(拥有大部分权限)还可以是/sbin/nologin,代表账号创建成功,但是不能用于登录操作系统。
- /bin/bash => 给人使用的(运维工程师)
- /sbin/nologin => 给软件使用的
- -G :代表添加用户时指定用户所属组的附属组或附加组,可以指定多个,用逗号隔开即可(了解)
- -u :代表添加用户时指定的用户ID编号
- -c :代表用户的备注信息,ymii:123456:(ymiii的账号)
- -d :代表用户的家目录,默认为/home/用户名称。可以使用-d进行更改
- -n :取消建立以用户名称为名的群组(了解)
案例:在系统中创建一个linuxuser账号
useradd linuxuser
- 问题:我们并没有为linuxuser账号指定所属的主组,可以成功创建账号么?
- 答:可以,因为在创建账号时,如果没有明确指定用户所属的主组,默认情况下,系统会自动在用户组中创建一个与用户linuxuser同名的用户组,这个组就是这个用户的主组。
- 问题:刚才创建的linuxuser账号能不能用于登录操作系统
- 答:不行,因为Linux的登录账号必须要求有密码,如果一个账号没有密码是无法登录操作系统的。
案例:在系统中创建一个账号ym,指定用户所属的主组为chrony
第一步:查询一下chrony的组ID编号
#tail -5 /etc/group
chrony:x:996:
第二步:根据组的编号添加用户
# useradd -g 996 ym
5.2. 【id】用户信息查询
# id 用户名称
主要功能:查询某个指定的用户信息
案例:查询ym用户的信息
# id ym
uid=1001(ym) gid=996(chrony) groups=996(chrony)
uid:用户编号
gid:用户所属的主组的编号
groups:用户的主组以及附属组信息,第一个是主组,后面的都是附属组或附加组信息
5.3. 【usermod】修改用户
用户:user,添加:add,修改:mod,删除:del
# usermod [选项 选项的值] … 用户名
作用:修改用户的各种属性
选项:
- -g :修改用户所属的主组的编号
- -l :login name修改用户的名称
- -s :修改用户可以使用的Shell类型,如/bin/bash => /sbin/nologin
扩展:
- -L:锁定用户,锁定后用户无法登陆系统lock
- -U:解锁用户unlock
了解:
- -G :修改用户附属组的编号信息
- -d :修改用户的家目录
- -c :修改用户的备注信息
案例:修改ym账号信息,更名为ymiiiiii
usermod -l ymiiiiii ym
案例:修改账号信息,把用户的主组的编号更新为1000(hr)
usermod -g 1000 wangwu
案例:禁止linuxuser账号登录Linux操作系统
usermod -s /sbin/nologin linuxuser
案例:禁止linux用户登录操作(Ctrl + Alt + F2 ~ F6)
Linux系统除了默认的图形化界面,其实还有5个隐藏的字符界面,按Ctrl + Alt + F1~F6
有些电脑开启Fn功能键,所以如果Ctrl + Alt + F1~F6不生效,则可以按Ctrl + Alt + Fn + F1~F6
usermod -L linux
案例:解锁linux用户
usermod -U linux
问题:账号已经解锁,但是无法登录
① 当前账号没有设置密码,因为Linux操作系统不允许没有密码的操作进行登录
② 当前用户的Shell类型为/sbin/nologin,所以其无法登录
5.4. 【passwd】修改用户密码
passwd 用户名称
主要功能:为某个用户设置密码(添加或修改),可以给自己也可以给别人设置
案例:修改自己的密码
passwd
案例:为linux账号添加一个密码,密码:123456
passwd linux
特别注意:在Linux操作系统中,如果一个账号没有密码,则无法登录操作系统
5.5. 【su】切换用户
# su [-] root
主要功能:切换用户的账号
选项:
- :横杠(减号),代表切换用户的同时,切换目录到用户的家
从超级管理员切换到普通用户,root => ymiii,不需要输入ymiii的密码
从普通账号切换到超级管理员,ymiii => root,需要输入root的密码
从普通账号切换到普通账号,ymiii => linuxuser,也需要输入linuxuser密码
5.6. 启用【wheel组】设置(了解)
Linux系统中,理论上只有在wheel组中的普通用户,才可以通过su命令切换到root账户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效
- 步骤1:使用vim编辑器 打开/etc/pam.d/su文件
- 步骤2:编辑文件,去掉auth required pam_wheel.so use_uid这一行前面的#,使这一行配置生效
- 步骤3:保存退出 :wq
这时,只有在wheel组内的用户才可以su到root
5.7. 【userdel】删除用户
# userdel [选项] 用户名称
选项说明:
-r :删除用户的同时,删除用户的家(默认不删除)
案例:删除用户但是不删除用户的家目录
userdel ym
案例:删除用户的同时删除用户的家目录
userdel -r dym
删除账号流程:① 删除账号 ② 确认是否删除用户家 ③ 删除用户主组(没有其他用户)
扩展:当我们想要删除某个账号时,系统提示当前账号正在被某个进程所使用
解决方案:
- 第一种方案:找到登录的这个用户,然后将其直接注销
- 第二种方案:
# kill [-9] 进程的ID编号
选项说明:-9代表强制结束某个进程
主要功能:用于结束某个进程的继续运行
案例:结束11565进程
kill 11565
简单粗暴,kill 对应用户的全部进程(尽量斩草除根,结束父进程)
# ps -ef |grep linux
ps:查看进程
-ef :查看系统的所有进程
|:管道命令
grep linux:搜索包含了linux关键词的所有进程
结束完成后,再次使用userdel删除即可
5.8. 【etc/passwd】存储用户信息的文件
使用vim命令打开/etc/passwd文件,如下图所示:
root : x : 0 : 0 : root : /root : /bin/bash
用户名 : 密码 : 用户ID : 用户组ID : 注释 : 家目录 : 解释器shell
- 用户名:登录linux时使用的用户名
- 密码:此密码位置一般情况都是"x",表示密码的占位,真实密码存储在/etc/shadow
- 用户ID:用户的识别符,每个用户都有唯一的UID【-u】
- 用户组ID:该用户所属的主组ID;【-g】
- 注释:解释该用户是做什么用的;【-c】
- 家目录:用户登录进入系统之后默认的位置;【-d】
- 解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,转换成机器语言,传递给内核处理;如果解释器是/bin/bash 表示用户可以登录到系统,/sbin/nologin表示该用户不能登录到系统【-s】
5.9. 【/etc/shadow】文件
- 由于 /etc/passwd文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了shadow文件中。
- /etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。
与用户密码相关的文件:/etc/shadow
为用户设置密码之后,会自动在/etc/shadow文件中进行体现,使用vim编辑器打开:
第一列为用户名,例如dym
后面是加密后的密码,就是$开头的字符串
如果显示为!!,则表示这个用户没有设置密码。
由以上截图所知,dym、ym是没有设置密码的。root设置了密码,所以显示为一个加密的字符串
二、管道
1. 管道符【|】
作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
- 0 :标准输入,程序或命令需要外部的某些程序传递相应的参数,才能正常运行
- 1 :标准输出,程序或命令正确的执行结果,我们就称之为标准输出
- 2 :标准错误,程序或命令错误的执行结果,我们就称之为标准错误
2. 过滤(筛选)功能
# 前一个命令 | 后一个命令
案例:获取/根目录下包含关键字"y"的文件信息
ls / | grep y
- | :管道符号,作用=>把ls /的正确的执行结果作为参数传递给grep命令
- ls / :管道左边的命令
- grep y :管道右边的命令(grep命令的基本语法 => grep 关键字 文件名称)
案例:检索系统中的已安装文件,只筛选mariadb软件信息
rpm -qa | grep mariadb
- -q :query,查询
- -a :all,所有
案例:在系统的进程中进行查找,查找与ymiii相关的进程信息
ps -ef | grep itheima
- ps -ef :查询系统中所有正在运行的进程
3. 特殊功能
通过管道的操作方法来实现less 的等价效果(了解)
例如:源指令是"less xxx.txt",使用管道的话则可以写成:cat xxx.txt | less
# less initial-setup-ks.cfg
更改为管道命令
# cat initial-setup-ks.cfg | less
4. 扩展处理_统计功能
问题:请使用学过的命令,来统计某个目录下的文档的总个数?
回顾:wc命令,word count,文件统计功能
# wc [选项] 文件名称
选项说明:
-l : 统计总行数
-w : word,总单词数
-c : 统计总字节数
案例:统计/根目录下一共有多少个文件
ls / | wc -l
案例:用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息(一个用户一行)
cat /etc/passwd | wc -l
5. 【xargs】命令扩展
- 问题:为什么需要xargs命令?
- 答:之所以能用到这个命令,关键是由于很多命令不支持 | 管道来传递参数,而日常工作中又有这个必要,所以就有了 xargs 命令。
- 简单来说,xargs命令就相当于对管道命令进行了一个扩展,让所有命令都支持管道
案例:搜索/etc目录下的所有".conf"结尾的文件信息,然后以详细列表形式显示
find /etc -name "*.conf" | ls -l
解决方案,在ls命令之前添加一个xargs命令,这样ls命令就支持管道了,可以用于接收前一个命令的执行结果
find /etc -name "*.conf" | xargs ls -l
三、网络配置
1. 【ifconfig】查看网络信息
在CentOS 7中,ifconfig命令被ip命令代替。如果需要使用ifconfig命令,可以通过安装net-tools软件包来实现。安装方法如下:
- 使用yum search ifconfig命令查看使用ifconfig命令需要安装的软件包。
- 使用yum install net-tools.x86_64命令安装这个软件包。
- 安装完成后,可以使用ifconfig命令了。
ifconfig
Windows => ipconfig Linux => ifconfig
第一步:连接网络
第二步:使用ifconfig命令,获取计算机的网络信息
- ens32 :是默认的网卡,我们获取的IP也要从这个网卡中获取
- lo(loop,循环):表示回环网卡,只有一个固定的IP地址,127.0.0.1代表本机
- virbr0:虚拟网络接口,因为咱们使用vmware虚拟机安装Centos,所以其会产生virbr0虚拟网络接口
2. 网卡配置文件位置
Linux系统中,一切皆文件。所以保存网络信息的也是通过一个文件来完成的。
vim /etc/sysconfig/network-scripts/ifcfg-ens32
3. 【systemctl】查看网络状态
# systemctl status network
systemctl = system + control = 系统控制
主要功能:查询计算机网络的状态,网络是否正常连接。
Active : active(正常)或 inactive(dead,网络状态不正常没有连接)
4. 【systemctl】启动/重启/停止网卡
# systemctl start network
# systemctl stop network
# systemctl restart network
选项解析:
start :启动
stop :停止
restart :重启
四、Linux远程连接与文件传输
1. 为什么需要远程连接
2. SSH协议
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
3. sshd服务
当我们在计算机中安装了sshd软件,启动后,就会在进程中产生一个sshd进程,其遵循计算机的SSH协议。默认情况下,sshd服务随系统自动安装的。
systemctl status sshd
4. sshd服务的端口号
- SSH协议,其规则了远程连接与传输的端口号,所以sshd服务启动后,就会占用计算机的22号端口。
- 端口号能解决什么问题? 答:能让我们的计算机区分出不同的服务
5. 常用SSH终端工具
5.1. SecureCRT
官网:www.vandyke.com SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。
5.2. XShell
Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
5.3. Putty
PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权。
5.4. MobaXterm
官网:MobaXterm free Xserver and tabbed SSH client for Windows
6. 使用MobaXterm连接linux
步骤1:打开软件,点击session
步骤2:在弹出窗口中选择ssh,在 remote host对话框输入要连接的服务器IP地址
步骤3:输入用户名和密码,注意输入密码的时候,屏幕是没有反应的。
步骤4:输入用户密码后回车,看到如下界面,表示已经成功连接