Linux基础------看这篇就够了

1. 什么是Linux?

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。详情参见:https://baike.baidu.com/item/linux/27050?fr=aladdin

2. Linux 内核及发行版

2.1 Linux 内核版本

  • 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层(可以理解成媒介、接口)
  • Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环
    • 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序
    • 开发版:由于要试验各种解决方案,所以变化很快
  • 内核源码网址:http://www.kernel.org 所有来自全世界的对 Linux 源码的修改最终都会汇总到这个网站,由 Linus 领导的开源社区对其进行甄别和修改最终决定是否进入到 Linux 主线内核源码中

2.2 Linux 发行版本

  • Linux 发行版(也被叫做 GNU/Linux 发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件
  • 常见的发行版本如下:

    • Ubuntu
    • Redhat
    • Fedora
    • openSUSE
    • Linux Mint
    • Debian
    • Manjaro
    • Mageia
    • CentOS
    • Arch
  • 十大 Linux 服务器发行版排行榜:http://os.51cto.com/art/201612/526126.htm

3. Linux的应用领域

3.1 服务器领域

  • Linux在服务器领域的应用是其重要分支
  • Linux 免费、稳定、高效等特点在这里得到了很好的体现
    • Linux早期因为维护、运行等原因同样受到了很大的限制
    • 近些年来Linux服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛

3.2 嵌入式领域

  • 近些年来Linux在嵌入式领域的应用也得到了飞速的提高
  • Linux 运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点,使其近些年来在嵌入式领域的应用得到非常大的提高

主要应用:机顶盒数字电视网络电话程控交换机手机PDA、等都是其应用领域,得到了 Google、三星、摩托罗拉、NEC 等公司的大力推广

3.3 个人桌面领域

  • 此领域是传统 Linux 应用最薄弱的环节
  • 传统 Linux 由于界面简单、操作复杂、应用软件少的缺点,一直被Windows所压制
  • 近些年来随着UbuntuFedora等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,Linux 在个人桌面领域的占有率也在逐渐提高

4. 文件和目录

4.1 单用户操作系统和多用户操作系统(科普)

单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源,Windows XP之前的版本都是单用户操作系统
多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享用系统的全部硬件和软件资源
Unix 和 Linux 的设计初衷就是多用户操作系统

4.2 Windows 和 Linux 文件系统区别

4.2.1 Windows下的文件系统
在Windows下,打开“计算机”,我们看到的是一个个的驱动器盘符:

Linux基础------看这篇就够了_第1张图片

每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示:

Linux基础------看这篇就够了_第2张图片

4.2.2 Linux 下的文件系统
在Linux下,我们是看不到这些驱动器盘符,我们看到的只有文件夹(目录):

Linux基础------看这篇就够了_第3张图片

Ubuntu没有盘符这个概念,只有一个根目录 /,所有文件都在它下面

Linux基础------看这篇就够了_第4张图片

4.3 用户目录

位于 /home/user,称之为用户工作目录或家目录,表示方式: /home/user/ ,如下图所示:

4.4 Linux主要目录速查表(用于速查,不用死记)

/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录
/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
/boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
/etc/inittab
/etc/fstab
/etc/init.d
/etc/X11
/etc/sysconfig
/etc/xinetd.d
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
~ 表示当前用户的家目录
~edu 表示用户 edu 的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root:系统管理员root的家目录
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr:应用程序存放目录
/usr/bin:存放应用程序
/usr/share:存放共享数据
/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
/usr/local:存放软件升级包
/usr/share/doc:系统说明文件存放目录
/usr/share/man:程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
/var/log:随时更改的日志文件
/var/spool/mail:邮件存放的目录
/var/run:程序或服务启动后,其 PID 存放在该目录下

5. Linux 终端命令

5.1 学习Linux终端命令的原因

  • Linux刚面世时并没有图形界面,所有的操作全靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。在职场中,大量的服务器维护工作都是在远程通过SSH客户端来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成
  • 作为后端程序员,必须要或多或少的掌握一些Linux常用的终端命令
  • Linux发行版本的命令大概有 200 多个,但是常用的命令只有10左右而已

ps:不需要死记硬背,对于常用命令,用的多了,自然就记住了,切记不要尝试一次学会所有的命令,有些命令是非常不常用的,临时遇到,临时百度就可以。

5.2 终端命令格式 

command [-options] [parameter]
说明:
command:命令名,相应功能的英文单词或单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略
parameter:传给命令的参数,可以是零个、一个或者多个
[] 代表可选

5.3 查阅命令帮助信息

5.3.1 --help

command --help
说明:显示command命令的帮助信息

Linux基础------看这篇就够了_第5张图片

5.3.2 man

man command
说明:查阅command命令的使用手册
man是 manual的缩写,是Linux提供的一个手册,包含了绝大部分的命令、函数的详细使用说明。

使用man时的操作键
操作键 功能
Enter 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出手册
/keyword 搜索keyword字符串
空格 显示手册页的下一屏,与f键功能一样

 

 

 

 

 

 


 

5.4 常用 Linux 命令的基本使用

命令 对应英文 作用
ls list 查看当前文件夹下的内容
pwd print work directory 查看当前所在文件夹
cd 目录名 change directory 切换文件夹
touch 文件名 touch 如果文件不存在,新建文件
mkdir 目录名 make directory 创建目录
rm 文件名 remove 删除指定文件名的文件
clear clear 清屏

ps:
1.ctrl+shift+"+" 可以放到终端字体显示;ctrl+"-" 缩小终端字体显示
2.在敲出“文件”/“目录”/“命令”的前几个字母之后,按下“tab”键,如果输入的没有歧义,系统会自动补全;如果还存在其他“文件”/“目录”/“命令”,再按一下“tab”键,系统会提示可能存在的命令

Linux基础------看这篇就够了_第6张图片

3.按“上”/“下”光标键可以在曾经使用过的命令之间来回切换,如果想要退出选择,并且不想执行当前选中的命令,可以按“ctrl“ + ”c”

5.4.1 ls命令说明
ls是英文单词"list"的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于DOS下的 "dir"命令 

1)ls常用选项:                                                                                                                                                                                                  
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合“-l”以人性化的方式显示文件大小     

