首页 > 代码库 > LINUX 学习笔记2
LINUX 学习笔记2
vim
1.vim 命令模式
在vim的命令模式下可以配置vim的工作方式
临时设定:
:setnu 行号添加
:setnonu 取消行号
:setmouse=a 添加鼠标选择
:set cursorline 行线显示
永久设定方式vim /etc/vimrc ,在这个文件后加入想要的参数,如set nu
2.vim命令模式下关键字
搜索:/关键字 n向下匹配 N向上匹配
3.vim命令模式下字符的管理
1.字符的复制,删除,剪切
yl 复制1个字母
y3l 复制3个字母
y3w 复制3个字母
y3y 复制1行
dl/w/d 删除字母/单词/行
cl/w/c 剪切字母/单词/行
粘贴 p
PayAttention
esc ---> p 剪切过后会进入到插入模式,执行粘贴时按esc。
2.快捷键
u 恢复到操作之前
crtl + r 恢复到操作之后
4.vim的可视化模式
在命令模式下按“ctrl+v”进入到可视模式
ctrl + v 块装选择一片区域
v 全行选择一片区域
可视模式下批量添加字符
*>> ctrl+v 选中要加入字符所在列
*>> 按“I”进入插入模式,写入要加入的字符
*>> 按esc
5.批量修改字符
实验文档:/etc/kdump.conf
:%s/原有字符/替换后字符 只替换每一行中出现的第一个原有字符
:%s/原有字符/替换后字符/g 替换所有
:%s/\t//g 把全文的tab键替去掉,\t 表示tab键
:%s/^\ *//g 把全文行首的空格去掉"^\ *"表示行首的空格
:%s/^\#\ */#/g 把全文#后的空格去掉
6.vim的分屏功能
ctrl+w s 上下分屏
ctrl+w v左右分屏:对于同一个文件分屏。键入文字时,两个页面同时输入。
ctrl+w c 关闭光标所在屏幕
ctrl+w 上下左右 光标移动到指定屏幕
vimdifffile1 file2
7.vim光标移动
在命令模式下
:数字 移动到指定的行
插入模式
O
I i 字符(s) a A ----- s删除整行插入
o
8.其他
wq! 只对文件所有者或者超级用户才生效
vim帮助:vimtutor
gedit帮助:yelphelp:gedit
用户
1.用户理解
用户配置文件: /etc/passwd
用户信息用户:密码:uid:gid:说明:家目录:
用户使用的shell配置文件: /etc/shadow
用户认证信息用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
组信息配置文件:/etc/group
组名称:组密码:组id:附加组成员
组认证信息:/etc/gshadow
用户家目录:/home/username
用户骨架文件:/etc/skel/.*
2.用户管理
1.用户建立
useradd 参数 用户名字
-u 指定用户uid
-g 指定用户初始组信息,这个组必须已经存在
-G 指定附加组,这个组必须存在
-c 用户说明(comment)
-d 用户家目录
-s 用户所使用的shell,/etc/shells记录了用户能使用shell的名字
2.用户删除
userdel -r 用户名称 -r表示删除用户信息及用户的系统配置
3.组的建立
groupadd -g 建立组
groupdel 组名字 删除组
作以上实验的监控命令: watch -n 1 ‘tail -n 3 /etc/passwd /etc/group;echo ====;ls -l/home;echo ===;ls -l /mnt‘
4.用户id信息查看
id 参数 用户
-u 用户uid
-g 用户初始组id
-G 用户所有所在组id
-n 显示名称而不是id数字
-a 显示所有信息
5.用户信息更改 usermod 参数 用户
-l 更改用户名称
-u 更改uid
-g 更改gid
-G 更改附加组
-aG 添加附加组
-c 更改说明
-d 更改家目录指定(只是修改/etc/passswd中的配置)
-md 更改家目录指定及家目录名称(movedir) (在真实的目录中修改家目录)
-s 更改shell
-L 冻结帐号
-U 解锁
3.用户权力下放(root给普通用户权限)
1.配置文件:/etc/sudoers
2.下放权力的步骤
*)超级用户执行visudo进入编辑/etc/sudoers模式
有些配置文件很重要,用visudo如果改错了,会提示错误信息
*)格式:100行
获得权限用户主机名称=(获得到的用户身份)命令
test www.localhost.com=(root) /usr/sbin/useradd
test用户能在desktop0.example.com以超级用户身份执行/usr/sbin/useradd
3.执行下放权限命令 sudo 命令 (一定不能忘记在命令前加sudo!!!)
如果第一次执行sudo需要输入当前用户密码
在/etc/sudoers中如果设置如下:
test www.localhost.com=(root) NOPASSWD: /usr/sbin/useradd
表示用户调用sudo命令的时候不需要自己密码
4.用户认证信息的控制
chage参数 用户
-d 用户密码组后一次修改的时间。
如果设定成0,用户登陆系统后必须修改自己的密码。
-m 最短有效期 min
-M 最长有效期 max
-W 警告期
-I 用户非活跃天数
-E 帐号到期日格式 expiredate到期日 -E "YYYY-MM-DD"
其他
用户的shell不可交互 ,就不能用su切换。
i18n(其来源是英文单词internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。
辨析
passwd –l与usermod –L区别
usermod 冻结用户,强度较弱(!),usermod –U一次即可解冻
用passwd锁定用户,强度较强(!!),需要usermod –U两次才能解锁,passwd –U一次即可。
su – 与su区别
$PATH
su -:切换用户+环境
su :仅仅切换用户
文件权限
1.文件属性的查看
ls -l filename
-rw-r--r-- . 1root root 0 Oct 9 00:06 filename
1 2 3 4
1.文件类型
-
d,l
c :字符设备,/dev/pts下有很多
s :套接字
p :管道,怎么创建??
b :块设备
2.
. ????
3.互为硬链接的文件个数,也就是文件内容被系统记录的次数。
4.文件最后一次被修改的时间
2.文件用户组的更改
chown 用户名称 文件 更改文件所有人
chgrp 组名称 文件 更改文件所有组
chown -R 用户 目录 更改目录本身以及目录中的子文件的所有人
chgrp -R 组名目录 更改目录本身以及目录中的子文件的所有组
监控命令
watch –n 1 ls –lR /mnt
3.权限的识别
权限种类
r
r权限针对文件,表示可以查看文件内容
r权限针对目录,表示可以ls 查看目录中存在的文件名称
w
w权限针对文件,表示可以更改文件的内容
w权限针对目录,表示是否可以删除目录中的子文件或者子目录
x
x权限对于文件,表示是否可以开启文件当中记录的程序
x权限对于目录,表示是否可以进入目录中
chmod: 改权限
r=4
w=2
x=1
7=rwx,6=rw-,5=r-x,4=r--,3=-wx,2=-w-,1=--x,0=---
4.文件的默认权限
umask 显示系统预留权限值
vim/etc/bashrc 修改shell的umask。
71行是普通用户的更改,73是超级用户的更改
vim/etc/profile 修改系统的umask。
60行是普通用户的更改,62是超级用户的更改
两个要一起改才能全部生效
source /etc/bashrc 刷新bash配置
source /etc/profile 刷新系统配置
6.特殊权限
1)sticky粘滞位(只针对目录)
o+t 当一个目录上有t权限时,这个目录中的文件只能被文件拥有者删除
t=1
chmod o+t directroy
chmod 1777 directory
2)sgid 强制位
对文件:只针对二进制可执行文件
任何人运行二进制文件。
程序产生的进程的所有组,都是文件的所有组。
g+s 针对目录,在目录中创建的文件都自动归属到目录所在组,与文件建立者所在组无关。
针对二进制文件,文件内记录的程序在执行时和执行者的组身份没有关系,而是以二进制文件的所有组的身份执行的
chmod g+s file|directory
chmod 2777 file|directory
3)suid 冒险位
u+s 执行文件内的程序产生的进程,进程的拥有者为文件拥有者,与进程发起人无关。
chmod u+s file
chmod 4777 fileg+s
进程
1.进程就是cpu未完成的工作
2.进程状态
运行
休眠
停止
继续
结束
僵尸进程
3.图形中如何查看进程
gnome-system-monitor
4.如何用命令查看进程
ps 进程查看工具
-a shell中运行的进程
-x 未在中运行的进程
-u 查看进程用户信息
-l 显示进程的详细信息
-f 完全信息full的缩写
-e 显示系统中的所有进程
ps aux |grep 进程关键字
ps ax –o %cpu,%mem,user,pid,comm##查看进程某项信息
%cpu 进程cpu负载
%mem 进程内存负载
user
group
pid
comm 进程名称
nice 优先级(-19~20)
ps aux --sort +|-%cpu|%mem... ##进程按指定方式排序
+ 正序
- 倒叙
2.优先级查看
ps ax –o pid,nice,comm
优先级为- ?????
3.指定某个优先级开启进程
nice –n 优先级数字 进程名称
nice –n -5 vim & 开启vim并定程序优先级为 -5
4.改变进程优先级
renice -n 优先级数字 进程pid
5.如何控制shell重进程的前后台调用
jobs 查看被打入后台的进程信息
comm & 进程在shell后台运行
ctrl +z 把占用shell的进程打入后台停止
fg 把指定进程调回前台
bg 把后台暂停的进程运行
(因为vim占用终端,所以即使用bg,也会暂停运行)
6.如何用命令控制进程
1)信号
信号 1 reload进程
信号 2 ctrl +c 删除进程在内存中的信息
信号 3 内存中的鼠标信息清除
信号 9 强行关闭进程(强度相当,不能被阻塞忽略!最厉害!)
信号 15 正常关闭进程(强度较弱)
信号 18 开启停止的进程
信号 19 停止正在运行的进程(强度相当,不能被阻塞忽略!最厉害!
信号 20 ctrl+z(强度较弱)
man7 signal 查看信号详细信息
2)信号发起
kill 信号 pid
killall 信号 进程名称
pkill -u username 结束某个用户的所有进程
7.用户登陆监控
w 查看当前使用系统的用户
w -f 查看当前使用系统的用户并显示使用地点
last 查看登陆过系统的用户
lastb 查看试图登陆但没有成功的用户
8.top命令
u username
k 信号
h
s
m
c
服务
1.systemd:系统开始的第一个进程,pid=1
pstree:
2.systemctl
systemctl list-units 列出当前系统服务状态
systemctl list-unit-files 列出服务的开机状态
systemctl list-dependencies sshd 查看指定服务的依赖关系
systemctl status sshd
systemctl stop sshd
systemctl start sshd
systemctl restart sshd
systemctl reload sshd 使指定服务重载
systemctl enable sshd 使指定服务开机自启
systemctl disable sshd 不开机自启
systemctl mask sshd 冻结指定服务
systemctl unmask sshd 解冻
systemctl set-default multi-user.target开机不启动图形
systemctl set-default graphical.target 开机启动图形
3.服务状态
loaded 服务已初始化完成,加载过配置
active(running) 服务已被系统利用
active(exited) 服务已加载配置,等待系统利用
active(waiting) 服务等待被系统处理
inactive 关闭
enable 开机自启
disable
static 服务开机启动项不可被管理
failed 系统配置错误
ssh
1.什么是openssh
让远程主机可以通过网络访问sshd服务,开启一个安全shell
2.如何实现远程访问
ssh 远程主机用户@远程主机ip地址
ssh root@172.25.254.1
The authenticity of host ‘172.25.254.1(172.25.254.1)‘ can‘t be established.
ECDSA key fingerprint is 55:dd:43:ce:bf:94:dd:91:49:e7:97:29:63:3d:02:02.
Are you sure you want to continueconnecting (yes/no)? yes ##建立安全传输key
root@172.25.254.1‘s password: ##密码输入没有回显
Last failed login: Sun Oct 11 16:56:29 CST2015 from 172.25.254.206 on ssh:notty
There was 1 failed login attempt since thelast successful login.
Last login: Sun Oct 11 16:55:46 2015 from172.25.254.206
[root@foundation1 ~]# ###登陆成功
ctrl +d |logout ###退出
[root@foundation1 ~]# logout
Connection to 172.25.254.1 closed.
[root@localhost ~]# vim /etc/motd ###设定登陆显示字符
3.hostnamectl
uname -r 查看内核信息
sshkey加密
1.生成key(rsa加密)买锁
ssh-keygen
ls /home/username/.shh 生成密钥存放位置
id_rsa 位私钥(钥匙) id_rsa.pub位公钥(锁)
2.添加key的认证方式 上锁
ssh-copy-id -i /root/.ssh/id_rsa.pubroot@localhost
ssh-copy-id 添加key认证的工具
-i 指定加密key文件
/root/.ssh/id_rsa.pub 加密key??
root加密用户为root,也可以为其他的吧?
localhost:被加密的主机ip(服务器ip)
3.分配钥匙给主机
scp /root/.ssh/id_rsaroot@clienthost:/root/xssh
4.ssh root@serverhost
提升openssh安全级别
1.openssh-server配置文件
/etc/ssh/sshd_config
配置文件中,被注释的参数,为默认配置,可以用man查阅
78 PasswordAuthentication yes|no 是否开启用户密码认证登陆
48 PermitRootLogin yes|no 是否允许超级用户远程登陆(通过sshd的认证)
49 AllowUsers student westos 用户白名单
50 Denyusers westos 用户黑名单
systemctl restart sshd 重新加载配置
不同文件之间的传输
1.文件归档(打包)
tar
f 指定生成包的名字
c 创建包
v 显示创建过程
t 查看包中内容
x 解包
r 添加文件到包中
-C 指定解档目录
--deletefilename 删除包中指定文件
--getfilename 取出包中指定文件
-z
-j
-J
2.压缩
gz
gzip xxxx.tar =====> xxxx.tar.gz 压缩
gunzip xxxx.tar.gz=====> xxxx.tar 解压
tar zcf xxxx.tar.gz 目标文件 打包压缩文件
tar zxf xxxx.tar.gz xxxx.tar.gz===>xxxx
bz2
bzip2 xxxx.tar =====> xxxx.tar.bz2 压缩
bunzip2 xxxx.tar.bz2 =====> xxxx.tar 解压
tar jcf xxxx.tar.bz2 目标文件 打包压缩文件
tar jxf xxxx.tar.bz2 xxxx.tar.bz2===>xxxx
xz
xz xxxx.tar =====> xxxx.tar.xz 压缩
unxz xxxx.tar.xz =====> xxxx.tar 解压
tar Jcf xxxx.tar.xz 目标文件 打包压缩文件
tar Jxf xxxx.tar.xz ###xxxx.tar.xz===>xxxx
zip
zip -r xxx.tar.zip xxx.tar 压缩
unzip xxx.tar.zip 解压
远程文件传输
scp 远程复制
scp file user@ip:/directory 上传文件
scp -r dir user@ip:/directory长传目录
scp user@ip:/filename /directory 下载文件
scp -r user@ip:/directory/directory 下载目录
rsync 远程同步
rsync file|direcotry user@ip:/directory
rsync user@ip:/directory /directory
-r 同步目录
-l 不忽略链接
-p 不忽略权限
-t 不忽略时间戳
-g 不忽略组信息
-o 不忽略用户信息
-D 不忽略设备文件
sftp
1.网络基础知识
一台主机如果可以连接公网,比如访问www.baidu.com
那么这台主机必然会有
ipaddress
GATEWAY
dns
############ipaddress##############
tcp/ip
ipv4
2进制32位
254.254.254.254/255.255.255.0
11111110.11111110.11111110.11111110/11111111.11111111.11111111.00000000
254.254.0.254/255.255.255.0
254.254.0.254/255.255.0.0
########ip设定###########
ifconfig 查看或者临时设定主机ip的工具
ifconfig 网络接口 查看这个接口上的 ip
ifconfig 网络接口 ip netmask 子网掩码 临时设定ip
ifconfig eth0 172.25.254.100 netmask255.255.255.0
systemctl restart network 重新启动网络基本服务
systemctl restart NetworkManager 网络智能管理服务
图形网络配置方式
nm-connection-editor 图形中的网络设定工具
nmtui 文本中的网络设定工具
命令设定ip的方式
临时设定:ifconfig 网卡 ip netmask
nmcli
nmcli connection delete 连接名称 删除此连接
nmcli connection add con-name westos ifnameeth0 type ethernet autoconnect yes
添加动态网络
nmcli connection add con-name westos ifnameeth0 type ethernet ip4 ip/24 gw4 ip
静态网络
nmcli connection delete westos
nmcli connection show
nmcli connection down westos
nmcli connection up westos
nmcli connection modify “westos”ipv4.adresses newip/24
nmcli connection modify “westos”ipv4.method<auto|manual>
nmcli connection connet eth0
nmcli connection disconnect eth0
nmcli connection status
网络配置文件
/etc/sysconfig/network-scripts/ 网络配置目录
###动态网络配置###
vim ifcfg-xxx 网络配置文件格式
DEVICE=eth0 指定文件管理的设备名称
BOOTPROTO=dhcp dhcp动态获取,none和static都表示静态网络
ONBOOT=yes 开机自动激活设备
NAME=eth0 指定网络链接的名字为eth0
###静态网络配置###
vim ifcfg-xxx 网络配置文件格式
DEVICE=eth0 指定文件管理的设备名称
BOOTPROTO=static|none dhcp动态获取,none和static都表示静态网络
ONBOOT=yes 开机自动激活设备
NAME=eth0 指定链接名字
IPADDR=172.25.254.100 设定ip为172.25.254.100
NETMASK=255.255.255.0 子网掩码为255.255.255.0
PREFIX=24 子网掩码为255.255.255.0
查看哪些用户使用bash
统计一般用户,/etc/passswd 正确错误输出有多少条
which 与type
hostnamectl?????
本文出自 “12049878” 博客,请务必保留此出处http://12059878.blog.51cto.com/12049878/1860376
LINUX 学习笔记2