Linux必备操作
# 1. Linux给用户添加sudo权限
linux给用户添加sudo权限:
有时候,linux下面运行sudo命令,会提示类似:
xxxis not in the sudoers file. This incident will be reported.
这里,xxx是用户名称,然后导致无法执行sudo命令,这时候,如下解决:
- 进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。(当然,你也可以直接用root用)
- 添加文件的写权限。也就是输入命令"chmod u+w /etc/sudoers"。
- 编辑/etc/sudoers文件。也就是输入命令"vim /etc/sudoers",进入编辑模式,找到这一 行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名),然后保存退出。
- 撤销文件的写权限。也就是输入命令"chmod u-w /etc/sudoers"。
然后就行了。
# 2. VIM基本操作
# 1.查找某个字符串
# 在命令模式下,输入/str
:/str
#输入n,查找下一个
#输入N,查找上一个
2
3
4
5
# 2.跳转到某行
# 第一种
# 在命令模式下,直接输数字即可
:$ # 最后一行
:n # 跳转到第n行
# 第二种
shift+g # 跳转到最后一行
gg # 跳转到第一行
command+上下箭头
2
3
4
5
6
7
8
9
# 3.显示行号
: set nu
# 4.复制部分
Vim 有以下几个模式:
- 正常(normal)模式,缺省的编辑模式;下面如果不加特殊说明,提到的命令都直接在正常模式下输入;任何其它模式中都可以通过键盘上的 Esc 键回到正常模式。
- 命令(command)模式,用于执行较长、较复杂的命令;在正常模式下输入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)即可进入该模式;命令模式下的命令要输入回车键(Enter)才算完成。
- 插入(insert)模式,输入文本时使用;在正常模式下键入“i”(insert)或“a”(append)即可进入插入模式(也有另外一些命令,如“c”,也可以进入插入模式,但这些命令有其它的作用)。
- 可视(visual)模式,用于选定文本块;可以在正常模式下输入“v”(小写)来按字符选定,输入“V”(大写)来按行选定,或输入“Ctrl-V”来按方块选定。
- 选择(select)模式,与普通的 Windows 编辑器较为接近的选择文本块的方式;在以可视模式和选择模式之一选定文本块之后,可以使用“Ctrl-G”切换到另一模式——该模式很少在 Linux 上使用
编辑-->输入:
i: 在当前光标所在字符的前面,转为输入模式;
a: 在当前光标所在字符的后面,转为输入模式;
o: 在当前光标所在行的下方,新建一行,并转为输入模式;
I:在当前光标所在行的行首,转换为输入模式
A:在当前光标所在行的行尾,转换为输入模式
O:在当前光标所在行的上方,新建一行,并转为输入模式;
2
3
4
5
6
输入-->编辑:
ESC
编辑-->末行:
:
末行-->编辑:
ESC, ESC
注:输入模式和末行模式之间不能直接切换,默认处于编辑模式
关闭文件
末行模式关闭文件
:q 退出
:wq 保存并退出
:q! 不保存并退出
:w 保存
:w! 强行保存
:wq --> :x
2
3
4
5
6
编辑模式下退出
ZZ: 保存并退出
使用vim编辑多个文件
2
vim FILE1 FILE2 FILE3
:next 切换至下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
:q退出当前文件
:qa 全部退出
2
3
4
5
6
7
yy|2yy 复制行
dd|2dd 删除、剪切行
p粘贴到下一行
P粘贴到上一行
^|$定位到行首,行尾
dG从当前行删到文档最后一行
2
3
4
5
6
w 下一個word
W 下一個word(跳過標點符號)
b 前一個word
e 跳到目前word的尾端
0 跳到目前行的開頭
^ 跳到目前行第一個非空白字元
$ 跳到行尾:
/xxxx 搜尋xxxx
# 往前搜尋目前游標所在的字(word)
* 往後搜尋目前游標所在的字(word)
fx 在目前行往後搜尋字元x
gd 跳到目前游標所在的字(word)的定義位置
:split 分割視窗(可加檔名順便開啟另一檔案)
:diffsplit xxx 以分割視窗和檔案xxx做比較(diff)
Ctrl-W p 跳到前一個分割視窗(在兩個分割窗來回切換)
Ctrl-W j 跳到下面的分割窗
Ctrl-W h 跳到左邊的分割窗
Ctrl-W k 跳到上面的分割窗
Ctrl-W l 跳到右邊的分割窗
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 3. nginx配置SSL
# 1 . 开启防火墙
查看已开启的端口 firewall-cmd --list-port
开启端口 firewall-cmd --zone=public --add-port=18083/tcp --permanent
重启防火墙 systemctl restart firewalld
netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)
你可以使用 lsof 命令来查看某一端口是否开放。查看端口可以这样来使用,我就以80端口为例:
lsof -i:80
如果有显示说明已经开放了,如果没有显示说明没有开放。
附:
TCP 21端口:FTP 文件传输服务
TCP 23端口:TELNET 终端仿真服务
TCP 25端口:SMTP 简单邮件传输服务
UDP 53端口:DNS 域名解析服务
TCP 80端口:HTTP 超文本传输服务
TCP 110端口:POP3 “邮局协议版本3”使用的端口
TCP 443端口:HTTPS 加密的超文本传输服务
6379端口: Redis
11211端口: Memcached
3306端口: MySql
# 2. 添加pem,key
pem,key是在SSL证书申请的地方下载的,阿里云在这里 (opens new window)
申请的时候注意,这三个参数是阿里云手动申请用到的。附:上面的图片是域名服务商里面DNS需要设置的。
在/etc/nginx/ 目录下创建文件夹cert,然后把pem和key文件放进去,然后在nginx.conf文件里面设置如下:
server {
listen 443;
server_name wangzhe.gq; #不用加www
ssl on;
index index.html index.htm;
ssl_certificate cert/3354559_www.wangzhe.gq.pem; #注意cert前不用加/
ssl_certificate_key cert/3354559_www.wangzhe.gq.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_prefer_server_ciphers on;
location / {
root /var/www/Embed; #设置根路径,需要提前放好,并且文件夹中有index.html文件
index index.html index.htm;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
疑问:不用配置80端口的什么事,直接输入http://www.wangzhe.gq就转到https了,应该来说应该配置如下呀
# 3. nginx 配置
配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。
$ nginx -t // 检查nginx配置文件
配置正确后,重新加载配置文件使配置生效:
$ nginx -s reload // 使配置生效
至此,nginx的https访问就完成了,并且通过rewrite方式把所有http请求也转成了https请求,更加安全。
如需重启nginx,用以下命令:
$ service nginx stop // 停止
$ service nginx start // 启动
$ service nginx restart // 重启
2
3
# 4. putty安装及使用
https://blog.csdn.net/Rafe_ma/article/details/77838613
# 5. 服务器搭建FTP服务
**环境:**CentOS 7
# 0.准备
使用root用户登录,
# 0.0:卸载命令
如果服务器上安装了vsftpd,配置出错需要卸载vsftpd
rpm -aq vsftpd
vsftpd-2.0.5-16.el5_5.1 #此处是查找vsftpd的返回结果
rpm -e vsftpd
用rpm -e 查找结果 进行删除就ok了。
# 0.1:连接方式:
①直接在浏览器输入ftp://ip
即可,
②或者下载FileZilla (opens new window)连接助手。
③或者文件夹里面输入ftp://ip
# 0.2.遇到的bug:
<1>如果用阿里云服务器一定要记住,要在安全组里把端口都开了,具体设置如下:
<2>. win10文件夹连接不成功,修改设置,并且重启电脑。
Windows设置 --> 网络和Internet --> 网络和共享中心(最下面) --> Internet选项(左下角) -->高级
取消掉“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”
2
3
修改如下:
# 0.3 为什么要创建用户
下载文件就要对本地文件操作,就要验证用户,所以要创建用户
# 1.执行yum命令安装:
yum -y install vsftpd
# 2.修改配置文件
按照下面修改配置文件
cd /etc/vsftpd && vim vsftpd.conf
#是否允许匿名,默认no
anonymous_enable=NO
#这个设定值必须要为YES 时,在/etc/passwd内的账号才能以实体用户的方式登入我们的vsftpd主机
local_enable=YES
#具有写权限
write_enable=YES
#本地用户创建文件或目录的掩码
local_umask=022
#当dirmessage_enable=YES时,可以设定这个项目来让vsftpd寻找该档案来显示讯息!您也可以设定其它档名!
dirmessage_enable=YES
#当设定为YES时,使用者上传与下载日志都会被纪录起来。记录日志与下一个xferlog_file设定选项有关:
xferlog_enable=YES
xferlog_std_format=YES
#上传与下载日志存放路径
xferlog_file=/var/log/xferlog
#开启20端口
connect_from_port_20=YES
#关于系统安全的设定值:
ascii_download_enable=YES(NO)
如果设定为YES ,那么 client 就可以使用 ASCII 格式下载档案。
一般来说,由于启动了这个设定项目可能会导致DoS 的攻击,因此预设是NO。
ascii_upload_enable=YES(NO)
与上一个设定类似的,只是这个设定针对上传而言!预设是NO。
ascii_upload_enable=NO
ascii_download_enable=NO
#通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,
在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO, chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO, chroot_local_user=NO时,所有的用户均可以切换到其他目录。
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#这个是pam模块的名称,我们放置在/etc/pam.d/vsftpd
pam_service_name=vsftpd
#当然我们都习惯支持TCP Wrappers的啦!
tcp_wrappers=YES
#不添加下面这个会报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
allow_writeable_chroot=YES
#下面的暂时没用到。
#启动被动式联机(passivemode)
pasv_enable=YES
#上面两个是与passive mode 使用的 port number 有关,如果您想要使用65400 到65410 这 11 个 port 来进行被动式资料的连接,可以这样设定
pasv_min_port=65400
pasv_max_port=65410
#FTP访问目录
local_root=/home/wangzhe/ftp
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 3.创建FTP用户
添加FTP用户命令:useradd XXX
设置FTP用户密码:passwd XXX
这里以用户名:wz,密码:wangzhe为例
useradd -d /home/wangzhe/ftp/ -s /sbin/nologin wz
passwd wz
2
设置用户访问权限:
chown -R wz /home/wangzhe/ftp/
# 4.设置vsftpd服务开机启动
systemctl enable vsftpd.service
# 5.启动暂停查看服务状态命令
systemctl start vsftpd.service
systemctl status vsftpd.service
2
# 6. PATH路径中配置
表现:
linux命令行下面执行某个命令的时候,首先保证该命令是否存在,若存在,但输入命令的时候若仍提示:command not found
# 当前命令是否存在于PATH环境变量中
echo $PATH
2
如果不在,参考下面的方法针对不同的用户和场景
# 方法一:
export PATH=/usr/local/bin:$PATH
#配置完后可以通过echo $PATH查看配置结果。
#生效方法:立即生效
#有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢#复原有的path配置
#用户局限:仅对当前用户
# 方法二:
#通过修改.bashrc文件:
vim ~/.bashrc
#在最后一行添上:
export PATH=/usr/local/bin:$PATH
#生效方法:(有以下两种)
#1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
#2、输入“source ~/.bashrc”命令,立即生效
#有效期限:永久有效
#用户局限:仅对当前用户
# 方法三:
#通过修改profile文件:
vim /etc/profile
export PATH=/usr/local/bin:$PATH
#生效方法:系统重启
#有效期限:永久有效
#用户局限:对所有用户
# 方法四:
#通过修改environment文件:
vim /etc/environment
在PATH="/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin"中加入
":/usr/local/bin"
#生效方法:系统重启
#有效期限:永久有效
#用户局限:对所有用户
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 7. 文件权限
1:想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。
例如:
[root@localhost ~]# chmod 777 /home/user 注:仅把/home/user目录的权限设置为rwxrwxrwx
[root@localhost ~]# chmod -R 777 /home/user 注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为 rwxrwxrwx
权限说明:
# 常用的linux文件权限如下:
444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx
2
3
4
5
6
7
8
从左至右,先是3个数字,代表文件的权限
然后是9个字母(或者连字符)
其中 1-3位数字代表文件所有者的权限
4-6位数字代表同组用户的权限
7-9数字代表其他用户的权限
而具体的权限是由数字来表示的
读取的权限等于4,用r表示
写入的权限等于2,用w表示
执行的权限等于1,用x表示
通过4、2、1的组合,得到以下几种权限:
0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)
# 8. 版本切换
# 1.python
场景一:Ubuntu14.04 自带python3.4 切换成 python3.6
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
2
3
4
5
6
7
# 9. KVM配置
虚拟机的话,首先在VMware里勾选相应的选项这里 Link to Anchor
(1)安装 Qemu-KVM 和 cpu-checker
sudo apt-get install qemu-kvm cpu-checker
(2)查看系统 KVM 是否可用
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
2
3
(3)创建 kvm 用户组并把当前登录用户(如 king )添加到 kvm 用户组
sudo addgroup kvm
sudo usermod -a -G kvm king
2
(4)改变 /dev/kvm 用户组为 kvm
sudo chgrp kvm /dev/kvm
(5)创建 udev rule,并写入 KERNEL=="kvm", GROUP="kvm", MODE="0660"
sudo gedit /etc/udev/rules.d/60-qemu-kvm.rules
KERNEL=="kvm", GROUP="kvm", MODE="0660"
2
(6)重启在运行 emulator
# 10. ssh互访
需求:解决两个用户之间ssh免密互访,当然可以是两台计算机。
假设A用户要访问B用户,只需要将A用户的公钥给B用户,反之亦然。
大致分为三个步骤。
- A用户生成公私钥
- 将A用户公钥放到B用户(B)目录下
/home/B/.ssh/authorized_keys
文件中,注意是authorized_keys
- 测试
# 1. A用户生成公私钥
ssh-keygen 或 ssh-keygen -t rsa 或 ssh-keygen -t dsa
# 2. A用户的公钥 TO B用户
可以选择直接在用户文件夹下新建,也可以直接使用1直接生成,新建authorized_keys
文件,直接copy进去即可。
# 3. 测试
ssh user@host # 使用对应的用户名和ip
# 11. Linux必备的包列表
sudo apt install net-tools curl git python
# 12.开机自启服务
# 13.常用的.bashrc
设定
科普下.bashrc
的作用,相当于shell的配置文件
不同目录下的 .bashrc
文件其作用不尽相同,比如:
/etc/skel/.bashrc
:文件将复制到系统上创建的任何新用户的主文件夹中/home/hj/.bashrc
:是bash
的配置文件,保存个人的一些个性化设置,如命令别名、路径等
# 常见的alias
alias ls='ls -F --color'
alias h='history 25'
alias vi='vim'
alias l="ls -F --color=auto"
alias ll="ls -alt --color=auto"
alias la="ls -alt --color=auto"
alias ..="cd ..; ls"
alias ...="cd ...; ls"
alias ....="cd ....; ls"
# 命令提示符修改为"[用户名: 当前目录]$ "
export PS1="[\u: \W]$ "
2
3
4
5
6
7
8
9
10
11
12
13
14