小插曲: 计算机中文件大小的表现方式(了解即可)

Linux基础------看这篇就够了_第7张图片     

ps:Linux文件或者目录名称最长可以有256个字符;以"."开头的文件为隐藏文件,需要用"-a"参数才能显示;("."代表当前目录;".."代表上一级目录)
在Linux终端中,命令的选项可以分开输入,也可以合在一起输入

Linux基础------看这篇就够了_第8张图片

2)ls与通配符的使用 

Linux基础------看这篇就够了_第9张图片

案例1:找到以"1"开头的文件

Linux基础------看这篇就够了_第10张图片

案例2:找到以“1”结尾的文件,可以看到,我开始输入“*1”点击回车是没有反应的,输入“*1.txt”才可以

   
其他通配符请各位老铁自行测试~ 

5.4.2 "cd"命令说明
cd是"change directory"的简写,其功能为更改当前的工作目录。
注意:Linux所有的目录和文件名都是大小写敏感的
Linux基础------看这篇就够了_第11张图片      
我们也要明白相对路径和绝对路径的概念:
相对路径:表示相对于当前目录所在的目录位置,在输入路径时,最前面不是"/"或者"~"。
绝对路径:表示从”根目录/家目录“开始的具体目录位置,在输入路径时,最前面是"/"或者"~"。
Linux基础------看这篇就够了_第12张图片 
5.4.3 创建和删除操作
1>touch 文件名:如果文件不存在,可以创建一个空白文件;如果文件已经存在,可以修改文件的末次修改日
2>mkdir -p 文件夹:可以递归创建目录

3>rm 文件名/文件夹:删除文件或目录
-f:强制删除,忽略不存在的文件,无需提示
-r:递归地删除目录下的内容,删除文件夹时必须加此参数
rm命令也可以与通配符结合使用:
Linux基础------看这篇就够了_第13张图片
使用"rm"命令一定要小心,因为文件删除后不能恢复

