本篇将介绍两大快内容
目录
目录管理
用户组管理
-
目录管理
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文件内容查看
-
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:表示显示几行的意思
-
用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同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系统中用户组一般没有口令,这个字段一般为空或者是*。
组标识号:
一个整数,被系统内部用来标识组
组内用户列表: