Linux操作系统学习之第三篇

Linux操作系统学习之第三篇

本篇将介绍两大快内容
目录
  1. 目录管理

  2. 用户组管理


  1. 目录管理

Linux的目录结构为树状结构,最顶级的目录为根目录 /,其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。(---老实说这个概念我也不理解)

再开始本章学习之间要了解两个概念:

  • 绝对路径

由根目录"/"写起:如:/home

  • 相对路径

不是由"/"写起:如:从/home/Jun想切换到/home/King目录下

cd ../King(cd是切换cd ..代表返回上级目录,cd ../king代表返回上级目录进入King目录下,前提是King目录和当前目录是同级关系)

处理文件的常用命令

(1)"ls"(list files)*列出目录及文件名(最常用)

语法:

ls [-adl] 目录名称

参数:

  • -a:全部文件,连同隐藏文件(开头为.(点)的文件)一起列出

  • -d:仅列出目录本身(不包括隐藏文件,不是列出目录内的文件数据(常用))

  • -l:长数据串列出,包含文件的属性与权限(竖着列出)

(参数可以组合使用,例如:ls -al ~(命令:ls,参数:-a -l,选项:~目录)


(2)"cd"(change directory):切换目录

语法:

cd [相对路径/绝对路径] 都可以

cd .. 返回上层目录

cd ~ 返回家目录

cd - 返回上次所在目录


(3)“pwd”(print working directory):显示目前所在目录

语法:

pwd [-p]

参数:

  • -p:显示出确是的路径,而非适用link路径。(不是很清楚什么是连接路径)

(4)”mkdir"(make directory):创建新目录

语法:

mkdir [-mp] 目录名称

参数:

  • “-m”:配置目录权限(在创建目录时候直接配置,数字来配置权限)

  • “-p”:递归创建(层层创建)

举例:

mkdir -m 777 a

创建目录a其使用者、所属组、其他访问者都拥有rwx的权限

mkdir -p /a/b/c/d

在根目录下创建目录a,在目录a内创建目录b,在目录b内创建目录c,在目录c内创建目录d

(4)”rmdir"(remove directory):删除一个空目录

语法:

rmdir [-p] 目录名称

(这里强调的是删除空目录)

参数:

  • “-p”:连同上一级【空的】目录一起删除

(5)“cp”(copy file):拷贝文件或目录

语法:

cp [-adfilprsu] source(来源档) destination(目标档)

cp [option] source1 source2 source3 ... directory

参数:

  • “-a”:相当于-pdr,pdr参考下列说明

  • “-d“:来源档为连接当的属性(link file),辅助连接档属性而非文件本身

  • “-f”:强制(force)之意,强制复制

  • “-i”:目标档(destination)已经存在,覆盖是会先询问动作的进行(常用)(问你是否要复制且覆盖)

  • “-l”:硬式连接(hard link)的连接档创建,非复制文件本身!!!

  • “-p”:连同文件属性一起辅助过去,非使用默认属性(备份常用)

  • “-r“:递归持续复制,用于目录复制行为(常用)

  • “-s”:复制称为符号连接档(symbolic link),[捷径]文件

  • “-u”:若destination比source旧才升级destination!

(6)“rm”(remove):移除文件后目录

语法:

rm [-fir] 文件或目录

参数:

  • “-f”(force):忽略不存在的文件,不会出现警告信息。

  • “-i”:互动模式,删除前询问user是否删除

  • “-r”:递归删除,(可以理解为全删)---(教一个新指令:rm -rf */)按下就跑

(7)“mv”(move file):移动文件或目录,或修改文件与目录名称。(二合一指令,改名则在路径后打出修改的目录名即可)

语法: mv [-fiu] source destination mv [options] source1 source2 source3 .... directory

参数:

  • "-f"(force):强制,若目标目录文件已存在,不会询问直接删除

  • "-i":若destination已存在,询问是否覆盖

  • “-u”(update):若destination已存在,且source比较新,才会升级


Linux文件内容查看

Linux系统中使用一下命令来查看文件的内容:

  • cat:由第一行开始显示文件内容

语法:

cat [-bnv]

参数:

-b :列出行号,仅针对非空白行做行号显示,空白行不标行号! -n :列印出行号,连同空白行也有行号(与-b不同的地方) -v :列出一些看不出来的特殊字符

  • tac:由最后一行开始显示文件内容

语法:

tac 文件路径

  • nl:显示行号

语法:

nl [-b]文件 -b:指定行号的指定方式,一般有两种。 -b a:不论是否为空行,一样列出行号(类似:cat -n) -b t:有空行,空的一行不要列出行号

  • more:一页一页翻动

语法:

more 路径/文件名

more模式下可操作的按钮:

space按钮(空格键):向下翻一页

Enter:向下翻一行

/字串:搜索“字串”这个关键字

:f:立刻显示出档名以及目前显示的行数

q:立刻离开more模式

  • less:一页一页翻动

语法:

less 路径/文件名

在less模式下可操作的按钮:

space按钮(空格键):向下翻动一页

pagedown:向下翻动一页

pageup:向上翻动一页

/字串:向下搜寻“字串”

?字串:向上搜寻“字串”

q:离开less这个程序

  • head:取出文件前几行

语法:

head [-n(number)] 文件 参数: -n(-后面接数字):显示几行的意思 (默认显示前10行)

  • tail:取出文件后几行 语法: tail [-n] 文件 选项与参数: -n:表示显示几行的意思


  1. 用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新

引用菜鸟教程


(1)增加新的用户组:

语法:

groupadd 用户组

(2)删除一个已有的用户组:

语法:

groupdel 用户组

(3)修改用户组的属性:

语法:

groupmod option 用户组

参数:

-n(new):新用户组,将用户组的名字改为新名字

groupmod new_name old_name

(4)切换用户组(前提是目的组是该用户的附属组)

语法:

newgrp destination

(用户组的管理也可以通过集成的系统管理工具来完成。)


重中之重

与用户帐号有关的系统文件

用户和用户组相关的信息都存放在一些系统文件中,这些文件包括

/etc/passwd

/etc/shadow

/etc/group

...

1、/etc/passwd文件

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的。

其文件内容的具体格式和含义:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

分别解释:

用户名:帐号

口令:密码

这个字段存放的只是用户口令的加密串,不是明文。许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

用户标识号:(用户ID)

一个整数,系统内部用它来标识用户

一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,它们可以有不同的口令、不同的主目录以及不同的登录Shell等。(可以理解为非管理员帐号拥有管理员权限) 组标识号:

记录用户所属的用户组,对于/etc/group文件中的一条记录

注释性描述:(该字段无实际用途)

主目录:

用户的起始工作目录,用户登录到系统之后所处的目录。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

用户登录后要启动一个进程,复制将用户的操作传给内核,这个进程就是shell

Shell是用户与Linux系统之间的接口。

系统管理员可以为用户指定某个shell。如果不指定shell,那么系统使用sh为默认的登录shell,字段值为/bin/sh


用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

引用菜鸟教程

伪用户(pseudo users):

伪用户在/etc/passwd文件中占有一条记录,但不能登录,因为他们的登录shell为空,其存在主要为了方便系统管理

伪 用 户 含 义 
bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
uucp UUCP使用
lp lp或lpd子系统使用
nobody NFS使用

 


拥有帐户文件

许多标准的伪用户,例如:audit, cron, mail, usenet等各自为相关的进程和文件所需要。

安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限。

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

/etc/shadow文件格式:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

分别解释:

登录名:

与/etc/passwd文件中登录名相一致的帐号

口令:

加密后的用户口令。口令如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。

最后一次修改时间:

用户最后一次改密码的时间

最小时间间隔:

两次修改密码之间最小的天数

最大时间间隔:

口令保持有效的最大天数 警告时间:

从系统开始警告用户到用户密码正式失效之间的天数

不活动时间:

用户没有登录活动但帐号仍能保持有效的最大天数

失效时间:

帐号生存期,超过这个期限帐号就不合法了,就不能用来登录了


用户组的所有信息

用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。用户组的所有信息都存放在/etc/group文件中。

(newgrp相当于切换组,是否属于这个组要使用前面的口令使该组称为自己帐户的附加组)

/etc/group文件格式:

组名:口令:组标识号:组内用户列表

分别解释:

组名:

用户组的名字

口令:

用户组加密后的口令

Linux系统中用户组一般没有口令,这个字段一般为空或者是*。

组标识号:

一个整数,被系统内部用来标识组

组内用户列表:

属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

原文地址:https://www.cnblogs.com/JunkingBoy/p/14033561.html