3.Linux系统操作常识

1.VIM编辑器

Vim和Vi都是Linux和Unix系统中常用的文本编辑器,两者之间的区别如下:

  1. 功能:Vim相对于Vi而言,功能更加强大。Vim支持更多的编辑功能,例如多级撤销、多窗口编辑、语法高亮等,而Vi则相对简单,只支持基本的文本编辑功能。
  2. 操作:Vim和Vi的操作方式有一些不同。Vim中有多种模式,例如命令模式、插入模式、末行模式等,需要掌握不同的操作方式。而Vi则只有两种模式:命令模式和插入模式
  3. 界面:Vim相对于Vi而言,界面更加友好。Vim支持更丰富的配色方案和界面布局,可以根据个人喜好进行自定义配置。
  4. 兼容性:Vi是Unix系统默认的文本编辑器,几乎所有的Unix系统都预装了Vi。而Vim则是Vi的增强版,需要单独安装。但是,Vim可以兼容Vi的大部分命令和操作,因此在Unix系统中可以使用Vim来代替Vi。

总的来说,Vim相对于Vi而言,具有更加强大的功能和更加友好的界面,但需要掌握更多的操作技巧。而Vi则是Unix系统默认的文本编辑器,简单易用,但功能相对较为有限。

所以说在Linux系统中,我们更多的使用VIM编辑器,但是在一些老旧设备上,有可能我们还需要使用到vi编辑器。

1.VIM的三种模式

命令模式(command mode):该模式是打开VIM后的默认模式,再该模式下,可以控制屏幕光标的移动,字符,字或者行的删除,移动和复制。

插入模式(insert mode):在命令模式下,按i可以进入插入模式,该模式主要用于文本程序的编辑,按esc课返回至命令模式。

末行模式(last line mode): 可以在末行输入命令来对文件进行替换,查找搜索文本内容,在命令模式下,按":"即可进入该模式。

在这里插入图片描述

命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到末行模式,以在最底一行输入命令。
  • gg 回到文本第一行的行首
  • G 回到文本的最后一行的行首
  • 数字键+G 用于定位行首
  • ctrl+b 向上翻屏
  • ctrl+f向下翻屏
  • yy 在所在行中按yy进行复制
  • p 在需要粘贴的地方使用p进行粘贴
  • dd 删除一整行结合其他命令(删除+粘贴的操作)完成剪切
  • u 按u进行对已执行但未保存的所有命令的撤销
  • ctrl+r 对于撤销命令u的撤回

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠末行模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入小写和大写字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

末行模式

  • w 保存文件

  • q 退出

  • wq 保存退出

  • q!强制不保存退出

  • wq!强制保存并退出

可视模式(用处不大)

在可视模式下,用户可以通过光标键选择文本,然后执行复制、删除、替换等操作。

要进入可视模式,可以按下 v 键。按下 v 后,光标进入可视模式,此时可以使用光标键选择文本。选择完成后,可以按下 y 复制选中的文本,d 删除选中的文本,p进行粘贴,或者使用 :s/old/new/g 命令替换选中的文本,最后按esc退出可视化模式

可视模式还有两个变体,分别是行选择模式(Visual Line Mode)和块选择模式(Visual Block Mode)

在行选择模式下,用户可以按下 Shift+v 进入。在这个模式下,光标会跳到当前行的首位,并选中整行。可以使用光标键选择多行文本,然后执行相应的操作

在块选择模式下,用户可以按下 Ctrl+v 进入。在这个模式下,光标会变成一个矩形的块。可以使用光标键选择矩形区域内的文本,然后执行相应的操作。块选择模式常用于在代码中对多行文本进行批量操作,例如注释或取消注释一段代码

快速添加多行注释与删除多行注释

添加

在命令行模式下,输入ctrl+v进入可视块,选中所有行

输入大写I进入插入模式 然后输入# 最后按两下 esc
在这里插入图片描述

删除

可视化模式下选中所有的注释符 然后按下delete

2.用户和用户组

1.用户和用户组的概念

什么是用户

任何一个运维人员想要登录服务器,都必须先申请一个账号,然后以这个账号的身份进入系统,就像我们前面说的andy这个账号,而每个账号都拥有一个唯一的用户名和各自的密码,用户在登录时输入正确的用户名和密码后,就能够进入系统,默认会进入到这个用户自己的主目录。

什么是用户组

用户组是具有相同特征用户的逻辑集合,简单来说,就是具有相同权限的用户的集合。 例如:人事部有20名员工,他们都需要访问一个文件夹,如果我们给这20个用户的账号分别设置权限,这样太麻烦了,所以我们会建立一个用户组叫HR,对这个组设置权限,将这20个用户加入这个组就可以了。

用户和用户组的关系

A 一个用户可以属于一个用户组,具有此用户组的权限

HR组可以访问/hrfile的文件夹,当user01属于HR组,那么user01就可以访问/hrfile这个文件夹

B 一个用户可以属于多个用户组,此时具有多个组的共同权限

HR可以访问/hrfile的文件夹,运维可以访问/yunweifile的文件夹,当user01同时属于HR组和运维组,那么user01可以访问 /hrfile和/yunweifile

