首页 > 代码库 > Linux基础系列-Day2

Linux基础系列-Day2

基础命令(文件内容管理)

1.cat:在当前终端显示文本文件内容

  格式:cat [文件路径]

    -n  从1开始对所有输出的行数编号

    -b  和-n相似,只不过对于空白行不编号;
2.head:从文件内容开头输出,默认头部10行

  格式:head [文件路径]

    -c N  输出文件头部的N(N为整数)个字节内容

    -n N  输出文件头部的N(N为整数)行的内容  

3.tail:从文件尾部内容输出,默认尾部10行

  格式:tail [文件路径]

    -c N  输出文件尾部的N(N为整数)个字节内容
    -n N  输出文件的尾部N(N位数字)行的内容
4.more:分屏显示文件内容

  格式:more [文件路径]

    -<数字>:指定每屏显示的行数
  操作:按Space键显示文本的下一屏内容

    按Enter键显示文本的下一行内容

    按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式

    按H键:显示帮助屏,该屏上有相关的帮助信息

    按B键:显示上一屏内容

    按Q键:退出more命令

5.less:与more类似,分屏显示文件内容

  格式:less [文件路径]

    -e  文件内容显示完毕后,自动退出

    -N  每一行行首显示行号

  操作:PageUp键向上翻页

    PageDown键向下翻页
6.grep:使用正则表达式筛选显示文件内容,一般应用于管道命令

  格式:grep [正则表达式或字符串] [文件路径]

    -s  不显示错误信息

    -v  反转查找

  示例:

  grep home home.txt  返回包含“home”的文本行

 

基础命令(归档和压缩)

1.tar:打包解包和压缩解压

  格式:tar [选项] [文件路径] 

    -c  建立新的备份文件

    -x  解包备份文件

    -C <目录>  这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项

    -t  列出备份文件的内容

    -z  通过gzip指令处理备份文件;

    -v  显示指令执行过程

    -r  添加文件到已经压缩的文件;

    -j  支持bzip2格式文件

  示例:

  tar -cvf log.tar log2012.log  仅打包,不压缩

  tar -zcvf log.tar.gz log2012.log  打包后,以 gzip 压缩,解压将c替换为x

  tar -jcvf log.tar.bz2 log2012.log   打包后,以 bzip2 压缩,解压将c替换为x 

  tar -zxvf log.tar.gz  解gzip方式压缩的包,后面可用-C加存放路径

  tar -jxvf log.tar.bz2  解bzip2方式压缩的包,后面可用-C加存放路径 

 

用户和组

用户介绍

系统中的每个进程(运行程序)都作为一个特定用户运行,每个文件归一个特定用户所有,对文件和目录的访问收到用户的显示,与运行进程相关联的用户可确定该进程可访问的文件和目录

·用户:用户是能够获取系统资源的权限的集合

·用户分类:

  a.管理员 root:具有使用系统所有权限的用户

      b.普通用户:即一般用户,其使用系统的权限受限

      c.系统用户:保障系统运行,一般不提供密码登录系统

·用户查询

  id                  查看当前用户信息

      id user          查看用户user信息

      ls –l              长格式显示文件属性,第三列为所属用户

      ps au            查看当前终端所关联的用户的进程,第一列为所属用户(进程管理详解)

·用户相关文件(用户):/etc/passwd

  文件内容格式:username:password:UID:GID:GECOS:diretory:shell

    username:用户名或帐号,不唯一

           password:用户密码占位符,具体密码存放在/etc/shadow文件中

           UID:用户的ID号,作为用户的唯一标识号

           GID:用户所在组的ID号,作为用户组的唯一标识号(为用户的主要组)

           GECOS:用户的详细信息(如姓名,年龄,电话等)

           diretory:用户个人数据和配置文件所的家目录

           shell:用户所在的shell环境

·用户相关文件(密码):/etc/shadow,一开始,加密的密码存储在全局可读的/etc/passwd文件中,被认为有最合理的安全性,但随密码暴力破解、字典攻击的普及,加密密码或’密码哈希’就被移到了更加安全的/etc/shadow中

  文件内容格式:name:password:lastchange:minage:maxage:warning:inactive:expire:blank

    name:有效登录名称

    password:已加密密码(开头!表示密码已锁定)

    lastchange:-d,最近更改密码的日期(以1970.1.1日的天数表示)

    minage:-m,不可更改密码的天数,0表示无要求

    maxage:-M,必须更改密码的最大天数

    warning:-W,密码即将到期的警告期,0表示不提供警告

    inactive:-I,密码过期后宽限的时间,过后失效无法登录

    expire:账户失效,以距离1970.1.1的天数表示

    blank:预留字段

  注:密码时间管理暂不说明

