IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux常用命令汇总 -> 正文阅读

[系统运维]Linux常用命令汇总

Linux常用命令汇总

总结自东软睿道笔记

1. Linux入门

# ip addr  //查看ip地址信息
    
# ping www.baidu.com  //ping百度测试网络
    
# systemctl restart network.service //重启网络服务
    
# shutdown -h now  //立即关机

# shutdown -h 20:25  //系统会在20:25关机

# shutdown -h +10  //10分钟后关机

# shutdown -r now  //立即重启

# shutdown -r +10  //10分钟后重启

# reboot  //重启,等同于shutdown -r now

# halt  //关闭系统,等同于shutdown -h now和poweroff
    

※ ls命令

引自https://www.cnblogs.com/peida/archive/2012/10/23/2734829.html

(1) 命令格式:

ls [选项] [目录名]

(2) 命令功能:

列出目标目录中所有的子目录和文件。

(3) 常用参数:

-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never'、'always'或'auto'其中之一
-d, –directory 将目录像文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。  
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
      extension -X status -c
      none -U time -t
      size -S atime -u
      time -t access -u
      version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
   配合 -l:显示访问时间但根据名称排序
   否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
–help 显示此帮助信息并离开
–version 显示版本信息并离开

2. Linux文件和目录管理

2.1 与文件和目录相关的命令

# cd /home  //绝对路径:路径的写法一定是由根目录/写起的,例如 /usr/local/mysql。
# cd test  //相对路径:路径的写法不是由根目录/写起的。例如,首先用户进入到/home,然后再进入到test ,执行的命令为

2.1.1 cd命令

命令cd(change directory的简写)是用来变更用户所在目录的,如果后面什么都不跟,就会直接进入当前用户的根目录下。

# cd /tmp
# pwd
/tmp
# cd
# pwd
/root

2.1.2 mkdir命令

命令mkdir(make directory的简写)用于创建目录;
Linux设置了-p选项,这个选项可以帮我们创建一大串级联目录。

# mkdir /tmp/test/123
mkdir: 无法创建目录 '/tmp/test/123': 没有那个文件或目录
# mkdir -p /tmp/test/123
# ls /tmp/test
123

2.1.3 rmdir命令

命令rmdir(remove directory的简写)用于删除空目录,后面可以是一个目录,也可以是多个目录(用空格分隔);
不能删除文件,rmdir有和mkdir具有相同的选项-p,它同样可以级联删除一大串目录,但在级联的目录中,如果某一个目录里还有目录或者文件时,这个命令就不好用了。

# ls /tmp/test
123
# rmdir /tmp/test/
rmdir: 删除 '/tmp/test/' 失败: 目录非空
# rmdir /tmp/test/123
# ls /tmp/test

2.1.4 rm命令

命令rm是最常用的,它也有很多选项。你可以通过命令man rm来获得它的详细帮助信息。

  • -r:删除目录用的选项,类似于rmdir,但可以删除非空目录。下面先创建一连串的目录,然后尝试删除它们。
# mkdir -p /tmp/test/123
# rm -r /tmp/test/123
rm:是否删除目录 '/tmp/test/123'? y
  • -f:表示强制删除。它不再询问是否删除,而是直接删除。如果后面跟一个不存在的文件或者目录,则不会报错。
# rm /tmp/test/123/123
rm: 无法删除 '/tmp/test/123/123': 没有那个文件或目录
# rm -f /tmp/test/123/123

2.1.5 cd命令

cp是copy(即复制)的简写,该命令的格式为:cp [选项] [ 来源文件 ] [目的文件]。例如,我想把test1复制成test2,可以写为cp test1 test2

  • -r:如果要复制一个目录,必须加-r选项,否则不能复制,这类似于rm命令。
# mkdir 123
# cp 123 456
cp: 略过目录"123"
# cp -r 123 456
# ls –ld 123 456
drwxr-xr-x 2 root root 6 218 09:49 123
drwxr-xr-x 2 root root 6 218 09:51 456
  • -i:这是安全选项,如果遇到一个已存在的文件,会询问是否覆盖。

2.1.6 mv命令

mv是move的简写,该命令的格式为:mv [ 选项 ] [源文件或目录] [目标文件或目录]。该命令有如下2种情况。

  • 目标文件是目录
  • 目标文件是文件

(1)当目标文件是目录时,其存在与否,执行后的结果是不一样的。如果如果该目录不存在,则会把源目录重命名为给定的目标文件名。如果该目录存在,则会把源文件或目录移动到该目录中。

//目标文件是目录dirc,且dirc不存在,相当于把目录dira重命名为dirc。
# mkdir /tmp/test_mv
# cd /tmp/test_mv
# mkdir dira dirb
# ls
dira  dirb
# mv dira dirc
# ls
dirb  dirc
//目标文件是目录dirb,且dirb存在,则会把目录dirc移动到目录dirb里
# mv dirc dirb
# ls
dirb
# ls dirb
dirc

