Linux1.1

一、Linux历史概述

Linux的起源从UNIX,UNIX是Linux的父类,UNIX由贝尔实验室的工程师肯汤姆森开发。而Linux大致可以分为Debian下的Ubuntun、RedHat下的Centos

二、磁盘分区和Linux磁盘分区

为什么要分区:磁盘存放大量数据的地方,分区是为了将数据有序和小块化管理,提高磁盘的读写效率。而由于磁盘结构,对于一块磁盘最多只能分四主分区,其中可以用一个主分区来做扩展分区使用,但主分区和扩展分区一共只能是四个。同时扩展分区不是用于存储数据的分区,而是为了进一步在扩展分区的基础上划分逻辑分区而用的,一个扩展分区可以划分多个逻辑分区。
怎么分区:在Linux中对于磁盘的分区也是如此,但磁盘分区完成后还不能使用,必须格式化,即将磁盘各分区的磁盘空间划分为等大小的数据块(block),同时载入文件系统。最后不同于Window系统而言,Linux系统在格式化后,还要对各个分区有个分区设备名:
对于不同的磁盘,有不同的硬件设备名,在不同的磁盘下不同的分区也有不同的分区设备名。比如:
IDE磁盘:/dev/hd[a-b],a到b的标识用于区分不同的磁盘
SATA/SCIC磁盘:/dev/sd[a-p],a到b的标识用于区分不同的磁盘
光驱:/dev/cdrom
鼠标:/dev/mouse
在磁盘这种硬件设备下,不同的分区设备名如下:
以SATA磁盘为例子:/dev/sd1 /dev/sd2 /dev/sd3…
其中数字1,2,3就是区分不同的分区,注意对于扩展分区下的逻辑分区的数字只能是从5开始,而主分区是从1到4
当Linux系统为分区设定好了分区设备名后,如果开发人员要往对应的磁盘分区中写数据或者读数据,最后就是把对应的分区挂载到挂载点即可。

三、Linux文件和搜索命令

1、ls
-a:显示指定目录下所有文件,包含隐藏文件
-h:以k,M等数据大小单位显示目录或者文件大小,否则是以字节显示
-d:只显示目录信息而不目录下文件等信息
-l:长格式显示目录或者文件信息,显示的信息更具体
-i:显示文件的i节点号

2、mkdir
-p:递归的创建不存在的多级目录

3、pwd
显示当前所在路径

4、rmdir
只能删除空目录

5、cp
-p:保持复制的目录或者文件的属性和原目录和文件一致
-r:复杂目录

6、mv
剪切或者改名

7、rm
-r:删除目录
-f:递归删除
删除目录或者文件

8、touch
建立新文件

9、cat
-n:显示文件内容时有行号

10、more
用于查询内容多的文件
空格、f:翻页
回车:换行
q:退出more的观看模式

11、less
查询内容多的文件,和more的区别在于它可以向上翻,和搜索字符串
空格、f:翻页
回车:换行
pageup:往上翻页
上箭头:往上翻行
/搜索字符串的行
q:退出

12、head
-n:查看文件的前几行

13、tail
-f:动态刷新文件末尾内容
-n:查看文件后几行

14、ln	原文件	目标文件
-s:创建软链接
硬链接:不加s,和原文件共享i节点号,可以动态同步原文件内容,原文件不存在时任可使用,不能跨区
软链接:快捷方式,原文件不存在时不能使用。


二、搜素命令
1、find [范围] [匹配条件]
-name:按文件名字匹配
-iname:对文件名字不区别大小写
-size:按文件大小,+n/-n/n(大 小 等) 按文件大小搜索(换算为数据快0.5k)
-user:按文件所有者匹配
-group:按文件所属组匹配
-cmin:按文件属性被修改时间匹配
-amin:按文件被访问时间匹配
-mmin:按文件内容被修改匹配
-type:按文件类型匹配(f 文件 d 目录 l 软链接)
-o:或(or)
-a:同时满足(and)
find /etc -name inittab -exec/-ok 命令 {} \;对搜索的结果处理

2、locate(/tmp目录文件不被检索)
在资料库中找文件
/var/lib/mlocate/mlocate.db
updatedb更新资料库
-i 不区分大小写

3、which 命令
搜索命令所在目录及命令别名
在纯正的rm命令等根本没有询问删除的效果,rm只不过是命令rm -i的别名而已。

4、whereis 命令
检索命令所在目录 命令帮助文档

5、grep [指定串][文件]
在文件内检索指定串所在行输出
-i 不区分大小写 
-v 排除指定串
grep -v ^# /etc/inittab

四、Linux权限

对于Linux中文件和目录的权限,有普通的rwx权限,有ACL权限,有特殊的SUID,SGID,SBID等权限,还有chattr设置的权限(该权限对root同样有效)

1、普通的rwx权限:
Linux把文件和目录的权限分为三种用户管理,所有者,所属组,其他人。
所有者:一般是创建文件和目录的用户就会成为该文件和目录的所有者
所属组:一般是文件所有者的默认初始组
其他人:不是所有者,也不是所属组里的成员就是其他人
注意:普通的rwx权限对于超级用户root而言是没有的
再有rwx权限对于文件和目录有不同的含义:
对文件:
r:可以查看文件内容
w:可以修改文件内容
x:可以执行文件