C 多个用户可以属于一个用户组,多个用户都具有此用户组的权限。

主组和附加组

主组:指用户创建时默认所属的组,每个用户的主组只能有一个。创建用户时会同时创建一个和用户名相同的组

例如:添加用户xiaoming,在建立用户 xiaoming 的同时,就会建立 xiaoming 组作为 xiaoming 用户的初始组。

附加组:每个用户只能有一个主组,除主组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。
每个用户的附加组可以有多个,而且用户可以有这些附加组的权限。

通常用户和用户组的管理,包含以下工作:

  • 用户组的管理

  • 用户账号的添加、删除、修改以及用户密码的管理

注意以下三个文件以及其重要作用:

  • /etc/passwd 用户配置文件,存储用户的基本信息
  • /etc/group 存储用户组的信息
  • /etc/shadow 存储用户的密码信息

2.用户和用户组管理

1.用户管理

用户的管理涉及用户的添加、删除和修改

与用户相关的文件:/etc/passwd

①useradd添加用户

命令:useradd

作用:添加用户

语法:# useradd [选项 选项的值] … 用户名

选项:

  • -g:表示指定用户的用户主(主要)组,选项值可以是用户组ID,也可以是组名
  • -G:表示指定用户的用户附加(额外)组,选项值可以是用户组ID,也可以是组名
  • u :uid,用户的id(用户的标识符),系统默认会从500 /或1000之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
  • -c:comment,添加注释(选择是否添加)
  • -s:指定用户登入后所使用的shell 解释器,默认/bin/bash【专门的接待员】,如果不想让其登录,则可以设置为/sbin/nologin (重要)
  • -d:指定用户登入时的启始目录(家目录位置)
  • -n:取消建立以用户名称为名的群组(了解)

当我新建一个账户叫user01, 同时,系统会自动建立一个组也叫user01

用法一:useradd 用户名
示例代码:
#useradd zhangsan
含义:创建用户zhangsan,不带任何选项。

注意:不用任何参数,创建用户,系统会默认执行以下操作:

1)在 /etc/passwd 文件中创建一行关于zhangsan用户的数据
2)在 /etc/shadow 文件中新增了一行关于zhangsan 密码的数据
3)在 /etc/group 文件中创建一行与用户名相同的组,例如zhangsan
4)在 /etc/gshadow 文件中新增一行与新增群组相关的密码信息,例如zhangsan
5)自动创建用户的家目录,默认在/home下,与用户名同名

②/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】

场景1:

公司新员工lisi,属于gzhr部门,用户ID1200,不允许登录系统

创建用户lisi,默认lisi属于自己同名的主组,让lisi 属于附加组gzhr,用户ID 1200,注释为"hr user lisi",解释器为/sbin/nologin

用法二:useradd -G 附加组名 -u 用户ID -s /sbin/nologin -c "shuser lisi" 用户名
示例代码:
#useradd -G gzhr -u 1200 -s /sbin/nologin -c "gzuser lisi" lisi
含义:创建用户lisi,不带任何选项。

gzhr行的含义:在gzhr的组里(组id 是1002)有一个组内用户lisi(lisi 的附加组就是1002,附加组的名字是gzhr)。
如果需要为一个用户指定多个附加组,只需要将多个附加组的id 通过英文逗号“,”分割即可
例如-G 500,501,502

① 主组只能有1 个(类似于亲生父母只有一对),附加组可以多个,也可以没有附加组(类似于认干爹干妈,可以有也可以没有,也可以有多个)
② 主组必须有
③ 后期将权限管理的时候,关于文档的属组指的是主组(了解)

③id查看用户信息

命令:id

作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。

语法1:# id 默认显示当前执行该命令的用户的基本信息

语法1:# id 用户名 显示指定用户的基本信息

在这里插入图片描述

④usermod修改用户属性

命令:usermod(user modify)

语法:# usermod [选项] … 用户名

作用:修改用户的各种属性

选项:

  • -g:表示指定用户的用户主组,选项的值可以是用户组的ID,也可以是组名
  • -G:表示指定用户的用户附加组,选项的值可以是用户组的ID,也可以是组名
  • -u:uid,用户的id(用户的标识符),系统默认会从500 之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】
  • -L:锁定用户,锁定后用户无法登陆系统lock
  • -U:解锁用户unlock
  • -c<备注>:修改用户帐号的备注文字
  • -d<登入目录>:修改用户登入时的目录
  • -s:修改用户登入后所使用的shell

场景2:

公司员工wangwu,属于shhr部门,现在要休产假,产假期间,暂时停止她登陆电脑的权限,同时原来属于gzhr部门的员工lisi,负责wangwu的工作,所以,需要把lisi加入到shhr的组,同时,修改lisi的账户注释为“gzhr shhr user”

对于wangwu用户,我们要执行锁定和解锁操作

对于lisi用户,我们要将lisi加入到shhr的附加组,同时修改lisi账户的注释

用法一:usermod -L 王五账户名
示例代码:
#usermod -L wangwu
含义:将王五账户暂时锁定