组介绍

·组:用户的集合,权限的容器

·组分类:

  a.普通用户组(补充组/附加组):可以加入多个用户

      b.系统组:一般加入一些系统用户

      c.私有组(主要组):也称基本组,当创建用户时,如果没有为其指明所属组,则为其自动定义一个私有的用户组,名称与用户名同名。私有组可以变成普通用户组,其他用户加入该组时,则变成普通组

  注:每个用户只有一个主要组,一般由/etc/passwd第4个字段的组GID定义

  注:用户创建的新文件归主要组所有

  注:创建用户的主要组是名称和用户相同的新建组,该新建用户是其用户专用组的唯一成员

·与组相关的文件/etc/group

  文件内容格式:group_name:password:GID:user_list

    group_name:组名

           passwoerd:组密码

           GID:组的ID号,唯一标识号

           user_list:以group_name为附加组的用户列表

           

基础命令用户和组管理命令

1.useradd:创建用户

  格式:useradd [用户名]

    -u  指定用户UID

    -g  指定用户GID

    -d  指定用户家目录,默认是/home/username

    -s  指定用户所在的shell环境

    -G  指定用户的附加组

    注:大部分参数可应用于usermod命令修改用户

  示例:

  增加一用户wendy,指定UID为1888,家目录/home/oracle,shell为/bin/sh

      useradd –u 1888 –d /home/oracle –s /bin/sh wendy

2.usermod:修改用户信息

  格式:usermod [选项] [用户名]

    -u  配置用户UID

    -g  配置用户GID

    -d  配置用户家目录,默认是/home/username

    -m  与-d 一起用表示把用户家目录的内容也移走

    -s  配置用户所在的shell环境

    -G  配置用户的附加组

    注:大部分参数可应用于usermod命令修改用户

  示例:

  修改用户wendy,UID为1000,家目录/oracle,shell为/bin/bash

      usermod –u 1000 –d /oracle –s /bin/bash -m wendy

3.userdel:删除用户

  格式:userdel [用户名]

    -r  连同家目录一起删除

    注:不加-r只从/etc/passwd中删除,默认情况保存家目录及数据

  示例:

  删除用户wendy及家目录

  userdel –r wendy

  问题:

  存在无人拥有的文件和目录,只有UID号和GID号,没有所属用户和所属组

  是因为删除用户不加-r选项,保留的家目录及数据将继承原用户的UID和GID号,

4.groupadd:创建组

  格式:groupadd [组名]

    -g  指定GID

    -r  指定/etc/login.defs文件中有效系统GID编号范围内的系统组

  示例:

  增加用户组grp,指定UID为1001

  groupadd  –g  1001  grp

  注:一般指定1000+,避免和系统组冲突

5.groupmod:修改组信息

  格式:groupmod [选项] [组名]

    -n  修改组名

    -g  指定新GID号

  示例:

  修改harry组名为natasha

  groupmod  -n harry natasha

6.groupdel:删除组

  格式:groupdel [组名]

  注:组内必须没有任何成员才能删除,同样要避免无组文件和目录 

 

文件权限

·文件系统权限:linux通过文件权限控制用对文件的访问

·文件所属用户类别

  所属用户:通常为创建文件的用户

  所属组:通常为创建文件的用户的所在组

  其他用户:除了创建用户和该用户所在组内用户以外的用户

  注:一般同一文件的所属用户权限高于所属组高于其他用户

·文件基本权限

  三种文件权限:读取、写入、执行

    读取:r表示read,可以读取文件的内容,列出目录的内容

    写入:w表示write,可以更改文件的内容,可以创建或者删除目录中的内容

    执行:x表示execute,可以作为命令执行文件,可以访问目录中的内容

           注:三种权限根据情况进行组合以达到控制文件系统的目的

           注:文件被创建,所有者自动拥有所有权限

           注:对目录无执行权限,不能cd进入该目录,只能ls目录里的文件名字

           注:对目录无执行权限,目录内文件有操作权限可以正常操作目录内文件

           注:对目录没有读权限,看不到内容,但是可以cd进目录和对目录内进行操作

           注:对目录有写权限,可以删除目录内的任何文件,无关目录内文件的权限,后面会介绍特殊权限‘粘滞位’来覆盖这个问题

           注:对目录没有写权限,目录内文件文件可写则可写,但是不能删除或创建