对目录:
r:可以查看目录下文件内容
w:可以在目录下创建和删除文件
x:可以进入目录
总结:文件是否可以被用户删除,关键看用户是否具备对文件所在目录拥有W权限

文件权限修改:所有者、root
chmod ugoa +-= rwx(421)
-R 递归修改
文件、目录都可以修改权限
chmod u+x,g+w,o-w test

chown 所有者 文件名
只有root可以修改文件或者目录的所有者

chgrp 用户组 文件名
只有root可以修改文件或目录的所属组

umask -S(以rwx)显示文件的默认权限
但注意新建的文件都会把x的权限去掉
umask 直接执行显示的是权限掩码
umask 023 修改默认权限
文件的所有者默认是创建文件的者,文件所属组默认是文件创建者的默认所属组

2、ACL权限
ACL权限用于在某些特定的场景下,Linux原本的三种角色不够分配了,于是便有了ACL权限,它的思想就是给指定的用户或者组分配特定的权限。
对于ACL权限要查看对应的分区是否支持,采用dump2fs -h 分区设备名。若不支持可以采用mount -o remount,acl 分区挂载点命令来临时开启ACL权限。
若要永久有效可以修改/etc/fstab文件下对应的分区下的default权限,之后重启系统或者执行mount -o remount命令即可。

getfacle 文件名
查看文件的ACL权限

setfacl	[]	文件名
-m:设定ACL权限
-x:删除指定ACL权限
-b:删除所有的ACL权限
-d:设定默认的ACL权限
-R:递归设定ACL权限

setfacl u:st:rx /project
g:给组设置ACL
u:给用户设置ACL
m:设置acl的最大有效权限即mask的值,给用户设置的ACL权限要和mask的值要相与才是真的权限
setfacl -m m:rx /project

setfacl -b 文件名	删除文件的所有ACL权限
setfacl -x u:用户名 文件名	删除文件指定用户的ACL权限
setfacl -x g:组名	文件名		删除文件指定组的ACL权限

setfacl -m u:用户名:权限 -R 文件名(在给父目录设定权限的时候,该父目录及子目录和子文件都有这样的ACL权限)
但之后在这个目录里新建的文件和目录不会再具备这样的ACL权限

setfacl -m d:u:用户名:权限 文件名
给父目录设置了默认ACL权限,那么之后在这个父目录里新建的文件或目录都会具有这样的ACL权限。


3、SUID权限
SUID权限是一种对文件特殊的权限,要求文件可以执行,其次普通用户对给文件拥有x权限,
那么如果文件有了SUID权限那么当普通用户在执行该文件的时候就会暂时成为该文件的所有者身份
比如:普通用户可以用passwd修改自己的密码,但对于Linux而言对于用户信息的修改最后都在/etc/shadow文件的修改,而该文件只有root可以查看和修改,
其他任何用户都不能查看和修改。那么普通用户是如何用passwd命令修改密码的呢?原理就是passwd命令是一个可执行文件,同时普通用户对它有可以执行权限x,
同时该文件具有SUID权限,那么普通用户在执行该文件的时候会成为该文件的所有者root,所以普通用户才可以修改自己密码

设置SUID
*chmod 4755 文件名(4代表SUID)
*chmod u+s 文件名
取消SUID
*chmod 755 文件名
*chmod u-s 文件名
2代表SGID
1代表SBID

4、SGID权限
SGID的要求和SUID的要求一致,只不过它可以对目录也可以对文件。
对文件:和SUID的要求一致,效果就是普通用户在执行的时候,普通用户会成为该文件所属组身份。
对目录:普通用户要对该目录具有rx权限,若该目录具备了SGID权限,那么普通用户在该目录中新建文件的所属组会是该目录的所属组

5、SBID权限
只对目录有效,普通用户对目录具备wx权限,若该目录没有SBID权限,
那么普通用户在该目录中可以删除该目录下所有文件,若有了SBID权限,那么普通用户只能删除自己创建的文件,
不能删除其他用户创建的文件,只有root可以删除所有文件

7、chattr	[+-=]	[选项]	文件、目录(该权限对root也生效)
i:对文件,文件被锁,只能看,不能被删、改
i:对目录,只可以修改目录下的文件,不能删和新建文件
chattr +i /tmp/abc

a:对文件,文件只能加数据,不能被删、改
a:对目录,可以改目录下文件和新建文件,不能删文件

8、lsattr [选项] 文件或目录
-d:只显示目录信息
-a:显示目录及目录文件和目录的所有信息

9、sudo	系统命令
root把只能有超级用户执行的命令赋予给普通用户也可以执行
visudo命令修改/etc/sudoers文件,用于将那么命令赋予给普通用户或普通组的用户,同时普通用户在执行时被当做什么身份(root)
之后普通用户执行sudo 被赋予的命令,既可以执行对应的命令

你可能感兴趣的:(Linux基础知识,Linux)