5.4.4 拷贝和移动文件
Linux基础------看这篇就够了_第14张图片
1>tree -d:只显示目录。
2>"cp"命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的"copy"命令。
Linux基础------看这篇就够了_第15张图片   
相关选项:
-i: 覆盖文件前提示
-r: 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
Linux基础------看这篇就够了_第16张图片 
如上图所示,复制目录必须加“-r”
3>"mv"命令可以用来移动文件或目录,也可以给文件或目录重命名
Linux基础------看这篇就够了_第17张图片 
相关选项:-i: 覆盖文件前提示 

5.4.5 查看文件内容
Linux基础------看这篇就够了_第18张图片
1>cat会一次显示所有的内容,适合查看内容较少的文本文件,相关选项:
-b: 对非空输出行编号
-n: 对输出的所有行编号
ps:Linux 中还有一个"nl"的命令和"cat -b"的效果等价
Linux基础------看这篇就够了_第19张图片
2>more命令可以用于分屏显示文件内容,每次只显示一页内容,适合于查看内容较多的文本文件,操作键与“man”命令一样,比如按enter键往下滚动一行
3>Linux系统中"grep"命令是一种强大的文本搜索工具,"grep"允许对文本文件进行模式查找,所谓模式查找,又被称为正则表达式查找
-n: 显示匹配及行号
-v: 显示不包含匹配文本的所有行(相当于求反)
-i: 忽略大小写
Linux基础------看这篇就够了_第20张图片
常用的两种模式查找:
^a: 行首,搜寻以"a"开头的行
key$: 行尾,搜寻以"key"结束的行
Linux基础------看这篇就够了_第21张图片
5.4.6 重定向">"和">>"
1>"echo"会在终端中显示参数指定的文字,通常会和重定向联合使用

2>Linux允许将命令执行结果重定向到一个文件
Linux基础------看这篇就够了_第22张图片
从如上示例可以看出,">" 表示输出,会覆盖文件原有的内容; ">>"表示追加,会将内容追加到已有文件的末尾
5.4.7 管道"|"
Linux允许将一个命令的输出可以通过管道做为另一个命令的输入,可以理解现实生活中的水管,水管一头进水,另一头出水,这里"|"分为左右两端,左端进水(写),右端出水(读)
常用的管道命令有:
more:分屏显示内容
grep:在命令执行结果的基础上查询指定的文本
Linux基础------看这篇就够了_第23张图片
5.4.8 关机/重启
shutdown:关机/重新启动
"shutdown"命令可以”安全关闭“或者”重新启动系统“
-r:重新启动
温馨提示:
不指定选项和参数,默认表示1分钟之后关闭电脑;
远程维护服务器时,最好不要关闭系统,而应该重新启动系统
常用命令:
1>重新启动操作系统,其中now表示现在,即重启动作会马上执行
shutdown -r now
2>立刻关机
shutdown now
3>系统在今天的20:25关机
shutdown 20:25
4>系统再过十分钟后自动关机
shutdown +10
5>取消之前指定的关机计划
shutdown -c
5.4.9 查看或配置网卡信息
网卡是一个专门负责网络通讯的硬件设备,IP地址是设置在网卡上的地址信息,我们可以把电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码。
IP地址:每台联网的电脑上都有IP地址,是保证电脑之间正常通讯的重要设置。
注意:每台电脑的IP地址不能相同,否则会出现IP地址冲突,并且没有办法正常通讯。
1>ifconfig: 对应英文configure a network interface,可以查看/配置计算机当前的网卡配置信息。
Linux基础------看这篇就够了_第24张图片
Linux基础------看这篇就够了_第25张图片
ps:一台计算机中有可能会有一个物理网卡多个虚拟网卡,在Linux中物理网卡的名字通常以"ensXX"表示;"127.0.0.1"被称为本地回环/环回地址,一般用来测试本机网卡是否正常
2>ping ip地址: ping检测到目标ip地址的连接是否正常
"ping"一般用于检测当前计算机到目标计算机之间的网络是否通畅,时间数值越大,速度越慢。
原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在和网络是否流畅。
Linux基础------看这篇就够了_第26张图片
Linux基础------看这篇就够了_第27张图片
ps: "ping"的工作原理与潜水艇的声纳相似,"ping"这个命令就是取自声纳的声音网络管理员之间也常将"ping"用作动词————ping一下计算机X,看他是否开着。