用法二:usermod -U 王五账户名
示例代码:
#usermod -U wangwu
含义:将王五账户解锁

用法三:usermod -G 组名 -c “注释内容” 李四用户账号
示例代码:
#usermod -G shhr -c "shhr user" lisi
含义:将李四的账户加入shhr组,并修改注释内容为shhr user
⑤passwd修改用户密码

Linux 不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。

命令:passwd

语法:# passwd 用户名【如果不指定用户名则修改自己的密码】

作用:修改用户密码

企业场景3:

王五产假休完回到公司上班,需要将王五的账户解锁,在使用usermod -U解锁时,我们看到一个错误信息如下:

usermod: unlocking the user’s password would result in a passwordless account.

解锁这个账户,将导致一个没有密码的账户,因为之前王五的账户没有密码。这时候,我们就需要使用passwd命令,给王五的账户设置一个密码

用法一:passwd 账户名
示例代码:
#passwd wangwu
含义:为wangwu账户设置密码
注意:
    当密码过于简单时,系统会提示这是一个不好的密码,因为它太简单了,但是我们仍然可以坚持使用这个密码。
    在我们输入密码时,屏幕不会有任何显示。
    密码需要输入两次,请确保两次输入的密码是一样的。
⑥认识/etc/shadow文件

由于 /etc/passwd文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了shadow文件中。

/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

与用户密码相关的文件:/etc/shadow

为用户设置密码之后,会自动在/etc/shadow文件中进行体现,使用vim编辑器打开:

在这里插入图片描述

第一列为用户名,例如zhangsan

后面是加密后的密码,就是$开头的字符串

如果显示为!,则表示这个用户没有设置密码,例如张三。

⑦su切换用户

在设置用户密码之后就可以使用此账号进行登录系统了,如果系统处于已登录状态,则可以使用su命令进行切换用户。

为了系统安全,企业中通常不会允许root用户直接登录计算机,但是工作需要,我们又需要使用root权限,这时候,我们就可以先使用一个普通用户登录计算机,再通过su命令切换到root权限。

命令:su

语法: su 账号

作用:切换用户

用法一:su 用户名
示例代码:
#su root
含义:切换到root权限

注意:
a. 从root 往普通用户切换不需要密码,但是反之则需要root 密码;
b. 切换用户之后前后的工作路径是不变的,添加了选项[-]会自动切换到用户的家;
c. 普通用户没有办法访问root 用户家目录,但是反之则可以;

启用wheel组设置(了解)

⑧userdel删除用户

命令:userdel

语法:# userdel 选项 用户名

作用:删除账户及其对应家目录

选项:-r:表示删除用户的同时,删除其家目录/home下的对应文件夹

提示:所有跟用户操作的命令(除passwd 外,只能修改自己的密码,即不指定用户名)只有root 超级管理员有权限执行

备注:也可以在登录需要删除的用户之后,按下快捷键“ctrl+d”进行对当前用户的注销,随后退回到上一个用户(root)此时就可以对需要删除的用户进行删除操作。

删除账号=>删除家=>删除所属组(主组)

2.用户组管理

用户组的管理包括用户组的添加、删除和修改

为什么要建立用户组

前面我们说过,人事部有20名员工,我们要建立一个组,叫 hr,这样就不用分别给20个员工设置权限了。

① 用户组添加

命令:groupadd

作用:添加组

语法:# groupadd [参数选项 选项值] 用户组名

选项:-g:设置用户组ID 数字,如果不指定,则默认从1000 之后递增(1-999系统组)

用法一:groupadd 组名
示例代码:
#groupadd hr
含义:新建一个组叫做hr

img

存储用户组信息的文件:/etc/group

使用cat命令,查看/etc/group文件,我们可以看到如下图所示:

img img

/etc/group文件结构:

wheel : x : 10 : itheima
用户组名 : 密码(占位符) : 用户组ID : 这个组包含的用户(附属组)

特别说明:

1) 密码位x代表占位符,用户组可以设置密码,但是大部分情况下不需要设置

2)组内用户名:表示附加组是该组的用户名称。
例如:
​ wheel组(组ID10),是itheima账户的附加组,所以itheima这个账户,就显示在这里。
​ itheima组(组ID1000),是itheima账户的主组, 所以itheima这个账户就不显示在最后。

3)wheel组

只有在wheel组中的普通用户,才可以通过su命令切换到root账户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效

② 用户组修改

命令:groupmod

语法:# groupmod [选项 选项值] 用户组名

选项:-g :gid缩写,设置一个自定义的用户组ID 数字

-n :name缩写,设置新的用户组的名称

示例代码:修改hr用户组,将组ID改成1100,将名称改为bjhr

用法一:groupmod -g 新的组ID -n 新的组名 原有组名
示例代码:
#groupmod -g 1100 -n bjhr hr
含义:将hr组的组ID改成1100,组名改成bjhr

③ 用户组删除

命令:groupdel

语法:# groupdel 用户组名

案例:删除bjhr组

用法一:groupdel 组名
示例代码:
#groupdel bjhr
含义:将bjhr组删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值