好的那就开始学习Linux吧

用惯了Windows,刚开始学Linux真是一脸懵逼,然而我Windows也并没有很会用。j_0012.gif

wKiom1c1nRTgVdDVAADV9gq90PI858.png

先放张祖师爷照片,毕竟第一篇博客。

首先呢,Linux是个多用户的操作系统,那就意味着每个用户登录系统后,都有自己专用的运行环境。那到底每个用户的运行环境是什么样的呢?就需要由环境变量来界定啦。

用户可以对自己的环境变量进行修改以达到对环境的要求。

Linux环境变量查看及修改的命令

1.echo 显示某个环境变量值 echo $PATH

2.export 设置一个新的环境变量 export HELLO="hello" (可以无引号)

3.env 显示所有环境变量

4.set 显示本地定义的shell变量

5.unset 清除环境变量 unset HELLO

6.readonly 设置只读环境变量 readonly HELLO

环境变量和Shell紧密相关,它可以通过Shell命令来设置。 环境变量又可以被所有当前用户所运行的程序所使用。对于bash来说,可以通过变量名来访问相应的环境变量。

 Linux中常见的环境变量

1.PATH:指定命令的搜索路径

2.HOME:指定用户的主工作目录(即用户登陆到Linux系统中时, 默认的目录)

3.HISTSIZE:指保存历史命令记录的条数。

4.LOGNAME:指当前用户的登录名。

5.HOSTNAME:指主机的名称。

6.SHELL:指当前用户用的是哪种Shell。

7.LANG/LANGUGE:和语言相关的环境变量。

8.MAIL:指当前用户的邮件存放目录。

9.PS1:命令基本提示符,对于root用户是#,对于普通用户是$。

10.PS2:附属提示符,默认是“>”。

 

然后呢,在我的既定思维里,文件就是文件,设备就是设备,接口就是接口,该是什么就是什么,然而在Linux中,一切皆文件

这样的设计化繁为简 使用户可以使用一个统一通用的访问资源的方式,着实厉害。

既然一切皆文件,那文件也得分类呀。Windows中的文件有扩展名,Linux也有,然而只是方便用户区分文件类型,你可以把它当作文件名的一部分,并没什么用

所以Linux的文件到底是怎么分类的呢???

Linux文件类型

1.普通文件(regular file)第一个字符为[ - ] 包括:

①纯文本档(ASCII):这是Linux系统中最多的一种文件类 型,称为纯文本档。内容是用户可以直接读到的数据, 例如数字、字母等等。

②二进制文件(binary): 你的Linux中的 可执行文件(scripts, 文字型批处理文件不算)就是这种格式的。

③数据格式文件(data):有些程序在运作的过程当中会读取某些特定格式的档案,那些特定格式的档案可以被称为数据文件 (data file)。一般用cat看到的都是乱码。

2.目录(directory): 第一个字符为[ d ] 

3.连接文件(link:第一个字符为[ l ]

4.设备和设备文件

①块设备文件,即一些存储文件,如硬盘、软盘等,第一个字符为 [ b ]

②字符设备文件,即一些串行端口的接口文件,如键盘、鼠标等, 第一个字符为[ c ]

5.套接字(sockets)第一个字符为[ s ]  还被称为数据接口文件,这种类型的文件通常被用在网络上的数据连接。

6.管道(FIFO,pipe)第一个字符为[ p ]  FIFO也是一种特殊的文件类型,其主要目的是解决多个程序同时访问一个文件所造成的错误问题,first-in-first-out。

既然一切皆文件,那么理论上来说一切都可以被访问,那就会有访问者。

Linux中的文件访问者有三类:

1.文件和文件目录的所有者:u--User

2.文件和文件目录的所有者所在的组的用户:g--Group

3.其他用户:o--Others

通常,用户都组合成用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。

如果用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类。

有多种文件访问者,当然就会有不同的文件访问权限。

文件访问权限的种类

1.基本权限

①读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

②写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

③执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。

④" - "表示不具有该项权限

2.特殊权限

①suid (s/4)只能应用在可执行文件上,允许任意用户在执行文件时以文件拥有者的身份执行

②sgid(s/2)只能应用在可执行文件上,使任意用户在执行可执行文件时,将以拥有组成员的身份执行

③粘着位(t/1)只能应用在目录文件上,将使用户在目录中执行删除时,只能删除自己拥有的对象

使用 ll 命令可以查看到文件的类型和访问权限,像这样子啦

wKioL1c3La_yKet8AAACc5iEZDM301.png

最开始的-表示文件类型为普通文件,因为在Linux中有三种文件访问者和三种文件访问权限,所以在文件类型后面的九列分别对应user,group和others所具有的权限。

前三列代表user的权限,中间三列代表group的权限,最后三列代表others的权限。

每三列的第一列代表是否具有读权限(r),第二列代表是否具有写权限(w),最后一列代表是否具有执行权限(x)

图中的例子表示user对该文件有读写权限,没有执行权限,Group也一样,而others则只有读权限。

这些都是我自己的系统下创建一个新文件时的默认权限。那文件的权限能改不?咋改呢?

改了权限我还想改拥有者,改了拥有者我还想改所在组

Linux文件操作权限及相关的设置方法

1.chmod命令权限值的格式

格式: chmod [参数] 权限 文件名

参数:

R -> 递归修改目录文件的权限

V -> 显示指令执行过程、 

reference=<参考文件或目录>:把指定文件或目录的权限全部设成与参考文件或目录的权限相同

①用户表示符 +/-/= 权限字符

+ :向权限范围增加权限代号所表示的权限
-  :向权限范围取消权限代号所表示的权限
= :向权限范围赋予权限代号所表示的权限
用户符号: 
u:拥有者
g:拥有者同组用户

o:其它用户

a:所有用户

比如输入如下命令

wKioL1c3LcbBI-VNAAAFT_gynGo884.png

再查看第一个文件的信息就会变成

wKiom1c3LPXSm3mzAAAC8SGgHrY394.png这样啦

②三位八进制数表示

每一种访问者的每一种权限都可以用0或1表示,所以用三位八进制数也可表示要修改的信息。

wKiom1c3LQvAD5pwAACNdPODCXs977.png

 同样的操作,输入如下命令

wKiom1c3LR3TIQ4eAAAGQXEZXvE850.png

也可以达到同样效果。

2. chown 修改件的拥有者

格式: chown [参数] 户名 件名

3.chgrp 修改件或目录的所属组

格式: chgrp [参数] 户组名 件名 

参数:

-R 递归修改件或目录的所属组

4.umask 查看或修改件掩码(目前用户在建立档案戒目录时候的权限默认值)

新建文件夹默认权限=0666-权限掩码

新建目录默认权限=0777-权限掩码

如果要去掉的权限本来就没有,则忽视即可,并不是简单的减法。

超级用户默认掩码值为0022,普通用户默认为0002。

5.使 sudo分配权限

①修改/etc/sudoers 件分配件

 chmod 740 /etc/sudoers

 vi /etc/sudoer

格式:接受权限的用户登陆的主机 =(执行命令的用户)

②使 sudo 调授权的命令

 sudu –u 户名 命令

戛然而止哈哈哈哈哈哈哈哈哈哈哈就是这么傲娇!