5.5 远程管理命令

在Linux中,SSH是非常常用的工具,通过SSH客户端我们可以连接到运行了SSH服务器的远程机器上。SSH 客户端是一种使用"Secure Shell(SSH)"协议连接到远程计算机的软件程序,它是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
Linux基础------看这篇就够了_第28张图片

优点:
1)利用SSH协议可以有效防止远程管理过程中的信息泄露;
2)通过SSH协议可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗;
3)SSH的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度。
1>域名和端口
域名由一串用点分隔的名字组成,是IP地址的别名,主要是为了方便用户记忆,例如:www.baidu.com。
端口包括物理端口和逻辑端口。物理端口是用于连接物理设备之间的接口,逻辑端口是逻辑上用于区分服务的端口。TCP/IP协议中的端口就是逻辑端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。
IP地址:通过IP地址找到网络上的计算机
端口号:通过端口号可以找到计算机上运行的应用程序
SSH服务器的默认端口号是22,如果是默认端口号,在连接的时候,可以省略。

常见服务端口号列表
序号 服务 端口号
01 SSH 服务器 22
02 Web 服务器 80
03 HTTPS 443
04 FTP 服务器 21

案例:我们先通过ping www.baidu.com可以看到百度的服务器IP是119.75.217.26,然后打开浏览器输入此IP,回车后便可以访问百度,web默认端口号是80,所以我们输入119.75.217.26:80也是可以访问到百度的。 

Linux基础------看这篇就够了_第29张图片

Linux基础------看这篇就够了_第30张图片
如果把端口号改成81就出问题了
Linux基础------看这篇就够了_第31张图片

2>SSH客户端的简单使用
ssh [-p port] user@remote 此命令用于访问远程SSH服务器
1)user是在远程机器上的用户名,如果不指定的话默认为当前用户
2)remote是远程机器的地址,可以是IP/域名,或者别名
3)port是SSH Server监听的端口,如果不指定,就为默认值22
温馨提示:使用exit退出当前用户的登录
注意:ssh这个终端命令只能在Linux或者UNIX系统下使用,如果在Windows系统中,可以安装PuTTY或者XShell客户端软件:
Putty http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html(需要科学上网)
XShell http://xshellcn.com
温馨提示:在工作中,SSH 服务器的端口号很有可能不是 22,如果遇到这种情况就需要使用 -p 选项,指定正确的端口号,否则无法正常连接到服务器
下面我来演示用XShell6连接Ubuntu
Linux基础------看这篇就够了_第32张图片

设置完之后点连接,我在连接的时候出问题了,如下图所示:
Linux基础------看这篇就够了_第33张图片
连接失败之后,我用ssh命令重新连接还是失败,这是怎么回事?难道SSH服务没开?

我在尝试用sudo service ssh start开启SSH时,提示没有找到SSH服务,这么说是我的Ubuntu上压根就没这玩意,我还以为SSH是Ubuntu自带的。那咱就sudo apt-get install ssh安装一下这玩意,安装完成之后重启服务。然后在XShell6中重新建立会话窗口连接Ubuntu,出现如下提示点击“授权并保存”即可,之后输入密码点确定就可以了。
Linux基础------看这篇就够了_第34张图片

