Linux基础
概述
linux就是一个操作系统,与苹果系统,安卓系统,鸿蒙系统,windwos系统类似。
计算机有硬件和软件组成,操作系统就是硬件上面的第一层软件,它是硬件和其它软件沟通的桥梁。计算机技术在二战后快速发展,构成计算机的主要基本单元从电子管发展到分立晶体管,再到后来的大规模集成电路。随着计算机技术发展,计算机性能越来越强劲,硬件越来越复杂,人们发现很难去直接管理计算机了,于是人们开始设计软件用于管理越来越复杂的计算机系统,这些软件称作系统级软件。
Unix
1965 年,MIT(麻省理工)、Bell(贝尔实验室)和GE(美国通用电气公司)合作准备搞个超级操作系统,取了个霸气的名字:Multics (Multiplexed Information and Computing System),多路复用信息和计算机系统。能让多个人可以同时干很多事,也叫多用户多任务操作系统。
1969 年,Multics 项目进展缓慢,被迫停止,参与项目的两个人 Ken Thompson(肯·汤普森)和 Dennis Ritchie(丹尼斯·里奇) 也闲了下来。他们都是贝尔实验室的人。没活干了,就打游戏。他们俩找了一台破电脑(PDP-7)准备玩以前开发的一个游戏(travel space:遨游太空),为了能在PDP-7 计算机上运行他的游戏,于是在1969 年夏天Ken Thompson(肯·汤普森)趁他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了UNIX 操作系统的原型,UNIX于是就在1970年正式问世了,这就是Unix元年。自 1970 年后,UNIX 系统在贝尔实验室内部的程序员之间逐渐流行起来,当时使用的是BCPL 语言(基本组合编程语言),后经Dennis Ritchie 于1973 年用移植性很强的C语言进行了改写。
UNIX 的出现是由 Ken Thompson(肯·汤普森)和 Dennis Ritchie(丹尼斯·里奇)在贝尔实验室工作期间开发出来的,自然版权属于贝尔实验室所有。一开始贝尔实验室并没有重视这个系统,导致这个系统的源代码在程序员之间不断分发导致美国很多机构、组织和高校都有非常多的人在使用这个UNIX,这就为UNIX的发展带来的高速的发展,但是随着UNIX发展的越来越好,这时候贝尔实验室就开始了商业运作了,他们决定要收回版权。但是从原来的免费获取使用变成后面的高价版权费用,很多人甚至是公司是接受不了的,所以这个商业运作进展缓慢,后面不得已就变成了,贝尔实验室收回版权,但是针对一些有合作的高校和机构,收取廉价或者是几乎免费的版权费用。
于是在20世纪70年代后期,与教育机构和外部商业组织共享了Unix,从而导致了许多不同版本Unix的诞生。其中最突出的是由加州大学伯克利分校的计算机系统研究小组构建的教育版本(BSD)。当然BSD与比尔·乔伊([Bill Joy](https://baike.baidu.com/item/Bill Joy))又是另一段传奇故事了。
GUN
1983年9月,Richard Stallman(理查德·斯托曼)宣布引入GNU计划(GNU:Gnu Not Unix)。1985年,理查德(Richard)建立了自由软件基金会(FSF),这是一个非营利性组织,旨在促进软件开发的自由。GNU项目创建了许多重要的产品,如GNU Compiler Collection (gcc)、GNU Debugger、GNU Emacs text editor (Emacs)、GNU build automator (make)等,还有今天使用最广泛的: GNU通用公共许可证(GPL)。GNU项目取得了许多伟大的成就,创造了许多与Unix相似的工具。然而,GNU仍然缺少一个重要的组成部分:内核(用于处理与硬件设备(CPU、RAM、设备等)的控制和通信的部分)。
GNU项目的目标是创建一个自由的、类unix的操作系统,在这个系统中,人们人们可以自由地复制,开发,修改和分发软件,并且不受限制。
Minix
Minix诞生于1987年,由Andrew S. Tanenbaum(安德鲁·斯图尔特·塔能鲍姆,谭邦宁)教授编写,用作教学的微内核架构的类Unix系统。当时Unix系统由于AT&T的使用许可问题,Unix不能被大学使用,谭邦宁教授为了让学生能看到操作系统的运行机理,自己重新写了一个操作系统,就叫它Minix。
Linux
Linux内核最初只是由芬兰人Linus Torvalds(林纳斯·托瓦兹)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu(乌班图)、RedHat(红帽)、CentOS(森托斯)、Debain(德班)、Fedora(费多拉)、 Alpine(阿尔卑斯)、OpenSUSE(苏瑟)等。
系统镜像下载地址
所属大学/企业 | 站点地址 |
---|---|
网易 | http://mirrors.163.com/ |
搜狐 | http://mirrors.sohu.com/ |
阿里 | https://developer.aliyun.com/mirror/ |
华为 | https://mirrors.huaweicloud.com/ |
腾讯 | https://mirrors.cloud.tencent.com/ |
平安 | https://mirrors.pinganyun.com/ |
清华 | https://mirrors.tuna.tsinghua.edu.cn/ |
北大 | http://mirrors.pku.edu.cn/ |
科大 | http://mirrors.ustc.edu.cn |
北交 | https://mirror.bjtu.edu.cn/ |
南大 | https://mirrors.nju.edu.cn/ |
Linux特点
Linux里面一切皆是文件,目录是文件,网卡等设备都是文件。
Linux里面没有后缀名这一说,但是一般为了方便使用者甄别文件的类型,所以会存在文件添加后缀的情况。
Linux和Windows区别
目前国内Linux更多的是应用于服务器上,而桌面操作系统更多使用的是window。主要区别如下。
比较 | Window | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有Windows程序菜单几乎一致,快捷键也几乎相同 | 圆形界面风格依发布版本不同而不同,可能互不兼容。GNU/Linux的终端机是从UNIX传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时候很难支持。另外,有时硬件厂商未提供所需版本的Windows下的驱动,也会比较头痛。 | 由志愿者开发,由Linux核心开发小组发布,很多硬件厂商基于版本考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD等硬件厂商逐步不同程序支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。圆形化界面对没有计算机背景知识的用户使用十分有利。 | 圆形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁、且知识、技能淘汰快,深入学习困难 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
目录结构
windows下面的所有的文件都是保存在盘符下的,而且每一个盘符都有各自的根目录。
Linux下面没有盘符的概念,所有一切的文件都是保存在根目录下
盘符名称 C:
盘符的根目录 C:\ C:/
根目录 /
目录 | 描述 |
---|---|
/ | 第一层次结构的根(root)、整个文件系统层次结构的根目录。 |
/bin/ | 需要在单用户模式可用的必要命令(二进制可执行文件);面向所有用户,例如:cat、ls、cp,和/usr/bin类似。 |
/boot/ | 引导程序文件,例如:kernel、initrd;时常是一个单独的分区。 |
/dev/ | 必要设备, 例如:, /dev/null. |
/etc/ | 系统配置文件的存放目录。 |
/home/ | 普通用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。 |
/lib/ | /bin/ and /sbin/中二进制文件必要的库文件(一般是C语言的库文件)。 |
/media/ | 可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。 |
/lost+found | 在ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题。可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。 |
/mnt/ | 临时挂载的文件系统。比如cdrom,u盘,移动硬盘等,直接插入光驱无法使用,要先挂载后使用 |
/opt/ | 可选应用软件包的存放目录,用户安装第三方软件,二进制,一般可以选择安装到这里。 |
/proc/ | 虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root) |
/root/ | 超级用户root的家目录 |
/sbin/ | 必要的系统二进制文件,例如: init、 ip、 mount。sbin目录下的命令,普通用户都执行不了。 |
/tmp/ | 临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。 |
/usr/ | 默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的(多)用户工具和应用程序。源码程序 |
/var/ | 变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。如果不单独分区,有可能会把整个分区充满。如果单独分区,给大给小都不合适。 |
远程连接工具
界面远程连接工具
向日葵:https://sunlogin.oray.com/download
ToDesk:https://www.todesk.com/index.html
终端远程连接工具
通过SSH连接到远程主机有2种方式:
-
通过市面上常用的软件来进行连接。
远程ssh客户端软件:putty(开源免费的,超级轻量级的ssh连接工具),xshell(海螺,收费,但是可以试用)。
远程ftp客户端软件: xftp,filezilla, FlashFXP
远程ssh和ftp的客户端合成软件:FinalShell、Terminus、electerm
-
通过终端命令来进行ssh连接。首次远程连接会提示记录远程主机的指纹,同意即可。
基于ssh协议远程登录的命令:ssh、ssh-keygen(免密码登录)
ssh <用户名>@<ip地址>
例如:远程链接ubuntu
# ubuntu下查看IP,可以通过命令: ip a
# ubuntu下查看当前用户:moluo
ssh moluo@192.168.231.128
```
基于ssh协议进行文件传输的命令:scp
```bash
scp
```
SSH
ssh( Secure Shell,安全外壳协议),是一种可靠的,专为远程登录会话和其他网络服务提供安全性的协议。最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。简而言之,就是说白了,就是一种网络协议,用于计算机之间的加密登录。当然基于ssh协议实现的程序有商业收费的,也有社区免费的。我们可以在windows下安装putty、xshell来帮助我们远程登录,也可以ssh命令来操作。
SSH的默认端口是22。
# 语法:
ssh 用户名@主机地址 # 有时为安全考虑,运维人员会修改ssh端口,则客户端需要指定端口:ssh -p 端口 用户名@主机地址
# 退出ssh远程登录
exit
注意,首次使用ssh登录到远程主机,需要手动输入yes记录主机的指纹信息,如下图所示:
基于ssh实现免密登录
所谓的免密登录就是基于rsa加密算法生成一对成对的秘钥对。然后当前主机保管私钥,把公钥上传到远程主机,这样以后登陆时仅需要验证公私钥即可,不再需要密码登陆了。
# 第一步:生成秘钥对。私钥和公钥成对才能匹配成功,秘钥文件默认保存在~/.ssh/目录下。
# 私钥文件名:id_rsa
# 公钥文件名:id_rsa.pub
ssh-keygen # 连续三下回车
# 第二步: 将公钥文件信息上传到需要被管理的主机上,远程服务器中的公钥保存目录就在该服务器的家目录下~/.ssh/authorized_keys
ssh-copy-id root@47.98.130.212
基于ssh实现文件上传下载
scp(secure copy)是一个基于 SSH 协议在网络之间文件进行安全传输的命令。
# 语法:
# scp 【可选参数】 源目录/目标文件 新目录/目标文件
# 可选参数:
# -r:递归复制整个目录【强烈建议尽量是采用压缩包的上传】
# -v:详细方式输出
# -q:不显示传输进度条
# -C:允许压缩
# -6:使用 IPv6 协议
# 上传本地文件到远程地址
# scp 本地目录/本地文件 远程用户名@远程ip:远程目录/ # 不修改文件名,直接上传
# scp 本地目录/本地文件 远程用户名@远程ip:远程目录/远程文件名 # 修改文件名,再上传
# scp -r 本地目录 远程用户名@远程ip:远程目录
scp /e/python36/day81/fuguang.zip root@10.0.0.129:/home/
# 下载远程文件到本地
# scp 远程用户名@远程ip:远程目录/远程文件名 本地目录/ # 不修改文件名,直接下载
# scp 远程用户名@远程ip:远程目录/远程文件名 本地目录/本地文件 # 修改文件名,再下载
# scp -r 远程用户名@远程ip:远程目录 本地目录
scp -r root@10.0.0.129:/home/abc.html /d/python35/day94/
vi&vim编辑器
Gvim 是Windows系统下的版本。
Ubuntu默认就内置了vi和vim编辑器,而CentOS则需要单独安装vim:yum install -y vim
。
命令模式,也叫快捷键模式,在这种模式下,开发者可以通过键盘使用快捷键操作vi/vim编辑器。完成vi编辑器的配置(显示行号、完成一些基本宏操作、复制、粘贴等等操作)。
x # 删除光标所在的字符
nd # n代表数字,表示剪切光标所在位置的后面的n个字符,注意:以空格结束,不要按回车键
dd # 剪切光标所在行的内容,相当于1dd
ndd # n代表数字,表示剪切光标所在行的下面n行内容
yy # 复制光标所载行的内容
nyy # n代表数字,表示复制光标所在行的下面n行内容
p # 小写字母,粘贴[在光标下一行粘贴出来]
P # 大写字母,粘贴[在光标上一行粘贴出来]
u # 撤销上一步编辑操作
gg # 光标跳转到第一行
GG # 光标跳转到最后一行
输入模式,也叫编辑模式,在这种模式下,开发者可以通过键盘输入文本信息到编辑器中。
进入输入模式,可以在命令模式状态下,使用快捷键 i、I、A、a、O、o、S、s、C、c、R 进入。
退出输入模式,可以通过ESC键返回命令模式。
ESC 退出当前模式,进入命令模式
末行模式,也叫命令行模式/终端模式,在这种模式下,开发者可以通过在编辑器的最后一行输入vi/vim提供的指令完成一系列的编辑器的控制操作,或完成文本的搜索,替换和控制等操作,甚至可以在该模式下,使用Linux提供的shell命令完成来完成其他的命令调用。
进入末行模式,可以在命令模式状态下,使用快捷键:冒号进入。
退出末行模式,可以通过ESC键返回命令模式。
# 显示或隐藏文件行号
:set nu
:set nonu
# 跳转到指定行
:行号
# 查找内容
:/内容 # 此时,可以通过键盘中的n(往下)或N(往上)查找匹配项
:?内容
:q # 退出编辑器,如果没有办法退出,则强制退出
:q! # 强制退出
:w # 保存内容
:w 文件名 # 把当前内容 另存为 指定文件名
:wq # 先保存内容,接着退出vi编辑器
# 文本替换(支持正则)
:%s/原内容/新内容/ # 把原内容替换新内容【替换一次】
:%s/原内容/新内容/g # 把原内容全部替换新内容
:%s/原内容// # 把原内容删除
:%s/原内容//g # 把匹配到的原内容全部删除
公司里面常用的编辑器:
前端:sublimetext/webstorm/vscode/atom
后端:
php: sublimetext/phpstorm/vscode/vim
python: pycharm/vscode/vim
java: idea/ecplise/vscode/vim
go:goland/vscode/vim
总结:pycharm/vim/vscode
用户与权限管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。Linux默认都会存在着一个超级用户:root。
其中,Ubuntu是面向个人开发者的Linux,所以Ubuntu原则上不建议使用root权限。
所以在Ubuntu安装过程中,会出现让我们新建账号的情况,所以我们之前创建了一个单独的管理员账号实际上,我们也可以通过这个管理权账号,通过命令`su root` 切换到root账号下面的。
当然,如果首次切换root,会需要输入root的密码,但是一般没有root密码,所以往往需要我们在切换root用户之前,先通过当前管理员修改root的密码。`sudo passwd root`
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令(也就是登录密码)。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录(也就是家目录,其中root用户的家目录就是/root,而其他管理员的家目录则是/home/用户名)。
实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改。
- 用户口令的管理。
- 用户组的管理。
用户管理
linux下的用户,不一定是提供给人使用,还可能提供给软件/程序使用。软件/程序需要操作文件,也是需要用户身份的。
要管理用户,必须使用管理员身份的账号!Ubuntu下需要切换到root用户下。
查询系统所有的用户,可以通过cat /etc/passwd
来查看,里面显示用户的用户名:x:群组ID:用户ID:家目录:权限
useradd
添加用户usermod
修改用户userdel
删除用户
# Ubuntu在创建用户以后,新用户是没有家目录的,所以默认的时候,进入了系统根目录!
# 而CentOS则会自动分配权限,新用户拥有自己的家目录。
useradd xiaohong # CentOS系统下
useradd -m xiaohong # Ubuntu系统下,-m 表示生成家目录
# 新用户都需要设置初始密码,否则无法登录
passwd xiaohong # 接着输入两次密码
# 创建组[创建新用户账户时,如果没分配用户组,则系统会同时创建一个同名的用户组,当前组下只有新账户一个成员]
groupadd fuguang
# 删除组
groupdel fuguang
# 查询系统所有的用户组,可以通过`cat /etc/group`来查看,里面显示用户组的`组名:x:群组ID`
cat /etc/group
# 修改用户信息,让用户加入用户组
# usermod -G 用户组 用户名
usermod -G fuguang xiaoming
# 一个用户可以被添加到多个组中,可以通过`cat /etc/group`来查看
组管理
可以通过cat /etc/group
查看当前系统创建了哪些群组
groupadd
groupmod
groupdel
groupadd 组名
# 查看用户属于哪一个群组下的,有3种方式:
# 查看家目录的文件列表
cd /home
ll
# drwxr-xr-x 3 fuguang fuguang 4096 Aug 30 02:29 fuguang/
# 查看/etc/passwd文件里面的群组ID
cat /etc/group
api:x:1002:fuguang
# 查看用户加入了哪些群组? groups 用户名
groups xiaoming
# xiaoming : xiaoming fuguang
# 列出一个群组下所有的成员
grep 'fuguang' /etc/group | awk -F":" '{print $1,$4}' # 结果:fuguang xiaoming,xiaohong
批量管理用户:
- 成批添加/更新一组账户:
newusers
- 成批更新用户的口令:
chpasswd
组成员管理:
- 向组中添加用户
gpasswd -a <用户账号名> <组账号名>
usermod -G <组账号名> <用户账号名>
- 从组中删除用户
gpasswd -d <用户账号名> <组账号名>
密码管理(禁用、恢复和删除用户密码):
- 设置用户密码:
passwd [<用户账号名>]
- 禁用用户账户密码
passwd -l <用户账号名>
- 查看用户账户密码状态
passwd -S <用户账号名>
- 恢复用户账户密码,与上面的禁用相对应
passwd -u <用户账号名>
- 清除用户账户密码
passwd -d <用户账号名>
用户切换命令:
su
- 直接切换为超级用户
sudo
- 直接使用 sudo 命令前缀执行系统管理命令。执行系统管理命令时无需知道超级用户的口令,使用普通用户自己的口令即可,相当于windows下的“以管理员身份运行”。
关于文件,Linux下一般针对每个用户和用户不同的身份,有以下3种不同的操作权限:
权限 | 二进制 | 十进制 | 对文件的影响 | 对目录的影响 |
---|---|---|---|---|
r(Read, 读取) | 100 | 4 | 可读取文件内容 | 可列出目录下的所有文件/子目录 |
w(Write,写入) | 010 | 2 | 可修改文件内容 | 可在目录中创建删除文件/子目录 |
x(eXecute,执行) | 001 | 1 | 可作为命令执行 | 可访问目录下的所有文件的内容 |
注意:目录必须拥有 x 权限,否则无法查看其内部的文件内容。
Linux下文件的权限记录,针对rwx,采用的是二进制表示法。
# Linux下的权限在底层是基于二进制实现的,但是对于外层用户操作时,是可以使用十进制或者字符表示的。
r w x 字符
4 2 1 十进制
1 1 1 二进制
# 关于某一个用户对于单个文件的权限,常见有以下几种权限设置:
111 --> 7 表示当前用户对文件拥有可读可写可执行的所有权限
110 --> 6 表示当前用户对文件拥有可读可写的权限
101 --> 5 表示当前用户对文件只拥有可读可执行的权限
100 --> 4 表示当前用户对文件只拥有可读的权限
011 --> 3 表示当前用户对文件只拥有可写可执行的权限
010 --> 2 表示当前用户对文件只拥有可写的权限
001 --> 1 表示当前用户对文件只拥有可执行的权限
000 --> 0 表示当前用户对文件没有任何操作权限
# Linux下一个文件往往不会仅针对一个用户设置权限,而是针对整个系统下所有用户分配权限,
# 所以一个文件往往会针对当前文件的拥有者、组成员以及其他人同一分配权限的。
# 777 ---> 分别指代3个数字,代表了文件拥有者、文件组成员、其他人的三种身份对于当前文件的操作权限
# rwxrwxrwx 三段rwx,代表了文件拥有者、文件组成员、其他人的三种身份对于当前文件的操作权限,-表示没有对应权限
# 举例:
700 => rwx --- --- => 文件拥有者具有一切(可读可写可执行)权限,组成员和其他人没有任何操作权限【常见于文件】
644 => rw- r-- r-- => 文件拥有者可读可写,组成员和其他人可读【常见于目录】
755 => rwx r-x r-x => 文件拥有者具有一切权限,组成员和其他人可读可执行【常见于目录】
777 => rwx rwx rwx => 任何人都能对当前文件进行任意操作【这种少见,建议慎用!!!】
对于ll命令的结果说明
lrwxrwxrwx 1 root root 9 Feb 1 2021 lib32 -> usr/lib32/
lrwxrwxrwx 1 root root 9 Feb 1 2021 lib64 -> usr/lib64/
lrwxrwxrwx 1 root root 10 Feb 1 2021 libx32 -> usr/libx32/
drwx------ 2 root root 16384 Aug 26 04:38 lost+found/
drwxr-xr-x 2 root root 4096 Feb 1 2021 media/
drwxr-xr-x 2 root root 4096 Feb 1 2021 mnt/
drwxr-xr-x 2 root root 4096 Feb 1 2021 opt/
dr-xr-xr-x 279 root root 0 Aug 30 00:23 proc/
drwx------ 4 root root 4096 Aug 27 04:41 root/
drwxr-xr-x 27 root root 860 Aug 30 02:29 run/
lrwxrwxrwx 1 root root 8 Feb 1 2021 sbin -> usr/sbin/
drwxr-xr-x 6 root root 4096 Feb 1 2021 snap/
drwxr-xr-x 2 root root 4096 Feb 1 2021 srv/
-rw------- 1 root root 2147483648 Aug 26 05:49 swap.img
dr-xr-xr-x 13 root root 0 Aug 30 00:23 sys/
drwxrwxrwt 12 root root 4096 Aug 30 01:22 tmp/
drwxr-xr-x 14 root root 4096 Feb 1 2021 usr/
drwxr-xr-x 13 root root 4096 Feb 1 2021 var/
# 左边第1个字母,表示文件类型,常见文件类型:目录(d)、文件(-)、链接(l)
# 左边第2~10个字母,表示当前文件拥有者(2~4)、文件组成员(5~7)以及其他人(8~10)对于当前文件的操作权限。
# 命令别名,可以把一些相对比较长,或者参数较多的命令,起一个简单的别名进行调用。
# ll实际上就是ls -l的简写
alias ll='ls -l'
# 通过 alias 可以查看当前系统下所有的别名命令。
alias
# 一般工作中,我们为了保证系统安全,往往会设置rm成其他的操作,避免出现误删的情况。
alias rm='echo "rm命令已经被禁用,请改用替换操作:mv"'
# 删除别名
unalias 别名
# 文件权限操作
# chown # 分配文件给指定用户作为拥有者
# chown 用户名 文件名
chown xiaohong demo.txt # 把指定文件demo.txt的拥有者分配给xiaohong
chown xiaohong:xiaohong demo.txt # 把指定文件demo.txt的拥有者分配给xiaohong,并分配组给xiaohong用户组
# chgrp 分配文件给指定的群组
# chgrp 组名 文件名
# chmod 分配文件权限给指定用户
# 参数选项:
# -c : 若该文件权限确实已经更改,才显示其更改动作
# -f : 若该文件权限无法被更改也不要显示错误讯息
# -v : 显示权限变更的详细资料
# -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
# 基于chmod分配权限一般2种写法:
# 字母表示权限
# a 表示all,同时给拥有者,组员和其他人分配权限
# u 表示user,表示给拥有者分配权限
# g 表示group,表示给组员分配权限
# o 表示other,表示给其他人分配权限
# 单独给拥有者设置文件的权限为可读可写可执行,组员和其他人的权限没有任何改变
chmod u+rwx demo.txt
# 设置文件权限,拥有者(u)拥有可读可写可执行,组员(g)拥有可读可写,其他人(o)可执行的权限
chmod u+rwx,g+rw,o+r demo.txt # rwxrw-r--
# 设置文件权限,拥有者(u)移除可执行,组员(g)移除可写,其他人(o)移除可读的权限
chmod u-x,g-w,o-r demo.txt
# 给所有人同时增加或减少权限
chmod a+r demo.txt
chmod a-wrx demo.txt
# 数字表示权限
chmod 777 demo.txt
chmod 755 demo.txt
chmod 644 demo.txt
chmod 700 demo.txt
# 注意:对于系统中的一切权限来说,root都是至高无上的。