inode节点:

inode node 索引节点表中包含文件系统所有文件列表

inode文件的编号,类似与用户的id,在同一个分区上唯一标示一个文件

inode包含文元数据:

文件的字节数

文件的UID,GID

文件的读写执行权限

文件的时间戳

链接数

文件数据block的位置

ls -i 查看文件节点编号,第一列数据即是文件的inode号

stat:命令可以查看文件的inode信息

硬链接:

每个目录引用相同的 inode 号

创建时链接数递增

链接文件和原文件元数据保持不变,数据保持不变

删除文件时:

rm 命令递减计数的链接

文件要存在,至少有一个链接数

当链接数为零时,该文件被删除

不能跨分区不能跨设备创建硬链接

也不能针对目录来创建硬链接

ln source_file target_file

ls -l 3.txt 查看文件的详细信息

-rwxrw-rw-. 1 root root    16 Jul 27 10:15 3.txt

权限后面的数字表示硬链接数,1表示链接数为1

链接数等价于文件有几个名字,并且各个链接之间是互不依赖的,都可以直接访问数据

如果新建硬链接的source_file是软链接,则target_file也是一个软链接

软链接(符号链接):

ln -s source_file target_file

一个符号链接的内容是它引用文件的名称

长度;不增加或减少目标文件inode 的引用计数;

可以对目录进行链接

可以跨分区和跨设备,链接文件大小取决于路径字符

target_file依赖于文件source_file而存在,如果删除了文件source_file,打开文件target_file就会报错

软链接常犯的错误:

/root 目录下有个f1,在/root目录下执行次操作

# ln -s f1 /testdir/f1

创建链接时候用绝对路径,或者用相对软链接的路径

# ln -s ../root/f1 /testdir/f2

#df -i 中查看inode节点总数 Inode:inode节点数 IUsed:被使用的inode节点数

cp和inode

创建一个新的文件,分配一个inode,在磁盘中拷贝一份数据,把inode节点的block地址和拷贝的数据地址对应

rm和inode

删除inode节点的block地址和数据地址对应关系,链接数递减,删除inode中的目录项,但数据不会立刻删除,而是把数据块制空,等待其他数据写入时,在覆盖当前数据

mv 和inode

如果mv 命令的目标和源在相同的文件系统,创建一个新文件,分配一个inode,把inode节点的block地址和原数据地址对应,删除旧目录条目对应的旧的文件名。不影响inode 表(除时间戳)或磁盘上的数据位置,没有数据被移动。

如果目标和源在一个不同的文件系统, mv相当于cp和rm

file:检查文件类型

file [options] <filename>...

-f:列出文件中文件名的文件类型

-L 查看对应软链接对应文件的文件类型

标准I/O和管道

标准的输入输出

程序有指令加数据组成

fd:file descriptor ( 文件描述符)

程序的数据流有3种:                        fd

输入的数据流:标准输入(stdin) 键盘   0

输出的数据流:标准输出(stdout)显示器 1

错误的数据流:错误输出(stderr)显示器 2

输出重定向

> 以覆盖的方式进行输出

# ls > /dev/pts/0

# ls > /testdir/ls.log

>>以追加的方式进行输出

标准错误重定向 2>

# ls /boot /dd > /testdir/f1 2> /testdir/f2

把输出数据流定向到一个文件,错误数据流定向到另一个文件

合并标准输出和错误输出为同一个数据流进行重定向

&>:覆盖重定向

&>>:追加重定向

# ls /boot /dd &> /testdir/f1

# ls /boot /dd > /testdir/f2 2>&1

把输出数据流和错误数据流都放到同一文件的2种方式

2>&1 把2(错误流)重定向到1(输出流)

多条命令一行用分号隔开重定向到一个文件中,前面的命令要用括号括起来

# (pwd;ls /dd) &> /testdir/f1

用重定向可以把多个文件内容复制到1个文件中,完成多个文件数据组合

# cat /testdir/f1 /testdir/f2 > f3

输入重定向

<  覆盖重定向

<< 追加重定向

# cat << EOF >file

批量处理多行(cat默认是处理一行的);当遇到EOF处理符时退出

tr:转换和删除字符

tr [OPTION]... SET1 [SET2]

-c 或——complerment :不符合SET1中的字符,全部用SET2中字符表示

-d 或——delete :SET1中出现的字符,输出时都不出现