(2)当目标文件是文件时,其存在与否,执行后的结果也是不一样的。如果该文件不存在,则会把源文件重命名为给定的目标文件名。如果该文件存在,则会询问是否覆盖。

//mv filed filee的目标文件是文件filee且这个文件不存在,相当于把文件filed重命名为filee。
# touch filed
# ls
dirb  filed
# mv filed filee
# ls
dirb  filee
//mv filed filee的目标文件是文件field2且这个文件存在,相当于覆盖field2。
# touch filed1 field2
# ls
filed1  filed2
# mv filed1 filed2
# ls
filed2

2.1.7 alias命令

用于为命令起别名

alias rm='rm -i'  //详解见2.1.8

2.1.8 which命令

用于查找某个命令的绝对路径

//其中rm和ls是两个特殊的命令
# which rmdir
/usr/bin/rmdir
//使用alias命令做了别名。我们用的rm实际上是rm -i,加上-i选项后,删除文件或者命令时都会询问是否确定要删除,这样做比较安全。
# which rm
alias rm='rm -i'    
    /usr/bin/rm
# which ls
alias ls='ls --color=auto'
    /usr/bin/ls

2.1.9 echo查询环境变量

//这里的echo用来输出$PATH的值。PATH前面的$是变量的前缀符号
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.2 与文档相关的命令

2.2.1 echo写入与追加数据

# echo  '111111111' > dirb/filee  //向filee文件写入数据,会覆盖之前数据
# echo  '222222222' >> dirb/filee  向filee文件追加数据

2.2.2 cat命令

命令cat用于查看一个文件的内容并将其显示在屏幕上。

  • -n :查看文件时,把行号也显示到屏幕上。示例命令如下(当前目录依然在/tmp/test_mv):
# echo  '111111111' > dirb/filee
# echo  '222222222' >> dirb/filee
# cat dirb/filee
111111111
222222222
# cat -n dirb/filee
     1  111111111
     2  222222222

2.2.3 tac命令

和命令cat一样,命令 tac(正好是命令cat的反序写法 )也是把文件的内容显示在屏幕上,只不过是先显示最后一行,然后显示倒数第二行,最后才显示第一行。

# tac dirb/filee
222222222
111111111

2.2.4 more命令

命令more也用于查看一个文件的内容,后面直接跟文件名。当文件内容太多,一屏不能全部显示时,用命令cat肯定是看不了前面的内容,这时可以使用命令more。当看完一屏后,按空格键可以继续看下一屏,按回车可以看下一条,看完所有内容后就会退出,在centos7中,按B可以向上翻屏,但是不能看上一条。如果你想提前退出,按q键即可。

2.2.5 less命令

命令less的作用和命令more一样,后面直接跟文件名,但命令lessmore功能要多一些。按空格键可以向下翻页,按B可以向上翻页。使用上下箭头查看上一条和下一条。

在使用less查看某个文件时,可以很方便的搜索,使用/键向下搜索,使用?键向上搜索,如果是查找多个该字符串,可以按n键显示下一个。

2.2.6 head 命令

命令head用于显示文件的前10行,后面直接跟文件名。如果加-n选项,则显示文件的前几行。

# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

# head -n1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

# head -n2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

// -n后有无空格均可。另外,也可以省略字母n,-后面直接跟数字
# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

2.2.7 tail命令

和命令head类似,命令tail用于显示文件的最后10行,后面直接跟文件名。如果加-n选项,则显示文件的最后几行;

命令tail-f选项也常用,它可以动态显示文件的最后10行。如果文件内容在不断增加,使用-f选项非常方便和直观。比如tail -f /var/log/messages可以动态、实时地查看文件/var/log/messages中的内容。

# tail /etc/passwd
colord:x:991:986:User for colord:/var/lib/colord:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
sssd:x:990:985:User for sssd:/:/sbin/nologin
gnome-initial-setup:x:989:984::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
xiaoxiao:x:1000:1000:xiaoxiao:/home/xiaoxiao:/bin/bash

# tail -n2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
xiaoxiao:x:1000:1000:xiaoxiao:/home/xiaoxiao:/bin/bash

# tail -2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
xiaoxiao:x:1000:1000:xiaoxiao:/home/xiaoxiao:/bin/bash

2.3 Linux的链接文件

链接文件分为硬链接(hard link)和软链接(symbolic link)两种。两种链接的本质区别在inode。

2.3.1 硬链接

通过文件系统的inode链接来产生的新的文件名,而不是产生新的文件,称为硬链接。

一般情况下,每个inode号码对应一个文件名,但是Linux允许多个文件名指向同一个inode号码。意味着可以使用不同的文件名访问相同的内容。

//运行该命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中的链接数这时就会增加1。
当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。删除一个文件名,只会使得inode中的链接数减1。
需要注意的是不能对目录做硬链接。
ln 源文件 目标 