·当创建一个文件的时候,系统保存了有关该文件的全部信息,包括:文件的位置、总计/总用量、文件类型、文件的权限位、SELinux的标记、链接数/目录数、属主属组、文件大小、文件的修改时间、文件名/文件链接名

·ls -l命令查看一个文件的详细属性

[root@Linux ~]# ls -l abc.txt

-rw-r--r--.  1  root root  762  07-29 18:19  abc.txt

说明:

1. -rw-r--r--        该文件的文件类型和权限位

2. "."           支持SELinux标记

3. "1"           该文件硬链接的数目/引用计数

4. root root                文件属主&属组

5. "762"                      字节来表示的文件长度,记住,不是K字节!

6. 07-29 18:19            文件的最后更新时间。

7. abc.txt                    文件名。

·第一字段:第一个字符,文件类型(七种)

-rw-r--r--. :第一个横杠是该文件的文件类型,最后的点表示有selinux标识

  -  普通文件

  d  目录文件

  l  链接文件

  s  套接字文件

  b  块设备文件

  p  命名管道文件

  注:所创建的文件绝大多数都是普通文件、目录文件或符号链接文件

·第一字段:权限位置

rw-r--r-- :这是该文件的权限位,一共是9个字符,他们分别对应9个权限位,三位一组,表示属主权限、属组权限和其他用户权限

  rw-:前三位,文件属主可读、写

  r--:中间三位,组内用户可读

  r--:最后三位,其他用户只可读

  注:为加强系统安全,创建文件时,系统不会自动的赋予属主执行权限

  注:与NTFS权限不同,linux权限只适用于设置了linux权限的目录或文件

  注:目录中的文件和子目录不会继承父目录的权限,通过特殊权限设置继承,此处不做说明

  注:root拥有完全控制文件权限,可以通过selinux策略或者存在问题的进程和文件的安全性上下文限制,此处不做说明

  注:除了基础三权限,linux系统下还有特殊权限和粘滞位,此处不做说明

·第二字段:链接占用的节点

  1

  普通文件:该文件的硬链接数

  目录:该目录所含子目录的个数,新建空目录,此目录的第二字段就是2,表示该目录下有两个子目录。

  注:每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",此默认子目录是隐藏的。

·第三字段:文件(目录)属主&属组

  root root   该字段表示该文件(目录)属主&属组是谁,属组为属主所在的主组。

  注:只有文件的拥有者才具有改动文件属性的权利。

  注:root具有改动任何文件属性的权利。

  注:对目录,只有拥有该目录的用户,或具有w权限用户才有在目录下创建文件的权利。

  注:如果某一用户被删除,而该用户家目录还存在,ls -l 查看该文件将显示一个代表用户存在前ID号的数字。(无主无组文件)

·第四字段:文件大小

  768        文件或者目录所占用的系统空间,以字节为单位

  注:如果是目录,表示该目录大小,而非目录及其下面的文件的总大小

·第五字段:时间戳

  08-03 08:27       文件(目录)最近访问(修改)时间

  注:可通过touch、mkdir修改时间戳

·第六字段:文件/目录名

  abc.txt        如果是链接,会有"->"符号,跟着它指向的文件名

 

基本命令(文件权限管理)

1.chmod:修改文件权限

  符号法格式:chmod  [Who/What/Which]  [文件名]

    Who指权限组:    用户(u)、组(g)、其他(o)、全部(a)

    what指动作:     添加(+)、删除(-)、精确设置(=)

    which指权限:    读取(r)、写入(w)、执行(xX)

  注:符号法,适合进行单一权限添加或删除

  注:执行X,只对目录或者任意权限位置有执行权限的文件生效

  注:-R选项为递归,表示设置权限时,目录下的子目录和文件也生效设置,与X搭配使用,能够对所有目录设置执行(搜索)权限,但是要注意带执行权限的文件

  示例:

  为abc.txt的属主增加执行权限

  chmod u+x abc.txt

  数值法格式:chmod  [###]  [文件名]

    用数字表示权限:r=4,w=2,x=1,0表示无权限

           #表示一组权限rwx之和

    每个#代表一个权限位置:属主、属组、其他

  示例:

  将abc.txt权限修改为rwxr-xr--

  chmod 754 abc.txt

2.chown:更改文件的所有权

  格式:chown [用户或组] [文件名]

    chown  user  file           #修改用户属主

           chown  :group  file           #修改用户属组

           chown  user:group  file     #修改用户属主和属组

           -R  为递归整个目录树

           -h  在改变符号链接文件的属主时不影响该链接所指向的目标文件

           注:只有root和属主可改文件所有权,普通用户只能改属组,改属主后无法回改

Linux基础系列-Day2