好的那就开始学习Linux吧
用惯了Windows,刚开始学Linux真是一脸懵逼,然而我Windows也并没有很会用。
先放张祖师爷照片,毕竟第一篇博客。
首先呢,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 命令可以查看到文件的类型和访问权限,像这样子啦
最开始的-表示文件类型为普通文件,因为在Linux中有三种文件访问者和三种文件访问权限,所以在文件类型后面的九列分别对应user,group和others所具有的权限。
前三列代表user的权限,中间三列代表group的权限,最后三列代表others的权限。
每三列的第一列代表是否具有读权限(r),第二列代表是否具有写权限(w),最后一列代表是否具有执行权限(x)。
图中的例子表示user对该文件有读写权限,没有执行权限,Group也一样,而others则只有读权限。
这些都是我自己的系统下创建一个新文件时的默认权限。那文件的权限能改不?咋改呢?
改了权限我还想改拥有者,改了拥有者我还想改所在组
Linux文件操作权限及相关的设置方法
1.chmod命令权限值的格式
格式: chmod [参数] 权限 文件名
参数:
R -> 递归修改目录文件的权限
V -> 显示指令执行过程、
reference=<参考文件或目录>:把指定文件或目录的权限全部设成与参考文件或目录的权限相同
①用户表示符 +/-/= 权限字符
+ :向权限范围增加权限代号所表示的权限- :向权限范围取消权限代号所表示的权限= :向权限范围赋予权限代号所表示的权限用户符号: u:拥有者g:拥有者同组用户
o:其它用户
a:所有用户
比如输入如下命令
再查看第一个文件的信息就会变成
这样啦
②三位八进制数表示
每一种访问者的每一种权限都可以用0或1表示,所以用三位八进制数也可表示要修改的信息。
同样的操作,输入如下命令
也可以达到同样效果。
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 户名 命令
戛然而止哈哈哈哈哈哈哈哈哈哈哈就是这么傲娇!