2.3.2 软链接

类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,称为软链接。

软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。例如,文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。这时,文件A就称为文件B的软链接soft link或者符号链接symbolic link。

这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode链接数不会因此发生变化。

ln -s 源文件或目录 目标文件或目录 

2.4 文件搜索

2.4.1 which命令

which只能用来查找PATH环境变量中出现的路径下的可执行文件。这个命令比较常用,有时我们不知道某个命令的绝对路径,用which查找就很容易知道了。

//查找vi和cat的绝对路径,示例
# which vi
/usr/bin/vi
# which cat
/usr/bin/cat

2.4.2 whereis命令

whereis 用来搜索二进制文件(参数-b)、man说明文件(参数-m) 和源代码文件(参数-s). 如果省略参数,则返回所有信息。

whereis 查找范围:标准Linux位置,以及$PATH, $MANPATH指定的位置。

  • -b:只查找二进制文件。

  • -m:只查找帮助文件(在man目录下的文件)。

  • -s:只查找源代码文件。

# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

2.4.3 locate命令

locate在mlocate包中,没有可以用yum install -y mlocate安装。locate后面直接跟文件名。

locate所搜索到的文件列表,不管是目录名还是文件名,只要包含我们要搜索的关键词,都会列出来,所以locate不适合精准搜索。

locate依靠生成的db数据库查找,每天自动更新一次数据库,也可手动更新updatedb。

2.4.4 find命令

find这个搜索工具是使用频率非常高的一个,请务必熟记,其格式为:find [路径] [参数] 。下面介绍其常用的几个参数。

  • **-name filename**:表示直接查找该文件名的文件,这个选项比较常用,示例命令如下:
# find . -name test2  //.表示当前目录,当前目录在/tmp/4_6下面
./dir2/test2
# find . -name "test*" //支持用*通配
./test1
./dir2/test2
./dir2/test5
./dir2/test6
./dir2/test7
./dir3/test3
./test4
./test5
  • **-type filetype**:表示通过文件类型查找文件。文件类型在前面已经简单介绍过,相信你已经基本了解了。filetype包含了fbcdls等类型,示例命令如下:
#  find . -type d
.
./dir2
./dir3
./dir4

四种查找命令的对比:

whichwhereislocatefind
文件支持可执行文件二进制,源文件,帮助文档所有文件类型所有文件类型
查找路径环境变量PATH标准Linux位置,以及$PATH, $MANPATH指定的位置。文件列表库可指定,默认遍历当前路径及其子路径
查找原理遍历环境变量PATH所指定的目录,寻找完全匹配filename的可执行文件。文件列表库,对去除.之后的所有字符后的filename进行完全匹配。文件列表库,部分匹配遍历磁盘
查找效率/速度
适用场合可执行文件的查找二进制文件,源文件,帮助文档的查找模糊查找(由于默认是部分匹配,会列出很多无关文件)which, whereis, locate都不适用的情况下,使用find

3. Linux系统用户与用户组管理

3.1 用户和用户组管理

3.1.1 groupadd命令

新增组的命令groupadd格式为 groupadd [-g GID] groupname

# groupadd grptest1
# tail -n1 /etc/group
grptest1:x:1003:

如果不加-g选项,则按照系统默认的gid创建组。跟uid一样,gid也是从1000开始的。我们也可以按如下操作自定义gid

# groupadd -g 1008 grptest2
# tail -n2 /etc/group
grptest1:x:1003:
grptest2:x:1008:

3.1.2 groupdel命令

删除组的命令groupdel

# groupdel grptest2
# tail –n2 /etc/group
user1:x:1002:
grptest1:x:1003:

命令groupdel没有特殊选项,但有一种情况不能删除组,如下所示:

//上例中,user1组中包含user1账户,只有删除user1账户后才可以删除该组。
# groupdel user1
groupdel:不能移除用户“user1”的主组

3.1.3 useradd命令

从字面意思上来看,useradd就是增加用户,该命令的格式为useradd,其中各个选项的具体含义如下。

  • -u:表示自定义UID。

  • -g:表示使新增用户属于已经存在的某个组,后面可以跟组id,也可以跟组名。

  • -d:表示自定义用户的家目录。

# useradd test10
# tail -n1 /etc/passwd
test10:x:1002:1004::/home/test10:/bin/bash
# tail -n1 /etc/group
test10:x:1004:

如果useradd不加任何选项,直接跟用户名,则会创建一个跟用户名同名的组。当然,很多时候需要我们自己去定义uidgid或者所属的组,示例命令如下:

# useradd -u1005 -g 1004  user11
# useradd -u1006 -g grptest1 user12

3.1.4 userdel命令

命令userdel的格式为userdel [-r] username,其中-r选项的作用是,当删除用户时,一并删除该用户的家目录。

# ls -ld /home/user12
drwx------ 3 user12 grptest1 4096 5月  11 07:12 /home/user12

