vim
普通模式
光标 :
G 跳转至文件尾部
gg 跳转至文件首部
100gg 跳转至指定行数
$ 跳转至本行尾部
^ 跳转至本行首部
复制:
y 复制选中的内容
2yy 复制光标所在的行及下一行
粘贴:
P 粘贴到光标的下一行
p 粘贴到光标的上一行
删除:
dd 删除所在的行
2dd 删除2行
D 删除光标坐在的行后的内容
x 删除后一个字符
X 删除上一个字符
剪切(先删除,后粘贴):
dd+p
替换:
r 替换单个字符
R 连续替换多个字符
撤销:
u 撤销操作
从普通模式切换到编辑模式
i 直接进入编辑模式
I 将贯标跳转至本行的首部,进入编辑模式
a 光标往后挪动一位,进入编辑模式
A 光标跳转至行尾,进入编辑模式
o 在下方插入一行,进入编辑模式
O 在上方插入一行,进入编辑模式
编辑模式
末行模式:
保存 w
退出 q
保存并退出 :wq
强制退出 !q
查找 /+关键字 按n向下搜索,按N向上搜索
替换
指定行号替换 :1,9s#old#new#g
全文替换 :%s#old#new#g
另存为 :w+保存到哪里
文件内容读入
:r /etc/hosts 读入文件至当前光标下面
:5r /etc/hosts 指定插入文件至当前文件第五行下面
视图模式
可视块:
插入字符 ctrl+v选中 ,shift+i进入编辑模式,添加字符,esc,esc
删除字符 ctrl+v选中 ,按x删除 ,esc,esc
替换字符 ctrl+v选中,r,添加字符
可视行:
复制
shift+v选中内容,按y
删除
shift+v选中内容,按d
vim扩展
:set nu 显示行号
:set ic 搜索试时忽略大小写
:set ai 自动缩进
:set list 显示制表符(空行,tab键)
:set no 取消临时设定的变量
文件类型
- 文件
d 目录
b 块设备
c 字符设备
s 进程间通讯 (插座)
l 链接文件
file命令
判断这个文件的具体类型
链接文件
元数据 Inode 索引
真实数据 Block 内容
软链接(类似快捷方式)
将inode链接至block
ln -s /data/rainbow-v1.2 /data/rainbow 将rainbow软链接至rainbow-v1.2
用户管理
passwd
root:x:0:0:root:/root:/bin/bash
shaow
root:6AIMkIk8GKBR8w4WJ$/XNO254EFnTuIBxx.bJ8hP4zPbCAsB0Ms8UanoCpS3hGZSZ5xrPk/Gx1SRzW0At0UpryVjpG/DyDNXEnwLKm7.::0:99999:7:::
用户管理
useradd 添加普通用户
usermod 添加用户
userdel 删除用户
usredel -r 连同家目录一起删除
passwd 修改密码
交互式修改
passwd 修改密码
passwd root 修改root密码
passwd+用户名 给这个用户修改密码
非交互式修改
echo "123" | passwd --stdin +用户名 设定简单密码
yum install expect -y
echo $ (mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4) | tee pass.txt | passwd --stdin +用户名 设定随机密码
系统创建用户流程
/etc/login.defs 定义了创建用户时uid划分规划,密码加密类型,是否创建家目录等
/etc/default/useradd 定义了创建家目录位置,默认用户的shell类型,默认从哪个位置拷贝环境变量,是否创建用户同名邮箱等
用户环境变量丢失后恢复
cp -a /etc/skel/.bash* ./
组相关配置文件
group文件
/etc.group
groupadd 添加组
groupadd -f 如果创建时组已存在,则提示创建成功
groupadd -g 为新组设置gid,若gid存在则提示gid已经存在
groupadd -r 创建一个系统组
groupmod 修改组
groupmod -f 如果创建时组已存在,则提示创建成功
groupmod -g 为新组设置gid,若gid存在则提示gid已经存在
groupmod -r 创建一个系统组
groupmod -n 改名为新的组
groupdel 删除组
groupdel 组名
创建实例
切换身份
su命令切换
切换身份前需要先使用shell登录
shell登录分类
1、登录shell:需要用户名与密码才能登陆(用户名+密码+IP地址)
2、非登录shell:不需要输入用户名与密码就能进入shell
环境变量配置文件
profile类文件:设定环境变量,登录前运行的脚本和命令
bashrc类文件:设定本地变量,定义命令别名
用户配置文件(局部)
~/.bash_profile
~/.bashrc
全局环境变量(全部)
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
登录式shell配置文件加载顺序:/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc
非登录式shell配置文件加载顺序:~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
su与环境变量的关系
su - 用户名 属于登录式shell
su 用户名 属于非登录式shell
su 切换身份
优点:简单
缺点:需要root密码,风险高
sudo 提权命令
先使用root用户对该账户授权后才能对该账户进行提权,完成普通用户无法完成的事情
sudo权限分配
1、创建用户
[root@nood ~]# useradd ops1 [root@nood ~]# useradd ops2 [root@nood ~]# useradd dev1 [root@nood ~]# useradd dev2
创建密码
echo "1" | passwd --stdin ops1 220 echo "1" | passwd --stdin ops2 221 echo "1" | passwd --stdin dev1 222 echo "1" | passwd --stdin dev2
2、创建组或使用别名
User_Alias OPS = ops1,ops2
User_Alias DEV = dev1,dev2
3、设定命令集合(cp、mv == oos)
NETWORKING
SOFTWARE
SERVICES
STORAGE
PROCESSES
4、将完整的内容组织在一起,形成一条记录
sudoers配置规则
vim /etc/sudoers sudo规则详细配置
sudo命令执行流程
sudo授权实例
linux权限管理
针对文件定义了三种身份,分别是属主owner,属组group,其他人others
每种身份对应了三种权限,分别是读read,写write,执行execute
权限中r,w,x的含义
修改权限(赋予权限)
chmod 修改权限命令
UGO方式
chmod a=rwx file给文件所有人添加读写执行权限
chmod a=-rwx file 给文件所有人删除读写执行权限
chmod u=rwx,g=rw,o=- file 给属主读写执行权限,给属组读写权限,其他人无权限
chmod ug=rwx,o=r 给属主属组读写执行权限,其他人只有读权限
NUM方式(八进制方式)(r=4,w=2,x=1)
chmod 644 file 设定文件权限为644(rw-r--r--)
chmod 600 file 设定文件权限为600(rw-------)
chmod -R 755 dir 设定目录权限为755(rwxr-xr-x)(需要-R递归为目录下的所有文件修改权限)
权限修改实例
权限对文件的影响
文件与目录权限总结
修改文件所属
chown 修改文件属主和属组
chown bin /data 修改属主为bin
chown .adm /data 修改属组为adm
chown ops.dev /data 修改属主为ops,修改属组为dev
chgrp 仅能变更文件属组
修改文件所属关系场景
进程能够以一种什么样的方式去访问一个文件,取决于这个进程运行的身份对这个文件或目录有什么样的权限
特殊权限SUID
chmod u+s /usr/bin/cat
chmod 4755 /usr/bin/cat (4为在属主位上添加特殊权限)
SUID作用总结
SGID特殊权限
chmod g+s /dir
chmod 2755 /dir (为dir目录以及属组下的文件修改权限为特殊权限)
场景实例
SBIT粘滞位特殊权限
chmod 1755 /tmp
chmod o+t /tmp
SBIT作用总结
特殊权限实例
文件特殊属性
文件特殊属性属性的作用
chattr命令格式
chattr [+-=] [a/i] 文件或目录名 (a:可对文件进行追加内容,i:锁定文件)
chattr +a /etc/passwd
chattr +i /etc/passwd
文件默认权限
UMASK
UMASK判断语句
UMASK计算方法
重定向
标准输入与标准输出与错误输出
stdin 标准输入 文件描述符(0)
stdout 标准输出 文件描述符(1)
stderr 错误输出 文件描述符(2)
输出重定向
> 标准覆盖重定向 将正确的结果输出到指定文件中,并覆盖原内容
>> 标准追加重定向 将正确的结果输出到指定文件中,并追加到原内容后
2> 错误覆盖重定向 将错误的结果输出到指定文件中,并覆盖原内容
2>> 错误追加重定向 将错误的结果输出到指定文件中,并追击到原内容后