@wyjgd
2019-08-18T06:48:38.000000Z
字数 5202
阅读 1185
文件和目录被组织成一个单根倒置树结构
文件系统从根目录下开始,用“/”表示
根文件系统:root filesystem (rootfs)
文件名称区分大小写
以.开头的文件为隐藏文件
路径分隔为/
文件系统分层结构:LSB Linux Standard Base
FHS(Filesystem Hierarchy Standard)
文件有两类数据:
元数据(metadata):存放文件名,大小属性等
数据(data):存放文件的内容
文件名规则:
文件名最长255个字节,包括路径在内文件名称最长4095个字节
有些字符不推荐使用,如空格符、制表符、退格符和字符@#¥()-等。避免使用.作为普通文件名的第一个字符
/bin:存放系统命令
/boot:存放着系统的启动文件和内核
/dev:设备文件主目录(设备不在这里,具体设备信息/proc目录中)
/etc:系统主配置文件主目录
/home:普通用户的家目录
/lib&lib64:系统库文件存放的目录 .dll
/media:可移动介质挂载点
/mnt:用户挂载目录
/opt:第三方应用程序文件存放目录
/proc:系统进程和系统硬件信息
/root:超级用户root家目录
/run:存放当前运行程序库的目录(当前运行的目录)
/sbin:超级用户使用的命令存放的目录
/srv:该目录存放一些服务启动之后需要提取的数据
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;
其主要作用在于为管理Linux设备提供一种统一模型的的接口;
/tmp 临时文件存放目录 系统启动过程中会产生一些临时文件,这些临时文件存放在tmp目录下,如果tmp目录没有存储空间,系统启动不了
/usr:系统帮助文档以及源码包安装位置,usr目录是最庞大的目录,要用的应用程序和文件几乎都在这个目录
/var 系统配置文件主目录
绝对路径:以“/”开始,完整的文件位置路径。例如:/etc/nginx/nginx.conf
相对路径:不以“/”开始,以一个简短的形式指定文件文件。例如cd ./../
列出目录内容
用法:ls [OPTION]... [FILE]...
选项
-a:列出目录的隐藏文件
-l:显示额外的信息
-R:递归显示目录内容
-d:显示当前文件夹,与-l一起用,显示当前文件夹详细信息
-1(数字):分行显示
-S:按文件大到小排序
-t: 按mtime(修改时间)排序,atime:访问时间,ctime:状态改变时间
-u: 配合-t,显示并按atime从新到旧排序
-U:按目录存放顺序显示
*:匹配0个或多个字符
?:匹配任何单个字符
~:当前用户家目录
~wyj:用户wyj家目录
~+:当前工作目录
~-:前一个工作目录
[0-9]:匹配数字范围
[a-z]:匹配小写字母范围
[A-Z]:匹配大写字母范围
[wyj]:匹配列表中任意一个字符
[^wyj]:取反,匹配列表中字符以外的字符
预定义的字符类:可以通过man 7 glob查看
[:digit:] 任意数字,及0-9
[:lower:] 任意小写字母
[:upper:] 任意大写字母
[:alpha:] 任意大小写字母
[:alnum:] 任意数字或字母
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
[:punct:] 标点符号
[:print:] 可打印字符
[:cntrl:] 控制(非打印)字符
[:graph:] 图形字符
[:xdigit:] 十六字进制字符
tree:显示目录树,
-d:只显示目录
-L:指定显示的层级数目
mkdir:创建目录,
-p: 确保目录名称存在,不存在的就建一个
-v: 显示详细信息
rmdir:删除空目录
-p:递归删除父空目录
-v:显示详细信息
rm -r:递归删除目录树
用于复制文件或目录
用法: cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
选项
-i:覆盖前提示
-r:递归复制目录及内部的所有内容
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
-i:询问,如果目标文件已经存在,则会询问是否覆盖
-l:把目标文件建立为源文件的硬链接文件,而不是复制源文件
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-u:若目标文件比源文件有差异,则使用该选项可以
-a:相当于-d,-p,-r的集合。
使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
对大括号中的以逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。
对大括号中以点点(..)分割的顺序文件列表起拓展作用,如:touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt。
linux用户:Username/UID UID相当于用户编号
其中管理员root UID为0
普通用户1-60000自动分配,Centos7为例,1-999为系统用户(对守护进程获取资源进行权限分配),1000+为登录用户(交互式)。
useradd
用于创建用户
用法:useradd [options] LOGIN
选项
-u:用户UID
-o:配合-u,不检查UID的唯一性
-g:GID,指明用户所属基本组,可以用组名
-c:用户的注释信息
-d:指定的路径(不存在)为用户家目录
-s:用户的默认shell程序
-G:用户附加组,组事先存在
-N:不创建私用组做主组,即使用user组为主组
-r:创建系统用户
-m:创建家目录,用于系统用户
-M:不创建家目录,用于非系统用户
默认值设定在/etc/default/useradd文件中
可以用useradd -D [-s SHELL] [-b BASE_DIR] [-g GROUP]去显示或修改默认设置
usermod
用户属性修改
用法:usermod [option] LOGIN
选项
-a:把用户追加到某些组中,仅与-G选项一起使用
-u:修改UID
-g:修改GID
-G:修改附加组,原附加组会被覆盖,若要保留,与-a同时使用
-s:修改默认shell
-c:修改注释信息
-d:新家目录不会自动创建,若要创建新家目录并移动原家目录数据,与-m同用
-l:修改用户名
-L:锁定用户
-U:解锁用户
-e:YYYY-MM-DD 指定用户账号过期日期
-f:用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
userdel
删除用户
用法:userdel [option] LOGIN
选项
-r:删除用户同时删除家目录和邮件
-f:强制删除用户,即使用户当前已登录
linux组:Groupname/GID
其中管理员组:root GID为0
Centos7为例,1-999为系统组,1000+为普通组
用户和用户组的对应关系有以下 4 种:
一对一:一个用户可以存在一个组中,是组中的唯一成员;
一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权 限;
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。
groupadd
用于添加用户组
用法:groupadd [options] groupname
选项
-g:指定GID
-r:创建系统组
-p:新组加密
groupmod
用于组属性修改
用法:groupmod [options] groupname
选项
-n:修改组名称
-g:修改GID
groupdel
用于组删除
用法:groupdel groupname
/etc/passwd
用户及其属性信息(名称、UID等)
文件格式:
login name:登录名(wyj)
passwd:密码(x)
UID:用户编号(1000)
GID:登录默认所在组编号(1000)
GECOS:用户全名或注释
home directory:用户家目录(/home/wyj)
shell:用户默认shell(/bin/bash)
/etc/group
组及其属性信息
群组名称
群组密码:通常不设定
GID:群组ID
以当前组为附加组的用户列表
/etc/shadow
用户密码及相关属性
文件格式:
登录用户
用户密码
密码最近更改时间(从1970.1.1起)
密码再过几天能变更(0表示随时)
密码再过几天必须变更(99999表示永不过期)
密码过期前几天提醒(默认一周)
密码过期几天后账号被锁
几天后账号失效(从1970.1.1起)
passwd
用于修改用户的密码
用法:passwd [option] username
选项
-d:删除用户密码
-l:锁定用户
-u:解锁用户
-e:强制用户下次登录修改密码
-f:强制操作
-n:mindays(最短使用期限)
-x:maxdays(最大使用期限)
-w:warndays(提前多少天开始警告)
-i:非活动期限
--stdin:从标准输入接收用户密码
echo "passwd" |passwd --stdin username
chage
修改用户密码策略
用法:chage [option] login
-d:最近一次修改时间
-E:过期时间
-l:显示密码策略
-i:密码过期后,账号不可用
-m:密码可进行更改的最小天数,0表示随时可更改
-M:密码有效期
-W:密码到期前,提前收到警告信息的天数
/etc/gshadow
组密码及相关属性
群组名称
群组密码
组管理员列表:更改组密码和成员
以当前组为附加组的用户列表
chown
用于修改文件属主属组
用法:chown [option] [owner]:[group] file
选项
-c:显示更改的部分的信息
-f:忽略错误信息
-h:修复符号链接
-R:处理指定目录以及其子目录下的所有文件,即递归处理
-v:显示详细的处理信息
修改test文件的所属组为wyj
修改/w目录所有者和所属主为wyj
chmod
用法:chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
-R:递归修改权限
用于修改文件权限
文件权限:owner(属主) u
group(属组) g
other(其他) o
每个文件针对每类访问者定义了三种权限:
r:读 数字4
w:写 数字2
x:执行 数字1
修改test文件权限,使属组获取读写权限
SUID:对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属主身份来执行。
SGID:对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属组身份来执行。
Sticky:粘滞位,通常对目录而言。对于全局可写目录来说,让该目录具有sticky后,删除只对属于自己的文件有效(但是仍能编辑
修改别人的文件,除了root)。不能根据安全上下文获取对别人的文件的写权限。
权限设定:
chmod u+s
chmod g+s
chmod o+t
同上,去除特殊位有:chmou u-s等
SUID:置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
SGID:置于 g 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
STICKY:粘滞位,置于 o 的 x 位,原位置有执行权限,就置为 t ,否则为T .
表示方法:
将三个特殊位的用八进制数值表示suid:4 sgid:2 sticky:1,放于 u/g/o 位之前
SUID SGID STICKY
0 0 0 0 无特殊权限
0 0 1 1 有t的权限
0 1 0 2 有SGID权限
........
1 1 1 7 有SUID SGID t的权限