如果不加-r选项,则会直接删除用户user12,但保留其家目录,如下所示:

# userdel user12
# ls -ld /home/user12
drwx------ 3 user12 grptest1 78 2月  18 18:46 /home/user12

此时user12的家目录还在,那么我们再加上-r选项删除user1用户,如下所示:

# ls -ld /home/user1
drwx------ 3 user1 user1 78 2月  18 11:31 /home/user1
# userdel  -r user1
# ls -ld /home/usre1
ls: 无法访问/home/user1: 没有那个文件或目录

3.2 用户密码管理

3.2.1 认识/etc/passwd和/etc/shadow

这两个文件可以说是Linux系统中最重要的文件之一。如果没有这两个文件或者这两个文件出了问题,则无法正常登录系统。下面咱们先来看看/etc/passwd文件,示例命令如下:

//head前面的符号|,我们称为管道符,它的作用是把前面的命令的输出再输入给后面的命令。cat /etc/passwd | head 代表显示文件的前10行。
# cat /etc/passwd | head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

3.2.2 /etc/passwd解说

/etc/passwd由:分割成7个字段,每个字段的具体含义如下所示。

  • 第1个字段为用户名(如第1行中的root就是用户名),它是代表用户账号的字符串。用户名中的字符可以是大小写字母、数字、减号(不能出现在首位)、点或下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位。另外,减号也不建议使用,容易造成混淆。

  • 第2个字段存放的是该账号的口令。这里为什么是x呢?早期的Unix系统口令确实存放在这里,但基于安全因素,后来就将其存放到/etc/shadow中了,这里只用一个x代替。

  • 第3个字段为一个数字,这个数字代表用户标识号,也称为uid。系统就是通过这个数字识别用户身份的。这里的0就是root,也就是说我们可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。uid的取值范围是0~65535,0是超级用户(root)的标识号,CentOS 7的普通用户标识号从1000开始。如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于1000的。

  • 第4个字段也是数字,表示组标识号,也称为gid。这个字段对应着/etc/group中的一条记录,其实/etc/group和/etc/passwd基本类似。

  • 第5个字段为注释说明,没有实际意义。通常记录该用户的一些属性,例如姓名、电话、地址等。

  • 第6个字段为用户的家目录,当用户登录时,就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,用户家目录是可以自定义的。

  • 最后一个字段为用户的shell。用户登录后,要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有sh、csh、ksh、tcsh、bash等多种,而Red Hat/CentOS的shell就是bash。查看/etc/passwd文件,该字段中除了/bin/bash,还有很多/sbin/nologin,它表示不允许该账号登录。如果想建立一个不允许登录的账号,可以把该字段改成/sbin/nologin,默认是/bin/bash。

5.2.3 chfn命令

chfn(change finger的简写)命令用于更改用户的finger,这里只简单介绍一下。finger其实就是在/etc/passwd文件第5个字段中显示的信息

//chfn命令可以修改用户的finger信息,比如name、office、office phone以及home phone。修改完后,就会在/etc/passwd文件user11的那一行的第5个字段中看到相关信息了。
# chfn user11
Changing finger information for user11.
名称 []: user11
办公 []: user11's office
办公电话 []: 12345678
住宅电话 []: 78654312
Finger information changed.

3.2.4 /etc/shadow解说

# cat /etc/shadow |head -n 3
root:$6$QjKfx0Vu$OAsBzIKnzEwsUMfsEvxEvHMqK4ZWJ6MzAG/eMDoArh8rqvqKtYkDcCghHmKb9B7m1COBn5GqKZPqSaoYCtKhY/:17212:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::

每个字段的含义如下所示。

  • 第1个字段为用户名,与/etc/passwd对应。

  • 第2个字段为用户密码,是该账号的真正密码。这个密码已经加密,但是有些黑客还是能够解密的。所以,将该文件属性设置为000,但root账户是可以访问或更改的。

  • 第3个字段为上次更改密码的日期,这个数字以1970年1月1日和上次更改密码的日期为基准计算而来。例如,上次更改密码的日期为2012年1月1日,则这个值就是365* (2012-1970)+(2012-1970)/4+1=15341。如果是闰年,则有366天。

  • 第4个字段为要过多少天才可以更改密码,默认是0,即不受限制。

  • 第5个字段为密码多少天后到期,即在多少天内必须更改密码。例如,这里设置成30,则30天内必须更改一次密码;否则,将不能登录系统。默认是99999,可以理解为永远不需要改。

  • 第6个字段为密码到期前的警告期限。若这个值设置成7,则表示当7天后密码过期时,系统就发出警告,提醒用户他的密码将在7天后到期。

  • 第7个字段为账号失效期限。如果这个值设置为3,则表示密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,这个账号便失效,即锁定。

  • 第8个字段为账号的生命周期。跟第3个字段一样,这个周期是按距离1970年1月1日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号将作废。

  • 最后一个字段作为保留用的,没有什么意义。

