- VIM文件编辑器
- 1. vim基础概述
- 2. VIM的三种模式
- 命令模式:当vim开始文件编辑时,默认进入该模式
- 输入模式(编辑模式、插入insert模式):
- 底行模式:执行功能性操作,如保存、退出、查找、替换等
- 用户及权限管理
- 1. 用户管理文件基础
- **用户管理文件(`/etc/passwd`文件)**:
- 2. 用户管理命令
- Linux(新增、删除)用户,用户组
- Linux将用户添加到组
- Linux修改用户口令
- 3 用户切换
- 4. 使用root权限
- VIM新建文件
- vim filename
在该模式下,通常操作:(上下左右移动光标,删除某个字符、行、多行,复制粘贴)
| 按键 | 作用 |
|---|---|
| h或者向左的←方向键 | 光标向左移动一个字符 |
| l或者向右的→方向键 | 光标向右移动一个字符 |
| k或者向上的↑方向键 | 光标向上移动一个字符 |
| j或者向下的↓方向键 | 光标向下移动一个字符 |
| Ctrl+B | 本文页面向前翻一页 |
| Ctrl+F | 本文页面向后翻一页 |
| 0 或者 Shift +6(即^) | 移动到本行行首 |
| Shift +4(即$) | 移动到本行行尾 |
| gg | 移动到首行 |
| G | 移动到尾行 |
| nG(n是任意数字) | 移动到第n行 |
| - | - |
| x和X | x表示向后删除一个字符,X表示向前删除一个字符 |
| nx | 向后删除n个字符 |
| dd | 删除(剪切)光标所在的行 |
| ndd | 删除(剪切)光标所在的行之后的n行 |
| yy; nyy | 复制光标所在行;向下复制n行 |
| p; P | 从光标所在行开始,向 (下 ;上) 粘贴以及复制的内容 |
| u: undo的意思 | 还原上一步操作 |
| v | 按v后移动光标会选定指定字符,然后可以实现复制(按y复制)、粘贴等操作 |
- 在命令模式下,按`i`,进入输入模式 - 在输入模式下,按`ESC键`,进入命令模式 - 除了`i`可以进入输入模式,还可以由以下几种方式进入: 底行模式:执行功能性操作,如保存、退出、查找、替换等
- 在命令模式下,按`:`,进入底行模式 - 在底行模式下,按`ESC`,返回命令模式
| 命令 | 作用 |
|---|---|
| /word | 在光标之后,查找第一个字符串word,按n向后继续搜索 |
| ?word | 在光标之前,查找第一个字符串word,按n向前继续搜索 |
| :n1,n2s/word1/word2/g | 在 n 1 n_1 n1和 n 2 n_2 n2行之间查找字符串word1,并替换为word2,不加g则只替换每行的第一个word1 |
| :,$s/word1/word2/g | 将文档中所有的字符串word1,替换为word2,不加g则只替换每行的第一个word1 |
| - | - |
| :w | 保存文本 |
| :q | 退出Vim |
| ;w! | 强制保存,在root用户下,即使文本只读,也可以完成保存 |
| :q! | 强制退出,所有改动不生效 |
| :wq | 保存并退出 |
| :set nu | 显示行号 |
| :set nonu | 不显示行号 |
Linux有三种不同类用户:
- 管理用户(root),root用户是在安装OS时,由系统自动创建,具有Linux的所有权限。(黑客的终极目标)
- 一般用户,即前面安装时创建的aurora。可以在OS中访问程序,如Vim,数据库,Web浏览器。可以创建保存文件到自己的HOME目录。无法修改系统配置文件
- 服务用户,用于apache、邮件、打印服务等系统服务。这些服务用户与Linux系统用户进行交互,通常不需要我们人为的去更改。
通常我们对Linux的操作过程是:使用普通用户登录进行查看,而需要修改Linux时,切换为root用户或使用root权限进行操作。
用户管理文件(/etc/passwd文件):包含每个用户的基本信息。用vim打开该文件,里面存放着用户的基本信息
/etc/passwd共有7列,以:隔开,依次解析如下:
| username | password | User ID | Group ID | User info | Home Directory | Login Shell |
|---|---|---|---|---|---|---|
| 代表用户名。 可以包含数字、-、·、_,但不能以-开头,不能大于32 个字符 | 用户口令。 可以是x、*或字母数字的随机组合; 1. x:表示实际口令指向/etc/shadow ; 2. * :表示禁用的用户; 3. 随机字母数字:表示加密后的口令 | 用户的数字ID; root默认是0, 普通用户默认从1000开始 | 用户所属的组ID。 默认情况下,Linux会给每个用户新建一个用户组,与数字ID匹配 | 类似于用户的备注信息,可以任意输入 | 用户的家目录。 即登陆后,用户默认所处的目录,默认在/home/用户名 | 表示用户登录的shell。 1. 默认可登录的用户为/bin/bash,也可以自己定义一些其他的shell; 2. 无法登陆的服务用户,默认为/sbin/nologin,表示无法登录 |
- /etc/group文件:在Linux中,每个用户都被分配到一个组名与用户名相同的组中。共有四列,依次解释如下:
| Group name | Password | Group ID | Group members |
|---|---|---|---|
| 每个用户都有与用户名相同的组,也是组的唯一名称 | 通常是x,表示指向/etc/shadow文件,也可以是字母数字的随机组合 | 同userID,如果要创建一个特殊的组,表示管理员权限,建议分配一个独立的GID,避免GID滥用 | 表示组内成员,如 postfix组 属于mail组 |
- /etc/shadow文件:是/etc/passwd文件的补充,包含8列信息
| Username | Password | Password history | mindays | maxdays | warndays | inactive | disable |
|---|---|---|---|---|---|---|---|
| 用户名 | 加密后的口令,对应在/etc/password第二列需要是x | 口令的最后修改日期 | 用户必须保持该口令的最小天数 | 口令的使用最长天数,在此之后必须更改口令 | 口令过期前,提供警告的天数 | 口令过期后任然可使用口令的天数,在此期间会提示修改口令 | 禁用账户后的天数 |
- 新增用户:useradd + 用户名
- -u:指定uid
- -g:指定GID
- -d:指定用户家目录
- -c:输入备注信息
- -M:表示不建立家目录
- -s:自定义shell程序,不使用默认的/bin/bash
- -e:YYYY-MM-DD格式,输入用户的过期日期
- 也可以通过直接编辑/etc/passwd文件来添加用户,要确保以下几点
- 添加用户的主目录,并确保你想添加的用户和用户组有目录所有权
- 确保编辑文件的格式正确
- 确保用户有与其名称对应的私有组
- 删除用户:userdel + 用户名
- -r:一并删除用户的家目录
- 新增用户组(以前不存在):groupadd -g + GID + groupname
- 注意:groupadd如果不加-g指定GID,那系统会默认从1000后开始分配
- 删除用户组:groupdel + groupname
- 删除时,如果组中由用户的“主要组”是此组,则不能删除,需要先删除用户(可以从password文件中看是否有主要组,即用户ID与组ID相同的就是主要组)
- 将现有用户添加到辅助组(G),请使用带有-G选项
- usermod -G + groupname + username
- 将用户添加到多个辅助组
- usermod -G + groupname1,groupname2 + username
- 我们必须使用 -g 改变用户的主要组(g)
- usermod -g + groupname + username
- 使用 id 命令进行验证
- id + username
Linux用户创建完成以后,默认是没有密码的,只有设置好密码,才能登录对应账户
- passwd + username
- su + username:切换为指定用户
- 当由root切换到普通用户时,不用输入密码
上面的su命令必须要知道root密码才行。
但是root密码是一个非常敏感的密码,为了保障root密码的安全,Linux OS设计了sudo这个命令,即用root的身份执行一个命令,而不是切换为root用户。使用sudo时需要输入当前用户自身的密码
- 普通用户如果需要使用sudo,必须经过root的设置(允许)才可以
- sudo通过 visudo 工具来实现,Centos7默认已经安装有 visudo。如果没有sudo命令,可以通过yum install sudo来安装
- 设置方法:
- 使用root用户,编辑/etc/sudoers文件
- 在/etc/sudoers中找到如下行:
- 在/etc/sudoers中找到如下行:
- %wheel:代表用户组
- 此行含义是允许wheell用户组的用户执行 sudo 中任何命令
- 因此,将我们创建的aurora用户加入到wheel组(RECALL前面如何修改用户的组),来用 sudo 执行任意命令