-s 或—squeeze-repeats :把连续重复的字符以一个字符表示,减少重复次数

-t 或--truncate-set1 :SET1中字符一对一的对应SET2中字符

# tr -d '\n' < f1  //去掉f1文件中的换行

# tr -d [[:space:]] < f2  //去掉f2文件中的空格

# tr -c 'ab' 'x' < f2  //把f2文件中不是ab的字符用x代替

# tr ‘a-z’ ‘A-Z’< /etc/issue //把/etc/issue中所有小写字母换成大写字母

set-C:关闭重定向中的覆盖功能 > 只对当前终端有效

用于写脚本中防止命令对文件的胡乱覆盖,在脚本开始前关闭该功能

set+C:取消该上述功能

pipe:管道

命令1 | 命令2 | 命令3 | ...

将前一个命令的输出作为后一个命令的输入

# ls | tr 'a-z' 'A-Z'

组合多种工具的功能

只能传输正确的信息,要传输错误的信息要把标准标准错误重定向(2>&1)或者使用 |&

# ls /etsss |& tr -d 'a-h'

# ls /etsss 2>&1 | tr -d 'a-h'

tee:命令

# 命令1 | tee 文件名 | 命令2

可以保存一份数据流,还可以在重定向中或管道中在传输一份数据流,把数据一分为二

保存不同阶段的输出

复杂管道的故障排除

# pwd | tee f3 | tr 'a-z' 'A-Z'

/dev/null:特殊设备,也叫“黑洞”,写进词设备的内容都会永远丢失

echo “hello” | passwd --stdin gao > /dev/null

直接从echo命令接受用户密码,并且把修改密码过程中的文件送进“黑洞”文件

1.file1 文件的内容为:"1 2 3 4 5 6 7 8 9 10" 计算出所有数字的总和

2.删除Windows文本文件中的'^M'字符

# cat f5.txt | tr -d '\r' > f7

3.处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 ”,只保留其中的数字和空格

# echo "xt.,l 1 jr#xmn 2 c*/fe 3 uz 4" | tr -c '[0-9][[:space:]]' 'x' | tr -d x

4.将PATH变量每个目录显示在独立的一行

# echo "$PATH" | tr -t ':' '\n'

5.删除指定文件的空行

# cat f11 | tr -s '\n'

6.将文件中每个单词(字母)显示在独立的一行,并无空行

# cat f12 | tr -t ' ' '\n' | tr -c '[[:alpha:]]' '\n' | tr -s '\n'

用户组权限

资源分派:3A认证

Authentication :认证

Authorization :授权

Accouting|Audition :审计

用户user

linux用户:Username都对应这一个UID

管理员:root, 0

普通用户:1-65535