3.2.5 passwd命令

为用户设置密码时,可以使用命令passwd,其格式为passwd [username]。该命令后面若不加用户名字,则是为自己设定密码

# passwd
更改用户root的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

如果你登录的是root账户,后面可以跟普通账户的名字,意思是修改指定账户的密码

//需要注意的是,只有root才可以修改其他账户的密码,普通账户只能修改自己的密码。
# passwd user11
更改用户 user11 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

3.3 用户身份切换

3.3.1 用户登录

普通用户和root用户的shell提示符号有些区别,root账户是#,普通用户是$。

//然后用test账户登录Linux
login as: test
test@192.168.188.128's password:
//查看身份
$ who am i
test

3.3.2 su命令

命令su的格式为su [-] username,普通用户的su命令不加username时,就是切换到root用户。当然,root用户同样可以使用su命令切换到普通用户。

该命令后面可以跟-,也可以不跟。加上-后,会初始化当前用户的各种环境变量。

接下来做个简单的试验来说明加与不加-的区别,示例命令如下:

//如果不加-切换到root账户时,当前目录没有变化;而加上-切换到root账户时,当前目录为root账户的家目录。这跟直接登录root账户是一样的。当由root切换到普通用户时,是不需要输入密码的。
$ pwd
/home/test
$ su
密码:
# pwd
/home/test
# exit
登出
$ su -
密码:
# pwd
/root

3.3.3 sudo命令

su可以切换用户身份,而且每个普通用户都能切换到root身份。如果某个用户不小心泄漏了root的密码,那岂不是系统非常不安全?没错,为了改进这个问题,Linux系统工程师设计了sudo这个命令。使用sudo命令执行一个只有root才能执行的命令是可以办到的,但是需要输入密码。这个密码并不是root的密码,而是用户自己的密码。

默认情况下,只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。使用visudo命令编辑/etc/sudoers配置文件(必须要使用root用户,如果没有visudo这个命令,请使用命令yum install -y sudo安装。),在文档中加入一行(test ALL=(ALL) ALL)

3.3.4 不允许root远程登录Linux

/etc/ssh/sshd_config为sshd服务的配置文件,默认允许root账户通过ssh远程登录Linux。要想不允许root用户远程登录Linux,具体操作方法为:修改配置文件/etc/ssh/sshd_config,在文件中查找#PermitRootLogin yes并修改为 PermitRootLogin no。保存配置文件后,需要重启sshd服务,如下所示:

//需要注意的是,这个方法只适用于通过ssh远程登录Linux的情况
# systemctl restart sshd.service

3.4 更改文件权限

3.4.1 chmod命令

Linux的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

img

为了方便更改文件的权限,Linux使用数字代替rwx,具体规则为:r等于4,w等于2,x等于1,-等于0。

例如,rwxrwx---用数字表示就是770,其具体算法为:rwx=4+2+1=7rwx=4+2+1=7---=0+0+0=0

命令chmod(change mode的简写)用于改变用户对文件/目录的读写执行权限,其格式为:chmod [-R] xyz 文件名(这里的xyz表示数字)。

# ls -ld dir3
drwxr-xr-x 2 user1 testgroup 19 2月  18 11:31 dir3
# ls -l dir3
总用量 0
-rw-r--r-- 1 user1 testgroup 0 2月  18 11:31 test3
# chmod 750 dir3
# ls -ld dir3
drwxr-x--- 2 user1 testgroup 19 2月  18 11:31 dir3
# ls -l dir3/test3
-rw-r--r-- 1 user1 testgroup 0 2月  18 11:31 dir3/test3
# chmod 700 dir3/test3
# ls –l dir3/test3
-rwx------ 1 user1 testgroup 0 2月  18 11:31 dir3/test3
# chmod -R 700 dir3
# ls -ld dir3
drwx------ 2 user1 testgroup 19 2月  18 11:31 dir3
# ls -l dir3
总用量 0
-rwx------ 1 user1 testgroup 0 2月  18 11:31 test3

chmod还支持使用rwx的方式来设置权限。从之前的介绍中可以发现,基本上就9个属性。我们可以使用ugo来分别表示usergroupothers的属性,用a代表all(即全部)。示例命令如下:

# chmod u=rwx,og=rx dir3/test3
# ls -l dir3/test3
-rwxr-xr-x 1 user1 testgroup 0 2月  18 11:31 dir3/test3

这样可以把dir3/test3的文件权限修改为rwxr-xr-x。此外,我们还可以针对ugoa,增加或者减少它们的某个权限(读、写或执行),示例命令如下:

# chmod u-x dir3/test3
# ls -l dir3
总用量 0
-rw-r-xr-x 1 user1 testgroup 0 2月  18 11:31 test3
# chmod a-x dir3/test3
# ls -l dir3/test3
-rw-r--r-- 1 user1 testgroup 0 2月  18 11:31 dir3/test3
# chmod u+x dir3/test3
# ls -l dir3/test3
-rwxr--r-- 1 user1 testgroup 0 2月  18 11:31 dir3/test3

