linux命令3-Vim编译器,用户权限管理,时间

1.  Vim编辑器

vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。

vim的主要优势

1.vim拥有所有vi命令功能;

2.vi只能在Unix / Linux,vim可以在Unix / Linux,windows系统上使用

3.vim编辑器,自动根据文件你内容显示不同的颜色

1.1安装vim

yum -y install vim 

yum是RedHat以及CentOS中的基于RPM软件包管理器。

linux命令3-Vim编译器,用户权限管理,时间_第1张图片1.2使用方法

进入方式 vim filename

进入编辑模式 按i 可进行编辑修改

退出编辑模式 按Esc 再按 : wq 保存并退出

基本上vim可以分为三种状态

分别是命令模式 (command mode)、插入模式 (Insert mode) 和底行模 式 (last line mode)

命令行模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last )

插入模式:也称为编辑文本模式 只有在Insert mode下,才可以做文字输入,按 「ESC」键可回到命令行模式。

底行模式: 将文件保存或退出vi,也可以设置编辑环境,如搜索、替换、保存、退出、撤销、高亮等等

不过一般我们在 使用时把vi简化成两个模式,就是将底行模式 (last line mode)也算入命令行模式command mode)。

1.3插入命令

i 在光标前插入

I 在光标当前行开始插入

a 在光标后插入

A 在光标当前行末尾插入

o 在光标当前行的下一行插入新行

O 在光标当前行的上一行插入新行

1.4定位命令

gg 到文本的第一行

G 到文本的最后一行

:n 到文本的第n行

$ 当前行的最后一个字符

1.5替换和取消命令

u 取消上一步操作(返回上一步) Ctrl+r 返回到undo之前(取消返回上一步)

r 替换光标所在处字符(只替换一个)

R 从光标所在处开始替换,按esc结束

1.5.1 命令模式替换

:底部命令模式下使用“s/原字符/新字符/g” 代表当前行所有

如果想全局替换,s变为%s

1.5.2 文件内全部替换

:%s#abc#123#g (如文件内有#,可用/替换,:%s/abc/123/g)

--注:把abc替换成123

1.5.3文件内局部替换

:20,30s#abc#123(如文件内有#,可用/替换,:%s/abc/123/g)

--注:把20行到30行内abc替换成123

1.6删除命令

x 删除光标所在字符

nx 删除光标所在处后n个字符

dd 删除光标所在行,ndd删除n行

dG 删除光标所在行到末尾行的所有内容

D 删除光标所在处到行尾的内容

:5,7d 删除指定范围的行,从第5行到第7行

1.7常用快捷键

Shift+ zz 保存退出,与“:wq”作用相同

v 进入字符可视模式

linux命令3-Vim编译器,用户权限管理,时间_第2张图片

V 或 Shift + v 进入行可视模式

linux命令3-Vim编译器,用户权限管理,时间_第3张图片

Ctrl + v 进入块可视模式

linux命令3-Vim编译器,用户权限管理,时间_第4张图片

1.8一些命令行操作键

Linux中vi编辑器的使用详解,下面的引号和括号不算啊

:set nu 显示行号

:set nonu 取消行号

光标的移动除了键盘上的上下左右键.也可以是小写模式下,按键盘上的"h,j,k,l",

"ctrl+b":屏幕往后移动一页

"ctrl+f":屏幕往前移动一页

"ctrl+u":屏幕往后移动半页

"ctrl+d":屏幕往前移动半页

输入任何一个整数,然后输入"shift+G" 就可以到这一页的开头了.

按键盘上的大写"G"移动到文章的最后.

按"$"符号将光标移动到行尾

"^"将光标移到行头

"w":将光标移到下一行头

b":跟"w"相反.移到上一行行头

"e":将光标移到下一行尾.

1.9复制 粘贴

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

字尾处表示哪一个字段 比如从光标处使用yw复制这个root

「yy」:复制光标所在行到缓冲区。

粘贴时向下插入此行

「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。

将缓冲区内的字符贴到光标所在位置。

注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴 功能。

1.10查找

用"/"加上要查找的内容.例如"/hello"或者是"?hello"也是可以的.

替换

「r」:替换光标所在处的字符。 ,按一下"r"然后输入要即可.

「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

linux命令3-Vim编译器,用户权限管理,时间_第5张图片

2.用户权限管理

window:单用户 多任务

linux:多用户 多任务

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个惟一的用户名和各自的密码。

用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。

要想实现用户账号的管理,要完成的工作主要有如下几个方面:

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