Linux基础------看这篇就够了_第35张图片
当出现用户名@ubuntu即表示连接成功
Linux基础------看这篇就够了_第36张图片
终于可以快乐地玩耍了,我先试试远程重启:
Linux基础------看这篇就够了_第37张图片
愚人节可以恶搞同事,再胆子大点可以恶搞领导
Linux基础------看这篇就够了_第38张图片
3>SCP
scp就是secure copy,是一个在Linux下用来进行远程拷贝文件的命令,它的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写的-P而不是小写的。
注意:scp这个终端命令只能在Linux或者UNIX系统(mac os也可以,因为它是基于unix内核的图形化操作系统)下使用,如果在Windows系统中,可以安装PuTTY,使用pscp命令行工具或者安装FileZilla使用FTP进行文件传输。
Linux基础------看这篇就够了_第39张图片
"scp -P port helloworld.py user@remote:Desktop/helloworld.py"此命令可以实现把本地当前目录下的helloworld.py文件复制到远程家目录下的Desktop/helloworld.py
注意:后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
"scp -P port user@remote:Desktop/01.py 01.py"此命令可以实现把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py
加上 -r 选项可以传送文件夹,比如把当前目录下的demo文件夹复制到远程家目录下的Desktop,可以用如下命令实现:
scp -r demo user@remote:Desktop
Linux基础------看这篇就够了_第40张图片
相信大多数人用的都是Windows系统,那我们就用FileZilla来一顿操作,点击这里下载最新版本FileZilla,我用的是目前最新的3.41.2,下载完成后进行傻瓜式安装,打开软件后按照下图所示填写相关信息,点击快速连接。
Linux基础------看这篇就够了_第41张图片
不知道你们这样操作有问题没,我是出问题了,提示无法连接到服务器,可是我的信息填写完全正确,why?
Linux基础------看这篇就够了_第42张图片
我的解决方案是这样的:
1.把端口号改成22,FileZilla会自动把主机切成SFTP传输
Linux基础------看这篇就够了_第43张图片
2.在FileZilla客户端点击文件>>站点管理器中新建站点,然后选择SFTP协议即可
Linux基础------看这篇就够了_第44张图片
大家有其他解决方案可以在评论区留言与我交流~
下图是FileZilla实现拷贝文件及目录的方法,是不是so easy~
Linux基础------看这篇就够了_第45张图片
4>SSH高级使用(下面的内容知道就行,工作中很少用)
1)免密码登录

  • 第一步:配置公钥

    执行"ssh-keygen"即可生成SSH钥匙,一路回车即可

  • 第二步:上传公钥到服务器

    执行"ssh-copy-id -p port user@remote",可以让远程服务器记住我们的公钥
温馨提示:有关SSH的配置信息都保存在用户家目录下的".ssh"目录下
我用的是Windows系统(不是因为我穷,是我觉得苹果系统不好用,而且是美国货,我这么爱国,才不会用,你们应该会相信的吧),就用Ubuntu终端服务器登录终端服务器自己的方法来给大家演示吧~

首先我们查看家目录下的所有文件,没有发现.ssh文件夹。
Linux基础------看这篇就够了_第46张图片
这是因为.ssh文件夹需要在终端登录ssh后才会生成,我这里自己登录自己。
Linux基础------看这篇就够了_第47张图片
再次查看家目录下的所有文件,可以看到已经生成了.ssh文件夹,并且在.ssh中有一个叫known_hosts的文件,这个文件其实就是我们刚才输入yes时保存的授权信息,当我们下次再登录这个服务器的时候,就不会再提示授权了。
Linux基础------看这篇就够了_第48张图片
接下来我们执行"ssh-keygen"命令,一路回车即可。之后我们可以看到在.ssh下有多了两个文件,分别是id_rsa(私钥)、id_rsa.pub(公钥)。
Linux基础------看这篇就够了_第49张图片
我们再执行“ssh-copy-id -p port user@remote”把公钥上传到远程服务器。
Linux基础------看这篇就够了_第50张图片
我们再次查看.ssh文件,发现又多了个authorized_keys文件,而且内容跟id_rsa.pub一模一样,其实这个就是我们上传到服务器的公钥。
Linux基础------看这篇就够了_第51张图片
免密登录原理(非对称加密算法)图解
Linux基础------看这篇就够了_第52张图片
2)配置别名
我们在终端使用ssh的频率还是很高的,那么每次都输入ssh -p port user@remote,时间久了会觉得很麻烦,特别是当user,remote和port都得输入时就更头疼了,而且还不好记忆,而配置别名可以让我们偷懒,譬如用:ssh myserver来替代这么一长串,那么就在 ~/.ssh下创建config文件, 里面追加以下内容:
Host xxx
HostName ip地址
User xxx
Port 22
保存之后,即可用 ssh mac 实现远程登录了,scp 同样可以使用。
Linux基础------看这篇就够了_第53张图片
温馨提示:大家可能在终端使用“gedit filename”打开文件会报错,点击这里可能会帮到你哟~

