vim编辑器

三种模式:

命令行模式:控制光标的移动,可以对文本进行复制粘贴等操作
输入模式:正常的文本输入
末行模式:保存退出文件,以及设置编辑环境

模式切换:

命令行模式->输入模式:a、i、o、A、I、O等键
输入模式->命令行模式:esc键
命令行模式->末行模式: :键
末行模式->命令行模式:esc键
a:在光标后输入
i:在光标前输入
o:在光标下一行输入
A:在行末进行输入
I:在行首进行输入
O:在光标上一行输入

命令行模式:

光标跳转
上下左右:kjhl
单词跳转
w:下一个单词的词首
e:当前单词的词尾
b:当前单词的词首
#wed:跳转#个字符
行首行尾跳转
^:行首(非空白字符)
0:行首(真正的行首)
$:行尾
行间跳转
G:最后一行
#G:跳转第#行
gg:第一行=1G
句间/段落间移动
(/):句间
{/}:段落间
字符编辑
x:删除光标处的字符
#x:删除光标处起始的#个字符
替换命令
r:可以进行替换光标处的字符
删除命令
d:删除光标处所在位置,是可以配合光标跳转使用
d^:删除光标所在位置到非空白字符行首的所有字符
d$:删除光标所在位置到非空白字符行尾的所有字符
d0:删除光标所在位置到行首的所有字符
dw:删除光标所在位置到下一个词首的所有字符,不影响下一个词
de:删除光标所在位置到当前词尾的所有字符
db:删除光标所在位置到当前词首的所有字符
dd:删除光标所在的整行字符
#dd:删除多行
d#G:删除包括所在行到第#行
dgg:删除包括所在行到第一行
复制命令
y:类似于d命令
粘贴命令
p
剪切命令—->删除命令->粘贴操作
撤销命令
u:撤销前一次
#u:撤销前多次
搜索命令
命令模式:?
末行模式::/
n:跳转上一个匹配
N:跳转下一个匹配

末行模式

保存退出
:q—->退出
:w—->保存,后加文件目录可另存为
:q!—->强制退出,丢弃所有修改
:wq—->保存退出
:x—->保存退出
在命令行模式:ZZ—->保存退出
地址定界
N:第几行
N,M:第N行到第M行
%:全文
.:当前行
$:最后一行

查看并替换
:s/查找内容/替换内容/修饰符
修饰符
i:忽略大小写
g:全局替换,默认只替换第一次匹配出现的
#:替代/,需要替换的内容包含斜杠时使用,或者可以使用\进行转义
s#/hello/#hi#或s/\/hello\//hi/

多文件模式

文件之间的跳转
:next 下一个文件
:prev 上一个文件
:first 第一个文件
:latest 最后一个文件
:qwall 保存所有文件并退出

窗口分割

o:水平分割
O:垂直分割
窗口之间的跳转:CTRL+W hkjl(上下左右窗口跳转)

定制vim

配置文件:/ect/vimrc (永久生效)
个人:~/.vimrc
末行:当前进程有效
定制
行号:
显示: set number
关闭: set nonumer
可以简写: set nu set nonu
自动缩进:
启动: set ai
取消: set noai
高亮搜索:
set hlsearch
set nohlsearch
语法高亮:
syntax on
syntax off

获取帮助

:help

Linux用户,组和权限管理

基础知识