3.4.2 umask命令

默认情况下,目录的权限值为755,普通文件的权限值为644,那么这个值是由谁规定的呢?究其原因,便涉及umask了。

命令umask用于改变文件的默认权限,其格式为:umask xxx(这里的xxx代表3个数字)。如果要查看umask的值,只要在命令行输入umask,然后回车即可,如下所示:

# umask
0022

这里umask的预设值是0022,这表示什么含义呢?咱们先来看以下两条规则。

  • 若用户建立普通文件,则预设没有可执行权限,只有rw两个权限,最大值为666(-rw-rw-rw-)。
  • 若用户建立目录,则预设所有权限均开放,即777(drwxrwxrwx)。

umask数值代表的含义为以上两条规则中的默认值(文件为666,目录为777)需要减掉的权限,所以:

目录的权限为rwxrwxrwx – ----w--w- = rwxr-xr-x
普通文件的权限为rw-rw-rw- – ----w--w- = rw-r--r--

umask的值是可以自定义的,比如设定umask为002,你再创建目录或者文件时,默认权限分别为:

rwxrwxrwx – -------w- = rwxrwxr-x(目录的权限)
rw-rw-rw- – -------w- = rw-rw-r--(文件的权限)
# umask 002
# mkdir dir4
# ls -ld dir4
drwxrwxr-x 2 root root 6 2月  18 13:43 dir4
# touch test4
# ls -l test4
-rw-rw-r-- 1 root root 0 2月  18 13:45 test4

这里我们可以看到创建的目录的默认权限变为775,而文件的默认权限变为664。如果要把umask改回来,具体操作方法如下:

# umask 022
# touch test5
# ls -l test5
-rw-r--r-- 1 root root 0 2月  18 13:45 test5

umask可以在/etc/bashrc里面更改,默认情况下,root的umask为022,而一般使用者则为002。可写的权限非常重要,因此预设会去掉写权限。系统里面是4位,而我们讲的umask是3位,因为最前面还有一个0,这个0加与不加没有影响,它表示umask数值是八进制的。

3.4.3 chgrp

chgrp`(change group的简写)命令可以更改文件的所属组,其格式为:`chgrp [组名] [文件名]
# groupadd testgroup
# mkdir /tmp/4_6  //创建实验用的目录
# cd /tmp/4_6
# touch test1
# ls -l test1
-rw-r--r-- 1 root root 0 2月  18 11:16 test1
# chgrp testgroup test1
# ls -l test1
-rw-r--r-- 1 root testgroup 0 2月  18 11:16 test1

上例中用到了groupadd命令,其含义为增加一个用户组。

chgrp命令还可以更改目录的所属组

# mkdir dir2
# touch dir2/test2
# ls –ld dir2
drwxr-xr-x 2 root root 6 2月  18 11:19 dir2
# chgrp testgroup dir2
# ls -ld dir2
drwxr-xr-x 2 root testgroup 6 2月  18 11:19 dir2
# ls –l dir2
总用量 0
-rw-r--r-- 1 root root 0 2月  18 11:19 test2

上例中,chgrp命令只更改了目录本身,而目录下的文件并没有更改。如果要想级联更改子目录以及子文件,加-R选项可以实现,示例命令如下:

# chgrp -R testgroup dir2
# ls -l dir2
总用量 0
-rw-r--r-- 1 root testgroup 0 2月  18 11:25 test2

3.4.4 chown命令

chown(change owner的简写)命令可以更改文件的所有者,其格式为:chown [ -R ] 账户名 文件名或者chown [ -R ] 账户名:组名 文件名。这里的-R选项只适用于目录,作用是级联更改,即不仅更改当前目录,连目录里的目录或者文件也全部更改。示例命令如下:

//chown -R user1:testgroup会把test目录以及该目录下的文件都修改成所有者为user1,所属组为testgroup。
# mkdir dir3
# useradd user1    
# touch dir3/test3   // 在dir3目录下创建test3文件
# chown user1 dir3
# ls -ld dir3    // dir3目录所有者已经由root改为user1
drwxr-xr-x 2 user1 root 19 218 11:31 dir3
# ls -l dir3    // 但是dir3目录下的test3文件的所有者依旧是root
总用量 0
-rw-r--r-- 1 root root 0 218 11:31 test3
# chown -R user1:testgroup dir3
# ls -l dir3
总用量 0
-rw-r--r-- 1 user1 testgroup 0 218 11:31 test3

4. Linux磁盘管理

4.1 fdisk命令

fdisk -l查看所有磁盘信息(包括未挂载磁盘)