5.6 用户权限相关命令

5.6.1 用户和权限的基本概念

  • 用户是Linux系统工作中重要的一环,用户管理包括用户与组管理
  • 在Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限
  • 在Linux中,可以指定每一个用户针对不同的文件或者目录的不同权限

对文件/目录 的权限包括:
Linux基础------看这篇就够了_第54张图片
1> 组
为了方便用户管理,提出了的概念,如下图所示:
Linux基础------看这篇就够了_第55张图片
在实际应用中,可以预先针对设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限。

2>ls -l 命令扩展

"ls -l"可以查看文件夹或文件的详细信息,从左到右依次是:

  • 权限:第1个字符如果是"d"表示目录,"-"则表示文件
  • 硬链接数:通俗地讲,就是有多少种方式,可以访问到当前目录或文件
  • 拥有者:家目录下文件或目录的拥有者通常都是当前用户
  • 组:在Linux中,很多时候,会出现组名和用户名相同的情况
  • 文件或文件夹的大小
  • 文件或文件夹创建时间
  • 文件名或文件夹名

Linux基础------看这篇就够了_第56张图片
3>chmod 简单使用
chmod可以修改用户和组对文件及目录的权限,命令格式为:chmod +/-rwx 文件名或目录名。
温馨提示:以上方式会一次性修改拥有者和组的权限。
Linux基础------看这篇就够了_第57张图片
4>超级用户
Linux系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限,在大多数版本的Linux中,都不推荐直接使用root账号登录系统(没有特殊需要,建议大家不要登录root账户)。在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”,比如我系统中的当前用户“zwx530940”。
那么怎么登录root用户呢?look!

su是"substitute user"的缩写,表示使用另一个用户的身份。sudo命令用来以其他身份来执行命令,预设的身份为root,用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码,若其未经授权的用户企图使用sudo,则会发出警告邮件给管理员。

5.6.2 组管理

组信息保存在"/etc/group"文件中,"etc"目录放的都是系统配置相关的信息,看不懂的信息不要乱删,以免系统崩溃或某些常用功能异常。对组的操作无非就是增删改查。
 

命令 功能
groupadd 组名 添加组
groupdel 组名 删除组
chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组
cat /etc/group 查看确认组信息

ps:创建组或删除组的终端命令都需要通过sudo执行。

第一次我没有加sudo,提示被拒绝,第二次通过sudo groupadd Android添加了Android组,通过cat /etc/group即可查看刚刚创建的组信息:
Linux基础------看这篇就够了_第58张图片

5.7 用户管理

5.7.1 创建用户---设置密码---删除用户
1>相关终端命令

命令 功能 说明
useradd -m -g 组 新建的用户名 添加新用户 -m 自动建立用户家目录
-g 指定用户所在的组,否则会建立一个与用户名同名的组
passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以修改自己的账户密码
userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在"/etc/passwd"文件中

下面我来演示添加新用户并设置密码:
Linux基础------看这篇就够了_第59张图片
新用户添加成功后,我们在Windows中用Xshell登录新用户。在之前创建的"新建会话"上点击鼠标右键,选择属性,在属性界面填写新用户的用户名和密码,最后点击连接就可以了。
Linux基础------看这篇就够了_第60张图片
Linux基础------看这篇就够了_第61张图片
创建用户时,如果忘记用"-m"选项指定新用户的家目录,该怎么办?最简单的方法就是删除用户,重新创建!
Linux基础------看这篇就够了_第62张图片
2> 查看用户信息
我们已经知道用户信息存放在/etc/passwd文件中,其实这个文件中的用户信息是以":"隔开分组显示的,由6个分号组成的7个信息,分别是:用户名、密码(x,表示密码是加密的)、UID(用户标识)、GID(组标识)、用户全名或本地帐号、家目录、登录使用的Shell(就是登录之后,使用的终端命令,ubuntu默认是dash)。

命令 功能
id [用户名] 查看用户UID和GID信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

Linux基础------看这篇就够了_第63张图片

Linux基础------看这篇就够了_第64张图片