系统用户:1-499(centos6), 1-999(centos7

对守护进程获取资源进行权限分配

登录用户:500+(centos6), 1000+(centos7)

交互式登录

组group

Linux 组:Groupname/GID

管理员组:root, 0

普通组:

系统组:1-499(centos6), 1-999(centos7

普通组:500+ (centos6), 1000+(centos7)

安全上下文 security context

Linux 安全上下文

进程 (process):运行中的程序

命令启动的进程是以发起者的身份运行,而不是命令自身运行的

root: /bin/cat

gao: /bin/cat

进程所能够访问资源的权限取决于进程的运行者的身份

id:命令

-u:显示用户的UID

-g:显示用户的GID

-nu:不显示用户的UID而是显示Username

-ng:不显示用户的GID而是显示Groupname

Linux 组的类别:

用户的主要组(主组): :

用户必须属于一个且只有一个主组

组名同用户名,且仅包含一个用户:私有组

用户的附加组(辅助组): :

一个用户可以属于零个或多个辅助组

用户和组的配置文件

Linux 用户和组的主要配置文件:

/etc/passwd:用户及其属性信息( 名称、UID 、主组ID 等)

/etc/shadow:用户密码及其相关属性

/etc/group: 组及其属性信息

/etc/gshadow:组密码及其相关属性

/etc/passwd;用户的信息库

account:password:UID:GID:GECOS:directory:shell

account:用户名

password:加密的密码,也可使用占位符"x"

UID:用户的UID

GID:用户的GID

GECOS:注释信息

directory:用户的家目录

shell:用户的默认登陆shell

chsh:修改用户默认shell的工具

# chsh -s /bin/csh gao

getent <passwd|group|shadow|gshadow> root :查看用户的/etc/passwd|group|shadow|gshadow中信息

Linux系统中看的是id而不是用户名;若不同用户id相同,则系统他们视为同一个用户

密码加密

加密机制:

加密:明文-->  密文

解密:密文-->  明文

单向加密:哈希算法,原文不同,密文必不同,只能加密不能解密

定长输出:不论输入密码是多少位都是定长输出

雪崩效应:初始条件的微小改变,引起结果的巨大改变

md5: message digest, 128bits

sha1: secure hash algorithm, 160bits

sha224: 224bits

sha256: 256bits

sha384: 384bits

sha512: 512bits

手动修改当前加密的算法

authconfig --passlgo=sha256 --update 更改加密用的算法

密码的复杂性策略

使用数字、大写字母、小写字母及特殊字符4种符号至少3种

足够长

使用随机密码

定期更换;不要使用最近曾经使用过的密码

/etc/shadow:用户秘密

root:$6$3TTqKfDF1Tf2yVa2$CkFzR24CoQ8rewpScarLtnFa/m3vJHVhS09NmZUk3Y4KM5/dCyCxK.7EpZN7okmkvLElFnk99cinRaS.tbf1N/:17001:0:99999:7:::

用户名:加密的密码:最近一次修改时间:最短使用时间:最长使用时间:警告时间:过期时间:账号过期时间:保留字段

1:加密的密码中用3个$把密码分成了3段

a:加密时使用的算法

md5 1

sha1 2

sha224 3

sha256 4

sha384 5

sha512 6

b:随机数(密码不是直接加密,而是密码加上随机数后加密,以此来确保不同用户使用了相同密码后,加密出来的密码也不相同)

c:加密后的密码

注意:加密密码处,有一个!或者有2个!!则该用户禁止登陆

2:最短使用时间是指修改以此密码后,下一次修改密码必须经过的时间

3:最近一次修改时间是从1970年1月1号,开始计算到修改密码时所经过的天数

4:进入警告时间段后,进入系统可以不修改密码,但是进入过期时间段后,必须修改密码才能进入系统

/etc/group:组的信息库

group_name:passwd:GID:user_list

组名:组的密码:GID:该组的成员,或以此组为附加组的用户列表

root:x:0:

/etc/gshadow

root:::

组名:组的密码:组管理员列表:该组的成员:或以此组为附加组的用户列表

为了安全起见,一般组不设置密码,则其他用户就不能随意切换自己的主组

# groups USERNAME  查看用户基本组和附加组信息

# gpasswd groupname  给组设置口令

文件操作用户信息文件

vipw = vi /etc/passwd

vigr = vi /etc/group

用户和组的管理工具

用户管理命令:useradd   usermod   userdel

useradd

-u: 指定用户的UID

-o:配合-u选项,不检查UID的唯一性

-g GID :指明用户所属基本组,可为组名,也可以GID

-G GROUP1[,GROUP2,...] :为用户指明附加组,组必须事先存在

-c "COMMENT":用户的注释信息

-d HOME_DIR: 以指定的路径( 不存在) 为家目录

-s SHELL:  指明用户的默认shell 程序

所有可用shell列表在/etc/shells 文件中

-N:不创建用户的主组,使用users组做主组

-r:创建系统用户

对于系统用户不会创建家目录的

默认值设定:/etc/default/useradd 文件中

显示或更改默认设置:

useradd -D

useradd -D -s SHELL

1.创建用户gentoo,附加组为bin和root,默认shell为/bin/csh ,注释信息为"Gentoo Distribution"

# useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo

2.创建下面的用户,组和组成员关系

名字为admins的组

用户natasha,使用admins作为附属组

用户harry,也使用admins作为附属组

用户sarah,不可交互登录系统,且不是admins的成员,

natasha,harry,sarah密码都是centos

# groupadd admins

# useradd -G admins natasha,harry

# useradd -G admins harry

# useradd -s /sbin/nologin sarah

# echo "centos" | passwd --stdin natasha &> /dev/null

# echo "centos" | passwd --stdin harry &> /dev/null

# echo "centos" | passwd --stdin sarah &> /dev/null

转载于:https://blog.51cto.com/11887142/1832158

LINUX的文件链接,管道和用户组相关推荐

  1. linux中文件链接,关于Linux中文件,链接的一些思考

    在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...

  2. linux 更改文件所属用户及用户组

    本文整理自: http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/ http://ydlmlh.iteye.c ...

  3. linux 查看 管道文件,linux 查看文件和管道命令

    cat.tail.head.tee.这些命令的语法基本上相同的:命令名 [选项] [文件],而且您可以在管道中使用这些命令.这些命令的功能都是根据特定的条件选择文件内容进行打印. cat 工具会将文件 ...

  4. linux目标文件链接命令,ld 命令:将目标文件链接为可执行程序 - dute.org

    说明 ld 命令是二进制工具集 GNU Binutils 的一员,是 GNU 链接器,用于将目标文件与库链接为可执行程序或库文件. 语法ld [选项] [目标文件...] 选项-b:指定目标代码输入文 ...

  5. Linux链接文件、管道、重定向讲解

    Linux链接文件.管道.重定向讲解 --链接文件-- 硬链接:在inode表中记录一个条目,所有的元数据和原始文件元数据相同. ·相当于两个名字. ·删除原始文件,另一个条目也能够找数据本身. ·不 ...

  6. linux tar压缩权限,LINUX 文件/组/帮助/权限/文件压缩/管道

    Linux文件/目录详解 常用文件路径的作用 /var/log/messages 系统类的日志文件/var/log/secure 登录日志文件/var/spool/cron 定时任务目录/etc/fs ...

  7. linux学习---linux基于文件的IPC(匿名管道pipe,命名管道mkfifo,普通文件,socket文件)

    常用的IPC分为两个类别,一是基于文件,而是基于内存 基于文件的分别有匿名管道,有名管道,普通的文件共享,socket文件 基于内存的有普通内存共享(本文章没有介绍),共享内存,共享信号量,消息队列 ...

  8. NO21 Llinux的文件种类与扩展名--文件权限--软硬链接--Linux删除文件原理

    Linux的文件种类与扩展名 一.文件种类: 1.普通文件(regular file)第一个字符为[ - ] 包括: ①纯文本档(ASCII):这是Linux系统中最多的一种文件类型,称为纯文本档.是 ...

  9. linux如何改文件用户组权限,linux修改文件权限和用户组管理小结

    如何在linux下修改组权限 chmod g+r path/file 加读权限 当前目录 chmod -R g+r path/file 加读权限 当前目录以及子目录 g-r 减读权限 g+w 加写权限 ...

最新文章

  1. VSTO Office二次开发对PPT自定义任务窗格测试
  2. android开发模式,Android开发中无处不在的设计模式
  3. Cadence Allegro PCB 铺铜(覆铜)Shape呈格点状填充而不是完整全铜显示问题–Allegro技巧...
  4. C++string容器-字符串比较
  5. python axes_python matplotlib中axes与axis的区别?
  6. tp5 空格拆分关键词,多个关键词进行查询
  7. Drools只执行一个规则或者执行完当前规则之后不再执行其他规则(转)
  8. 康华光电子技术基础第六版习题答案
  9. springboot 动态指定日志路径(logback) 自动跟随项目路径
  10. python梯形公式面积_算法(一)梯形近似法求曲线面积
  11. 吴军三部曲见识(三) 谈谈见识
  12. 作为数据分析师,这6款数据分析热门工具,你不能错过~
  13. 腾讯海外计费系统架构演进
  14. 尚硅谷前端框架vue语法(二)
  15. UML中各种线条关系记忆技巧
  16. 阿里云ACR关联gitlab账号
  17. 我在赶集网的两个月(数据挖掘、竞情分析、产品、团购、运营、电话销售)
  18. oppo手机怎么关闭Android,OPPO手机必须关闭的3个设置,让你的手机永不卡顿,再用3年...
  19. 全球与中国聚 (3,4-亚乙基二氧噻吩) (PEDOT)市场“十四五”规划及远景目标的建议报告2022-2028年
  20. 二项式分布和多项式分布

热门文章

  1. OpenERP 中的on_change方法总结
  2. DOS下常用网络相关命令解释(华为培训资料)
  3. 苹果修复今年以来的第13个0day,影响iOS 和 macOS
  4. 移动互联网新协议 GTP 中被曝多个高危漏洞,影响4G和5G 用户
  5. CocoaPods管理iOS项目 2018年11月06日
  6. 北美环境教育年会:中国伙伴参会快报(一)开幕
  7. dedecms 模型新添加的自定义字段设置样式
  8. linux echo设置颜色
  9. Hdu2680 最短路
  10. VC下绘图程序Demo