用户组的管理。

注意三个文件:

/etc/passwd 存储用户的关键信息

/etc/group 存储用户组的关键信息

/etc/shadow 存储用户的密码信息

显示当前登录的用户: whoami

2.1用户管理

2.1.1查看用户信息

使用cat命令来查看一下保存用户信息的文件 ,保存用户信息的文件保存在 /etc/passwd文件里面

cat /etc/passwd

linux命令3-Vim编译器,用户权限管理,时间_第6张图片

root 用户名 : x 密码:0 :0 :root :/root :/bin/bash

域分割符这个文件有7个域分别是:

用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell

用户名:创建新用户名称,后期登录的时候需要输入;

密码位:此密码位置一般情况都是“x”,表示密码的占位;

用户标示号:用户的识别符

默认组标示号:该用户所属的主组ID;

注释:用于描述用户的信息

家目录:用户登陆系统的默认目录,默认是在/home/下、

解释器:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;

根用户都是从0开始的(第三个域)

除了第一行root外,下面的都是操作系统的伪用户(除普通用户外)

超级用户:(root,UID=0)

普通用户:(UID在500到60000)

伪用户:(UID在1到499)

伪用户不能登录系统,而且没有宿主目录

为什么需要伪用户:没有用户登录时,linux系统依然要运行,有很多进程在跑着,所以必须需要一些伪用户来执行那些命令

2.1.2查看保存密码的文件:/etc/shadow

用户名:密码:更改密码的日期:密码不可被更改的天数(0随时可以更改):密码需要更新的时间:

提前几天进行提醒

:号的含义

  1. 帐号名称:由于密码也需要与帐号对应啊~因此, 这个档案的第一栏就是帐号,必须要与 /etc/passwd 相同才行!
  2. 密码:这个才是真正的密码,而且是 经过编码过的密码啦!
  3. 最近更动密码的日期:这个栏位记录了‘更动密码的那一天’的日期, 不过,这里展示的是数字18492 那是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 ,而 1971 年 1 月 1 日则为 366 啦! 所以这个日期是累加的那么2020年8月19日就是18492
  4. 密码不可被更动的天数: 第四个栏位记录了这个帐号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码!
  5. 密码需要重新变更的天数: 由于害怕密码被某些‘有心人士’窃取而危害到整个系统的安全,所以有了这个栏位的设计。 你必须要在这个时间之内重新设定你的密码,否则这个帐号将会暂时失效。 而如果像上面的 99999 的话,那就表示,呵呵,密码不需要重新输入啦! 不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码呢!
  6. 密码需要变更期限前的警告期限:当帐号的密码失效期限快要到的时候, 就是上面那个‘必须变更密码’的那个时间时, 系统会依据这个栏位的设定,发出‘警告’言论给这个帐号,提醒他‘再过 n 天你的密码就要失效了,请尽快重新设定你的密码呦!’,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。
  7. 密码过期的恕限时间:如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在‘必须变更密码的期限前,并没有变更你的密码!’ 那么该组密码就称为‘失效的密码’啰~怎么办?没关系,还有这个栏位的天数设计啊 意思就是说,当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,那么您的帐号就失效了!无法登入!
  8. 帐号失效日期:这个日期跟第三个栏位一样,都是使用 1970 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’的系统中, 你可以规定一个日期让该帐号不能再使用啦!

保留:最后一个栏位是保留的,看以后有没有新功能加入。

保存用户组的文件:/etc/group

保存用户组密码的文件:/etc/gshadow

用户配置文件:/etc/default/useradd

2.2用户管理

2.2.1添加用户

useradd [选项] 用户名

常用选项:

-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名

-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名

-u:uid,用户的id(用户的标识符),系统默认会按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义

-c comment:添加注释

案例:创建用户 yyl 不带任何选项

验证是否成功:

a. 验证/etc/passwd的最后一行,查看是否有yyl的信息;

b. 验证是否存在家目录(在Centos下创建好用户之后随之产生一个同名家目录);

注意:在不添加选项的时候,执行useradd之后会执行一系列的操作

a. 创建同名的家目录;

b. 创建同名的用户组;

创建一个用户 yzh 主组是root 附加组是yyl id是2000 注释是 yzh班级

案例:添加选项,创建用户lisi,让lisi属于501主组,附加组500,自选号666,注释是 lisi。

useradd -g 501 -G 500 -u 666 lisi

2.2.2修改用户(前提是你有这些组)

usermod [选项] 用户名

Usermod:user modify,用户修改