fdisk命令如果不加-l选项,则会进入另一个模式,在该模式下,可以对磁盘进行分区操作。
m:打印菜单
n:新建分区
p: 设置分区类型为主分区
? PartitionNumber(分区号), First Sector(分区起始位置), Last Sector(分区结束位置), 都直接回车采用默认,即只创建一个主分区,分区大小为2GB.
w: 保存分区设置

4.2 moun命令

把格式化的/dev/sdb1挂载到/home/feiyy上

# mount /dev/sdb1 /home/feiyy

4.3 df命令

命令df(disk filesystem的简写)用于查看已挂载磁盘的总容量、使用容量、剩余容量等。示例命令如下:

  • -h:表示使用合适的单位显示,例如GB。示例命令如下:
  • -T:表示显示文件系统类型

4.4 lsblk命令

lsblk命令可以列出所有可用块设备的信息

4.5 du命令

命令du(disk useage)用来查看某个目录或文件所占空间的大小,其格式为 du [-abckmsh] [文件或者目录名]。该命令常用的参数有如下几个。

  • -a:表示全部文件和目录的大小都列出来。如果后面不加任何选项和参数,则只会列出目录(包含子目录)的大小。如果du命令不指定单位的话,默认显示单位为“KB”。示例命令如下:

  • -b:表示列出的值以B为单位输出。

  • -k:表示以KB为单位输出,这和默认不加任何选项的输出值是一样的。

  • -m:表示以MB为单位输出。

  • -h:表示系统自动调节单位。例如,如果文件太小,可能就几千字节,就以KB为单位显示;如果文件大到千兆字节,就以GB为单位显示。

  • -s:表示只列出总和。这个选项小编用得最多

5. Linux文档的打包与压缩

5.1 tar打包工具