3>修改用户信息usermod
usermod可以用来设置用户的主组、附加组和登录Shell,命令格式如下:
修改用户的主组(passwd中的GID):usermod -g 组 用户名
修改用户的附加组:usermod -G 组 用户名
修改用户登录Shell:usermod -s /bin/bash 用户名
相关概念:
主组:通常在新建用户时指定,如果不指定,系统会默认指定主组名和用户名相同,在etc/passwd的第4列GID对应的是主组。
附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限。
Shell:看这里,linux下的shell又是什么?看这里(度娘有时候也是满靠谱的~)
注意:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo附加组中
bash usermod -G sudo 用户名。设置了用户的附加组之后,需要重新登录才能生效!

Ubuntu默认的shell是dash,如果不改成bash,你或许会发疯~按上键输出"[[A^",按删除键输出"^H"!!!
Linux基础------看这篇就够了_第65张图片
4>which命令可以查看执行命令所在位置
Linux基础------看这篇就够了_第66张图片
我们从上图可以看到有些执行命令储存在bin中,有些储存在sbin中,那么他们区别在哪?
在Linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin中:

  • /bin(binary)是二进制执行文件目录,主要用于具体应用
  • /sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/bin(user commands for applications)系统安装好之后,用户后期安装的一些软件
  • /usr/sbin(super user commands for applications)超级用户的一些管理程序

ps:cd这个终端命令是内置在系统内核中的,没有独立的文件,因此用which无法找到cd命令的位置
5>切换用户
命令如下:
su - 用户名:切换用户,并且切换目录;"-"可以切换到用户家目录,否则保持位置不变 |
exit:退出当前登录账户
”su“不接用户名,可以切换到root用户,但是不推荐使用,使用root太不安全了
Linux基础------看这篇就够了_第67张图片
6>修改文件权限
命令如下:
chown 用户名 文件名或者目录名:修改文件或目录的拥有者
chgrp -R 组名 文件名或目录名:递归修改文件或目录的组
chmod -R 755 文件名或目录名:递归修改文件或目录的权限 
之前我们已经学过改变文件或目录权限可以用“chmod +/-rwx 文件名或目录名”这个命令,但这个命令会给所有用户添加或删除权限,不能精确到拥有者、组、其他用户。
Linux基础------看这篇就够了_第68张图片
其实chmod在设置权限时,可以简单地使用三个数字分别对应拥有者、组和其他用户的权限,如下表所示:
Linux基础------看这篇就够了_第69张图片
常见数字组合有(u表示用户/g表示组/o表示其他):
777 ===> u=rwx,g=rwx,o=rwx
755 ===> u=rwx,g=rx,o=rx
644 ===> u=rw,g=r,o=r

5.8 系统信息相关命令

5.8.1 时间和日期
date:查看系统时间
cal:"calendar"查看日历,"-y"选项可以查看一年的日历
5.8.2 磁盘信息
df -h:"disk free"显示磁盘剩余空间
du -h [目录名]:"disk usage"显示目录下的文件大小,不加目录名默认显示当前目录下子文件的大小
5.8.3 进程信息
ps aux:"process status"查看进程的详细状况
top:动态显示运行中的进程并且排序
kill [-9] 进程代号:终止指定代号的进程,"-9"表示强行终止
"ps"默认只会显示当前用户通过终端启动的应用程序
ps选项说明如下:

选项 含义
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 示没有控制终端的进程

提示:
1.使用"kill"命令时,最好只终止由当前用户开启的进程,而不要终止"root"身份开启的进程,否则可能导致系统崩溃。
2.要退出"top"可以直接输入"q" 

5.9 其他常用命令

5.9.1 查找文件命令
find 命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,命令格式是:
find [opthons] [查找起始路径] [查找条件] [处理动作]
Linux基础------看这篇就够了_第70张图片
如果省略路径,表示在当前文件夹下查找。之前学习的通配符,在使用find命令时可用,有关find的更多使用详见:https://blog.csdn.net/qq_35101450/article/details/90244986
5.9.2 软链接
软链接可以理解为类似于Windows下的快捷方式,创建软链接的命令格式是:8ln -s 被链接的源文件 链接文件
          


 

该睡觉了,大家晚安~未完待续。。。

你可能感兴趣的:(计算机基础)