这几天看了《鸟哥Linux的私房菜》这本书,不得不说写的真的很好,很适合我这个新手(

下面是一些学习总结(怕之后忘了)

Linux文件权限与目录配置

用户与用户组

用户:即为私人(个人)

用户组:将多个用户组合在一起,形成一个拥有共享空间的部分(集体)

linux用户身份和用户组记录的文件

默认的情况下所有的系统上的账号和一般身份用户以及root相关信息,都记录在了/etc/password这个文件内

个人密码记录在/etc/password中,linux所有的组名都记录在/etc/group当中

linux的文件系统

使用ls -al命令来查看文件属性

image.png

分为7列,第一列代表这个文件的类型和权限

第一列中,第一个字符代表这个文件是“目录、文件或链接文件等”

[d]代表了目录[-]代表了文件[l]代表了连接文件(快捷方式)[b]表示了设备文件里面的可供存储的接口设备[c]则表示了设备文件里面的串行端口设备,例如键盘和鼠标等等

接下来的9个字符中,以3个为一组,表示权限,其中[r]代表可读(read)[w]代表可写(write)[x]代表可执行(execute)。第一组为“文件所有者的权限”,第二组为“同用户组的权限”,第三组为“其他非本用户组的权限”(同用户组的权限即为“这个用户组中所有成员拥有的权限”)

注意:针对目录,若权限为r--,虽然有r权限,但是由于没有x的权限,因此不能进入此目录,只能查询此目录下的文件名列表

重点说一下这个第三列第四列、以及第七列

第三列:这个文件(或目录)的“所有者账号”

第四列:这个文件的所属用户组

第七列:文件名,带有“.”前缀的即为“隐藏文件”好康的

改变文件属性与权限

使用chgrp改变文件所属用户组

1
2
3
chgrp [-R] new_groupname filename

[-R]表示递归修改,依次修改目录下的子目录或文件

注意:新的用户组的名字应该存在于/etc/group当中,否则会报错

改变文件的所有者:chown

1
2
3
chown [-R] new_username filename

同时修改所有者与用户组:chown [-R] new_username::new_groupname filename

改变权限:chmod

第一种:数字类型改变文件权限

各权限的分数对照表:

r:4 w:2 x:1

语法如下

1
chmod [-R] xyz filename

其中x代表了owner的权限分数总和,y代表了group的权限分数总和,z代表了others的权限分数总和

第二种:符号类型改变文件权限

语法如下

1
2
3
4
chmod [-R] (u/g/o/a)(+/-/=)(r/w/x) filename

例如:chmod u=rwx,go=rx .bashrc
(要一起修改的话,g和o之间是没有空格的)

u(user)/g(group)/o(others)/a(all)

+(加入)/-(除去)/=(设置)

目标和文件的权限意义

文件上:

w:可以编辑新增或者是修改该文件的内容(不含删除该文件)

r读取

x:该文件具有可以被系统执行的权限

目录上:

r查询数据,即为可以使用ls命令将该目录的内容列表显示出来

w:代表可写入,包括了新建/删除/重命名/转移目录内的文件、目录位置

x:代表用户能否进入该目录,即为cd命令

注:要开放目录给任何人浏览时,应该至少也要给予rx的权限,但w权限不可随便给予

有的时候,目录的某些权限会大于文件的某些权限

假如一个文件a属于b目录a文件对于user来说没有权限,但是b目录对于user来说拥有rwx的完整权限,因此user可以删除编辑查看文件a

补充一下常用的命令

1
2
3
mkdir 目录名 (创建一个新的目录)
touch 文件名 (创建一个新的文件)
su - 用户名 (切换一个新的身份)

linux的文件种类有很多,我大概看了一下,终于明白之前见过的.sh后缀的文件是什么东西了(.sh即为脚本或批处理文件,因为批处理文件为使用shell写成的,所以扩展名就编成.sh

linux的文件目录

这里只列举了一小部分

1
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
/ :根目录(某种意义上也是root)

注意:/etc,/bin,/lib,/dev,/sbin不可与根目录放在不同的分区

/bin :系统有很多放置执行文件的目录(这些可执行文件即为Linux的命令),/bin就是其中之一,主要有cat,chmod,cp,mkdir,bash等常用的命令(/bin放置的是在单用户维护模式下还能够被操作的命令)

//单用户模式,也被称为维护模式,超级用户可以在此模式下恢复/修复系统问题,大概是类似于windows的安全模式。通常情况下,这类问题在多用户环境中修复不了,系统可以启动但功能不能正常运行或者你登录不了系统。

/dev :存放设备与接口

/etc :系统主要的配置文件,例如账号密码等

/lib :系统的函数库

/mnt :与某些额外的设备的挂载有关

/opt :放置第三方软件

/root :系统管理员的主文件夹

/proc :虚拟文件系统,可以理解为任务管理器(本身不占用任何的磁盘空间)

/sys :也是一种虚拟文件系统,与/proc相似

/sbin :重要的系统执行文件

/tmp :一般用户或者是正在执行的程序暂时放置文件的地方

/usr/bin/ :也与可使用的命令相关(和/bin的区别为是否和开机过程相关)
(/usr是"UNIX Software Resource"的缩写,即为"Unix操作系统软件资源"所放置的目录,并不是"user",用户的数据)

大概就列举一下这些了,有很多其他的可以去网上或者是鸟哥的linux了解一下

绝对路径和相对路径

绝对路径:由根目录(/)开始写起的文件名或目录名称

相对路径:相对于目前路径的文件名写法,不是以/开头的就属于相对路径的写法。./代表当前的目录../代表上一层的目录-代表前一个工作目录~代表“目前用户身份”所在的主文件夹

Linux文件与目录管理

目录的相关操作

  • cd:切换目录
  • pwd:显示当前目录
  • mkdir:新建一个新的目录
  • rmdir:删除一个空的目录(这个目录当中不能有东西)

linux的默认命令行模式(bash shell)具有文件补齐的功能,可以利用[Tab]按键快速完整地输入目录

pwd中可以使用pwd [-P] 显示出当前的路径,而非连接路径

mkdir当中

1
2
3
4
mkdir [-mp] 目录名称

-m:配置文件的权限
-p:直接将需要的目录递归创建起来

rmdir当中

1
2
rmdir [-p] 目录名称
-p同上

关于执行文件路径的环境变量:$PATH

PATH这个变量的内容是有一堆目录构成的,每个目录中间用冒号(:)表示,可以使用echo $PATH来查看这些目录的具体内容,以ls命令为例子,ls命令文件的/bin/ls文件路径被添加在了$PATH的环境变量当中,因此用户可以在任何一个路径当中执行ls命令

在$PATH当中添加路径的方法

1
PATH="$PATH":路径名字

为了安全起见,不建议将”.“加入PATH的目录当中(”.”会经常变换,而且每个”.”目录下面的可执行文件都不相同)

文件与目录管理

  • ls:展示目录下的文件,最常用的是ls -al,可以展示一个目录下的所有文件(包括隐藏文件)以及文件的具体信息,另外,ll相当于ls -a
  • 复制:cp
1
2
3
4
5
6
7
8
9
cp dir1 dir2
将dir1复制到dir2下面(可以复制文件或者是目录、文件夹)
可以在cp后面加上-a,连同特性也一起复制过去(包括权限)

cp filename1 filename2
复制filename1,并将新文件的名字改为filename2

可以同时复制多个文件到一个目录中
cp filename1 filename2 dir
  • 删除:rm
1
2
3
rm file/dir (删除文件或是目录)

可以配合-r实现递归删除
  • 移动文件与目录、或更名(rm
1
2
3
4
5
6
7
8
mv filename dir
将文件移动到一个目录

mv filename1 filename2
重命名一个文件

mv filename1 filename2 dir
一次性移动多个文件

文件内容查阅

一般的cattac就不多说明了,这次补充一下其他的方法

  • nl:按一行一行的数据输出文件的内容

  • more:一页一页的显示内容,你需要翻动去看下一行的数据,enter代表向下滚动一行,空格(space)代表向下翻一页

  • less:与more相似,比起more更方便操作,[pageup]表示向上翻动一页,[pagedown]表示向下翻动一页

  • head:显示前n行的数据

1
head -n 数字 文件名
  • tail:显示后n行的数据
1
tail -n 数字 文件名

可以使用od命令输出非纯文本文件

1
2
od -t c 文件名
用ASCII方式输出文件的内容
  • touch:创建文件
1
touch 新文件的名字
  • file:查看文件类型
1
file 文件名

命令与文件的查询

  • which
1
2
which 命令名/文件名
(会根据环境变量PATH中的路径进行查找)
  • whereis(与which类似,但是不只是在PATH中寻找)
1
whereis 命令名/文件名
  • locate(与前两者相似)
1
2
locate 文件名/命令名
(会找出所有带有这个名字的文件名/路径名)

locatewhereis会根据linux的数据库寻找文件