tar本身就是一个打包工具,可以把目录打包成一个文件,它把所有文件整合成一个大文件,方便复制或者移动。该命令的格式为tar [-zjxcvfpP] filename tar,它有多个选项。

  • -c:表示建立一个tar包或者压缩文件包。

  • -x:表示解包或者解压缩。

  • -v:表示可视化。

  • -f:后面跟文件名(即-f filename,表示压缩后的文件名为filename,或者解压文件filename。需要注意的是,如果是多个参数组合的情况下,请把-f参数写到最后面。

  • -z:表示同时用gzip压缩。

  • -j:表示同时用bzip2压缩。

  • -J:表示同时用xz压缩。

#  tar -cvf test111.tar test111
test111/
test111/2.txt
test111/1.txt
# ls
1.txt  test111  test111.tar

使用tar命令打包后,原文件不会消失。

tar命令不仅可以打包目录,也可以打包文件,打包时可不加-v选项,表示不可视化。示例命令如下:

# rm -f test111.tar
# tar -cf test.tar test111 1.txt
# ls
1.txt  test111  test.tar

5.2 打包的同时压缩

Linux下最常见的压缩文件通常都是.tar.gz格式的,下面介绍Linux下常见的后缀名所对应的压缩工具。

  • .tar.gz:可以理解为先由tar打包,然后再由gzip压缩。

  • .tar.bz2:可以理解为先由tar打包,然后再由bzip2压缩。

  • .tar.xz:可以理解成先由tar打包,然后再xz压缩。

5.2.1 打包的同时使用gzip压缩

tar命令非常好用的一个功能就是可以在打包时直接压缩,它支持gzip压缩、bzip2压缩和xz压缩。使用-z选项,可以压缩成gzip格式的文件,示例命令如下:

# tar -czvf  test111.tar.gz test111
test111/
test111/2.txt
test111/1.txt
# ls
1.txt  test111  test111.tar.gz  test.tar

使用-tf选项,可以查看包或者压缩包的文件列表,示例命令如下:

# tar -tf test111.tar.gz
test111/
test111/2.txt
test111/1.txt
# tar -tf test.tar
test111/
test111/2.txt
test111/1.txt
1.txt

使用-zxvf选项,可以解压.tar.gz格式的压缩包,示例命令如下:

# rm -rf test111
# ls
1.txt  test111.tar.gz  test.tar
# tar -zxvf test111.tar.gz
test111/
test111/2.txt
test111/1.txt
# ls
1.txt  test111  test111.tar.gz  test.tar

5.2.2 打包的同时使用bzip2压缩

和gzip压缩不同的是,这里使用-cjvf选项来压缩,压缩过程如下:

#  tar -cjvf test111.tar.bz2 test111
test111/
test111/2.txt
test111/1.txt
# ls
1.txt  test111  test111.tar.bz2  test111.tar.gz  test.tar

使用-tf选项来查看压缩包的文件列表,示例命令如下:

# tar -tf test111.tar.bz2
test111/
test111/2.txt
test111/1.txt

使用-jxvf选项来解压.tar.bz2格式的压缩包,示例命令如下:

# tar -jxvf test111.tar.bz2
test111/
test111/2.txt
test111/1.txt

6. Linux安装RPM包或源码包

6.1 RPM

RPM是Red Hat Package Manager的缩写,由Red Hat公司开发。它是以一种数据库记录的方式将我们所需要的套件安装到Linux主机的一套管理程序。也就是说,你的Linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间的依赖关系。RPM包是预先在Linux机器上编译并打包的文件,安装非常快捷。但它也有一些缺点,比如安装环境必须与编译时的环境一致或者相当,包与包之间存在着相互依赖的情况,卸载包时需要先把依赖的包卸载。如果依赖的包是系统所必需的,就不能卸载这个包,否则系统会崩溃。

6.1.1 安装PRM包

安装RPM包的命令如下:

# rpm -ivh jdk-8u301-linux-x64.rpm

其中各个选项的含义如下。

  • -i:表示安装。

  • -v:表示可视化。

  • -h:表示显示安装进度。

6.1.2 查询一个包是否已安装

我们可以使用命令rpm -qa查询当前系统所有已安装的RPM包,如下所示:

# rpm -qa | grep 'jdk'

//显示结果
jdk1.8-1.8.0_301-fcs.x86_64

6.1.3 卸载RPM包

卸载RPM包的命令为rpm -e filename, 这里的filename是通过rpm的查询功能所查询到的。

# rpm -e jdk1.8-1.8.0_301-fcs.x86_64

6.2 yum工具

如果你使用的Linux系统支持yum工具,那么使用该工具比使用RPM工具更加方便。yum工具最大的优势在于可以联网去下载所需要的RPM包,然后自动安装。如果要安装的RPM包有依赖关系,yum工具会帮我们依次安装所有相关的RPM包。下面我们学习一下常用的yum命令。

6.2.1 搜索RPM包

使用yum list查找要安装的PRM包,如下所示:

# yum list |grep 'httpd'

6.2.2 安装RPM包

安装RPM包的命令为yum install [-y] [RPM包名],如果不加-y选项,则会以与用户交互的方式安装。示例命令如下:

# yum install -y httpd

在这个过程中,它首先会把需要安装的RPM包列出来,如果有依赖关系,也会把所有依赖的包列出来。然后询问用户是否需要安装,输入y则安装,输入n则不安装。这里可以直接加上-y选项,这样就省略了询问用户是否安装的那一步。

6.2.3 升级RPM包

升级RPM包的命令为yum update [-y] [RPM包],示例命令如下:

# yum update httpd

6.2.4 卸载RPM包

卸载RPM包的命令为yum remove [-y] [RPM包名],示例命令如下:

# yum remove httpd

卸载和安装一样,也可以直接加上-y选项,从而省略与用户交互的那一步。这里需要注意,卸载某个RPM包时一定要看清楚,不要连其他重要的RPM包也一起卸载了,以免影响正常的业务,所以使用yum remove命令卸载包时,还是不要加-y选项了。
-i:表示安装。

  • -v:表示可视化。

  • -h:表示显示安装进度。

6.1.2 查询一个包是否已安装

我们可以使用命令rpm -qa查询当前系统所有已安装的RPM包,如下所示:

# rpm -qa | grep 'jdk'

//显示结果
jdk1.8-1.8.0_301-fcs.x86_64

6.1.3 卸载RPM包

卸载RPM包的命令为rpm -e filename, 这里的filename是通过rpm的查询功能所查询到的。

# rpm -e jdk1.8-1.8.0_301-fcs.x86_64

6.2 yum工具

如果你使用的Linux系统支持yum工具,那么使用该工具比使用RPM工具更加方便。yum工具最大的优势在于可以联网去下载所需要的RPM包,然后自动安装。如果要安装的RPM包有依赖关系,yum工具会帮我们依次安装所有相关的RPM包。下面我们学习一下常用的yum命令。

6.2.1 搜索RPM包

使用yum list查找要安装的PRM包,如下所示:

# yum list |grep 'httpd'

6.2.2 安装RPM包

安装RPM包的命令为yum install [-y] [RPM包名],如果不加-y选项,则会以与用户交互的方式安装。示例命令如下:

# yum install -y httpd

在这个过程中,它首先会把需要安装的RPM包列出来,如果有依赖关系,也会把所有依赖的包列出来。然后询问用户是否需要安装,输入y则安装,输入n则不安装。这里可以直接加上-y选项,这样就省略了询问用户是否安装的那一步。

6.2.3 升级RPM包

升级RPM包的命令为yum update [-y] [RPM包],示例命令如下:

# yum update httpd

6.2.4 卸载RPM包

卸载RPM包的命令为yum remove [-y] [RPM包名],示例命令如下:

# yum remove httpd

卸载和安装一样,也可以直接加上-y选项,从而省略与用户交互的那一步。这里需要注意,卸载某个RPM包时一定要看清楚,不要连其他重要的RPM包也一起卸载了,以免影响正常的业务,所以使用yum remove命令卸载包时,还是不要加-y选项了。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:29:39  更:2021-08-20 15:29:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:39:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计