Linux用户
管理员:root 0
普通用户:1-65535
系统用户:1-499/1-999
登录用户:500+ 1000+
Linux组—组ID
管理员组:root 0
普通组:1-65535
系统组:1-499/1-999
登录用户组:500+ 1000+
组类别
基本组(主组):组名与用户名相同,若仅包含一个用户,也称之为私有组
附加组(额外组):一个用户可以属于多个额外组
Linux安全上下文
运行中的程序:进程(process)
进程可以访问所有资源的权限取决于进程的发起者身份
Linux用户和组相关的配置文件
/etc/passwd—->用户及其属性信息(名称,UID,基本组ID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
username:password:UID:GID:group:home_directory:shell

[root@localhost ~]# cat /etc/group
root:x:0:
group_name:gpasswd:GID:userlist

[root@localhost ~]# cat /etc/shadow
root:$6$ABQIs2655US4WZHQ$qqwo503ixwN9LyrwQ0mp0LdHFLIU89.iX8AKtwyF1DRAw5bIEl8J5IwQEgCID4akDX7Uc.MNL4Q3qkKaxdS061::0:99999:7:::
username:password(secret):最近一次修改密码的日期:密码的最小使用期限:最大密码使用期限
:密码告警的时间段:密码禁用日期:账户过期日期:保留字段

用户管理命令

创建用户:useradd

默认会创建与用户同名的组
-u:指定UID
-g:指定GID
-c:指定用户注释信息
-d:指定家目录
-s:指定shell(/etc/shells)
-G:指定附加组
-r:创建系统用户

[root@test ~]# tail -n 1 /etc/passwd
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
1000+ centos7 普通登录用户 1000+
创建用户时默认配置
[root@test ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

修改用户相关属性:usermod命令

Usage: usermod [options] LOGIN(用户名/用户ID)
常用选项:
-aG:将用户添加到附加组
-d:移动用户至新家目录中
-L:锁定用户
-U:解锁用户

修改用户密码:passwd命令

常用参数:
[root@test ~]# passwd —help
Usage: passwd [OPTION…]
-x, —maximum=DAYS maximum password lifetime (root only) 最大密码使用期限
-n, —minimum=DAYS minimum password lifetime (root only) 最小密码使用期限
-w, —warning=DAYS number of days warning users receives before password
expiration (root only) 提前多少天开始警告
-i, —inactive=DAYS number of days after password expiration when an account
—stdin read new tokens from stdin (root only)
从标准输入接收用户密码:
修改密码的一种方式:
[root@test ~]# echo “123456” | passwd —stdin test
Changing password for user test.
passwd: all authentication tokens updated successfully.

删除用户:userdel命令

常用参数:
-r, —remove remove home directory and mail spool
[root@test tmp]# userdel -r zhangsan

组相关管理命令

创建组:groupadd命令

-g:指定GID
-r:创建系统组

删除组:groupdel命令

修改组属性: groupmod命令

Note:
-p 加密过后的密码

修改组密码:gpasswd

id命令:查看用户相关信息

常用选项:
Usage: id [OPTION]… [USER]
Print user and group information for the specified USER,
or (when USER omitted) for the current user.
-g, —group print only the effective group ID 只显示主组的GIP
-G, —groups print all group IDs 显示所有组的GID
-n, —name print a name instead of a number, for -ugG 使用名称代替ID的显示
-r, —real print the real ID instead of the effective ID, with -ugG 使用ID代替名称的显示
-u, —user print only the effective user ID 只显示用户ID

[root@test ~]# id -n zhangsan
id: cannot print only names or real IDs in default format
[root@test ~]# id -gn zhangsan
zhangsan

su: 切换用户

常用切换方式:
su username: 切换用户,但不读取用户配置信息
su - username: 完全切换用户,读取用户配置细腻
su [-] username -c ‘command’ : 切换用户并执行命令,执行完后退出该用户shell

Linux用户权限管理

-:文件类型(普通文件)
l:文件links数
93:文件大小

文件权限只要针对三类对象进行定义:
属主:u
属组:g
其他:o
每个文件针对每类访问者都定义了三种基本权限
r:可读权限
w:可写权限
x:可执行权限
普通文件类型
r:可以使用查看工具获取内容
w:可以修改其文件内容
x:可以把此文件提交给内核启动一个进程
目录文件类型
r:可以使用ls查看此目录中的文件列表
w:可以在目录中创建/删除文件
x:可以使用ls -l 查看此目录中文件列表,可以cd进入此目录

权限管理chmod命令

chmod [OPTION]… MODE[,MODE]… FILE… 常用选项: ‐R:递归修改
MODE:
u= g= o= 421
chmod [OPTION]… ‐‐reference=RFILE FILE…

chgrop命令:可以修改属组

umak命令:文件或目录的遮掩码—->定义创建的文件或目录的默认权限

文件或目录的遮掩码 File:666 ‐ umask(预设没有x权限) Dir: 777 ‐ umask
查看:umask 设定:umask #

特殊权限:SUID SGID SBIT

SUID:借出程序所有者的权限 4 0->4

[root@localhost ~]# ll /usr/bin/passwd ‐rwsr‐xr‐x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd # root用户拥有在x权限位为s权限
passwd命令为修改用户的密码,根据权限可以得知同一用户组或其他人都可以调用改命令。但是passwd命令需要 修改/etc/passwd文件,此文件存储账号的密码
[root@localhost ~]# ll /etc/passwd ‐rw‐r‐‐r‐‐. 1 root root 846 Aug 5 06:59 /etc/passwd
问题:
1. /etc/passwd文件仅仅root用户有r权限,其他用户怎么办?
2. 其他用户虽然可以调动passwd命令,但是无法写入/etc/passwd 文件之中呀
3. 这就是SUID的作用:其他用户没有权限修改/etc/passwd的权限,但是root用户可以将r权限赋给其他用户去修 改/etc/passwd文件
注意:
1.SUID权限仅对二进制程序有效
2.执行者必须要拥有x权限
3.仅在本程序中拥有修改权限
4.属主拥有s权限,即可将自己的权限借给其他人使用,前提要拥有x权限

SGID:借出用户组的权限 2

注意:
1.二进制程序有效
2.执行者拥有x权限
2.执行过程中暂时拥有用户组权限

STIB:借出其他用户的权限 1

sticky:对目录有效 1
[lisi@localhost ~]$ ll ‐d /tmp/ drwxrwxrwt. 8 root root 217 Aug 5 09:36 /tmp/
当用户对此用户具有w,x权限时,即具有写入的权限 用户在此目录创建文件,只有自己和root用户有权删除 用户不允许对其他用户的文件操作

ACL权限

对传统的owner group other的rwx权限做了更加细化的权限管理
ACL可以针对单一使用者,单一文件或目录来进行rwx的权限规范
Usage: setfacl [‐bkndRLP] { ‐m|‐M|‐x|‐X … } file …
常用选项:
‐m :添加acl设定参数
‐x :删除acl设定参数
‐b :移除所有的ACL设定参数
‐R :递归添加acl设定参数
‐d :添加默认acl设定参数(目录)
删除用户权限:setacl ‐x u:username filename
删除组权限:setacl ‐x g:groupname filename

针对用户的设定方式

设定规范:u:username:power
1.设定user对testfile有rwx权限 setfacl ‐m u:user:rwx testfile
2.设定user对testdirectory目录下所有文件有RWX权限 setfacl ‐R ‐m u:user:rwx testdirectory
3.去掉user对testdirectory的x权限 setfacl ‐x u:user testdirectory/
4.去掉所有acl权限 setfacl ‐b
5.为testdirectory目录添加默认的acl权限,此目录下创建目录和文件,user都有rwx权限 setfacl ‐d ‐m u:user:rwx testdirectory/
针对组的权限设定
设定规范:g:groupname:power
1. 给acl_test1文件添加mygropu1组rx权限设定 [root@study ~]# setfacl ‐m g:mygroup1:rx acl_test1 [root@study ~]# getfacl acl_test1 # file: acl_test1 # owner: root # group: root user::rwx user:vbird1:rx group::r‐‐ group:mygroup1:rx # 组权限设定 mask::rx other::r‐

删除整个acl权限:setacl ‐b filename

setfacl命令:控制文件权限

getfacl命令:查看文件acl设定参数

用法:getacl filename
1.列出设定的acl_test1的权限内容: [root@localhost tmp]# getfacl acl_test1 # file: acl_test1 # owner: root # group: root user::rw‐ group::r‐‐ group:mygroup1:r‐x
mask::r‐x other::r‐‐