常用选项:

-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名

-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名

-u:uid,用户的id(用户的标识符),系统默认按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义号

-l:修改用户名

案例:修改yyl用户主组为500,附加组改为501

usermod -g 500 -G 501 yyl

案例:修改yyl用户用户名,改为yuyongli

usermod -l 新的用户名 旧的用户名

#usermod -l yuyongli yyl

注意:已经登录的用户不能修改

groups 用户名 --- 用户所在的组

2.2.3修改用户密码

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

passwd 用户名

案例:设置yuyongli用户的密码

设置密码之后在shadow文件中能够看出用户是否有密码。

在设置用户密码之后可以登录帐号,例如此处需要登录yuyongli

2.2.4切换用户

切换用户命令:su [用户名] (switch user)

从root往普通用户切换不需要密码,但是反之则需要root密码;

2.2.5删除用户

常用语法:userdel [选项] 用户名

常用选项:

-r:表示删除用户的同时,删除其家目录;

案例:删除yuyongli用户

注意:已经登录的yuyongli用户删除的时候提示删除失败,但是没有登录的lisi用户可以正常删除

如果想要删除yuyongli这个用户可以强制删除

a. ps -ef|grep yuyongli

b. kill -9 xxx

提示:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。

2.2.6查看所有用户

ls /home

2.2.7 锁定用户

usermod -L 用户名

usermod -L yyl

2.2.7.1锁定作用

Linux 账户锁定是一项重要的安全措施,可以协助用户防范恶意攻击。在这种机制下,如果用户的登陆行为有问题,其账号将被临时锁定,以防登录活动有异常情况出现

2.2.8解锁用户

usermod -U 用户名

2.3用户组管理(大多数通过名字来实现)

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

文件结构:

用户组名:密码:用户组ID:组内用户名

密码:X表示占位符,虽然用户组可以设置密码,但是绝大部分的情况下不设置密码;

组内用户名:表示附加组是该组的用户名称

2.3.1添加用户组

常用语法:#groupadd [选项] 用户组名

常用选项:

-g:类似用户添加里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从1000之后递增;

案例:使用groupadd指令创建一个新的用户组,命名为xxx

groupadd xxx

2.3.2 更改用户组

groupmod [选项] 组名

常用选项:

-g:类似用户修改里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字

-n:类似于用户修改“-l”,表示设置新的用户组的名称

案例:修改Administrators用户组,将组ID从502改成520,将名称改为admins

groupmod -g 520 -n admins Administrators

2.3.3删除组

groupdel 组名

注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。

是主组时不能删除!!

2.3.4修改用户的组

usermod -g 用户组 用户名

注:-g–gid,修改用户的gid,该组一定存在

多组:

usermod -G 组名,组名 用户名

usermod -G test,root yyl

把zyf的组改为AAA

2.3.5给文件授权到组

-- change group premission

chgrp 组名 文件名

chgrp g1 /home/test

2.3.6.设置文件权限

chmod 770 /home/1.txt

750

用数字来表示权限(r=4,w=2,x=1,-=0)

linux命令3-Vim编译器,用户权限管理,时间_第7张图片

3.时间

3.1查看当前时间

[root@localhost ~]# date

3.2格式化当前的时间

[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"

2021-02-21 21:57:00

这两个效果一样

date "+%F %T"

linux命令3-Vim编译器,用户权限管理,时间_第8张图片

3.3获取之前或者之后的某个时间(备份)

#date -d "-1 day" "+%Y-%m-%d %H:%M:%S"

符号的可选值:+(之后) 或者 - (之前)

单位的可选值:day(天)、month(月份)、year(年)

%F:表示完整的年月日

%T:表示完整的时分秒

%Y:表示四位年份

%m:表示两位月份(带前导0)

%d:表示日期(带前导0)

%H:表示小时(带前导0)

%M:表示分钟(带前导0)

%S:表示秒数(带前导0)

3.4查看硬件时间

[root@localhost ~]# hwclock

Sun 21 Feb 2021 09:59:01 PM PST -0.992879 seconds

3.5设置当前的时间

[root@localhost ~]# date -s "2024-01-11 11:21:00"

Mon Feb 22 14:00:00 PST 2021

3.6将系统时间同步到硬件时钟

[root@localhost ~]# hwclock --systohc

[root@localhost ~]# date && hwclock

linux命令3-Vim编译器,用户权限管理,时间_第9张图片
3.7时间不一致的问题

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

你可能感兴趣的:(二期linux运维,linux,vim,运维)