06.Linux 文件详细介绍

本文详细介绍了Linux系统中的文件详细信息,包括inode编号、软硬链接的创建与删除、文件类型、用户和用户组的管理、文件权限的设置与测试、时间属性等核心概念。通过实例演示了如何创建、删除文件,以及如何切换用户、修改文件权限等操作,深入理解Linux文件系统的管理机制。
摘要由CSDN通过智能技术生成

1.文件详细信息

image-20211214184644134

134319695 -rw-------. 1 root root 1.7K Dec  8 12:08 anaconda-ks.cfg

2.inode编号

Linux系统中文件的唯一标号.

3.链接

软链接: 相当于windows中的快捷方式.只要是指向对应文件的路径.
硬链接: 硬链接直接指向 index node编号.
	硬链接和源文件操作文件是对同一个文件进行的操作.
3.1创建链接
ln 命令 默认创建硬链接
ln [参数] [操作对象1] [创建的链接对象]
	-s  创建软链接
1.软链接创建
# 创建文件
[root@kid ~]# touch a.txt
[root@kid ~]# ll a.txt
-rw-r--r--. 1 root root    0 Dec 14 19:12 a.txt
# 创建软链接
[root@kid ~]# ln -s a.txt a1.txt
# 链接文件指向 a.txt的文件路径
[root@kid ~]# ll a.txt a1.txt
lrwxrwxrwx. 1 root root 5 Dec 14 19:13 a1.txt -> a.txt
-rw-r--r--. 2 root root 0 Dec 14 19:12 a.txt
2.硬链接创建
# 创建硬链接
[root@kid ~]# ln a.txt a2.txt
硬链接数加1
[root@kid ~]# ll a.txt a2.txt
-rw-r--r--. 1 root root 0 Dec 14 19:12 a2.txt
-rw-r--r--. 2 root root 0 Dec 14 19:12 a.txt
3.2删除文件
底层原理:
删除文件,删除的是硬链接数,当硬链数为0的时候,
文件从磁盘中删除,如果不为0硬链接数-1.
# 删除源文件 硬连接不受影响
[root@kid ~]# rm -rf a.txt
lrwxrwxrwx. 1 root root    5 Dec 14 19:13 a1.txt -> a.txt
-rw-r--r--. 1 root root    0 Dec 14 19:12 a2.txt

1

3.文件类型
符号含义
f(-)普通文件
d文件夹/目录
l链接文件
b设备文件 - 磁盘文件
c设备文件 - 字符文件
s套接字文件
p管道文件
* 不能以文件的颜色区分文件的类型
* 文件的后缀名只能辅助识别文件的类型,不绝对的判断这个文件输入哪一种类型.
4.用户和用户组
用户:   一个用户为一个登入账户.
用户组: 某些具有相同数据的账户的集合.
4.1用户的创建
useradd 命令 创建新的用户
user [用户名xxx] 创建xxx用户
	-g : 指定系统用户组 (用户必须存在)
	-r : 创建系统用户
	-M : 不创建家目录
	-u : 指定创建用户的ID
1.系统用户
系统用户: uid  0 - 999 之间, 
系统用户一般不需要直接登入系统.用于启动应用程序上.
2.普通用户
普通用户: uid 1000 及以上的用户,用于登入.
4.2切换用户
su -[用户名]
su [用户名]
# 创建新用户
[root@kid ~]# useradd qq
# 切换用户
[root@kid ~]# su qq
[qq@kid root]$ 
4.3创建用户组
groppadd 命令创建用户组
	-g : 指定用户组ID
4.4用户详情文件
/etc/passwd
# 查看用户详细信息
[qq@kid root]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
qq:x:1000:1000::/home/qq:/bin/bash
...
5.文件大小
文件占用的硬盘资源大小.
6.文件修改时间
文件有改动,会跟新时间.
7.文件名称
文件的名称,在用一个文件中一般不能重名.
再老的Linux版本中:如果文件类型不一样,可以存在同名.

5.文件权限

 Linux 系统中,所有的操作实质都是在进行进程访问文件的操作。
我们访问文件需要先取得相应的访问权限,而访问权限是通过 Linux 系统中的安全模型获得的。

6.权限的组成

通过 ls -l (ll)可以查看到其文件类型及权限.
[root@kid ~]# touch a.txt
[root@kid ~]# ll a.txt 
-rw-r--r--. 1 root root 0 Dec 15 19:47 a.txt

三组权限:
1.user   文件属主的权限
2.group  文件属组的权限
3.others 其他者的权限

权限分为4个部分   十进制编号(设置权限可以使用标号代替)
1.可读(r)           4
2.可写(w)           2
3.可执行(x)         1
4.没有对应权限(-)   0
rw- r-- r--  等价于  6   4   4
代表的意思:                 
属主 :  可读 可写   不可执行  
属组  可读 不可写 不可执行
其他  可读 不可写 不可执行

7.权限测试

* 测试权限对于用户的意义
1、普通用户是严格遵守权限的
2、root用户是高于权限
# 首先创建一个新的用户用于测试.
[root@localhost ~]# useradd qq
[root@localhost ~]# passwd qq
Changing password for user qq.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
7.1可写权限
# 创建新文件
[root@localhost ~]# ce /tep
-bash: ce: command not found
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# touch a.txt
[root@localhost tmp]# ll a.txt
-rw-r--r--. 1 root root 0 Dec 15 21:26 a.txt

# 新开一个连接打开两个xshell 方便操作

[root@localhost ~]# su root
[root@localhost ~]# su qq
[qq@localhost root]$ cd /tmp
[qq@localhost tmp]$ ll a.txt
-rw-r--r--. 1 root root 0 Dec 15 21:26 a.txt
[qq@localhost tmp]$ echo 'xxx' >> a.txt
bash: a.txt: Permission denied  --> bash:a.txt:权限被拒绝
对文件做访问操作,不具备相应的权限是无法操作的.
7.2设置权限
chmod 命令设置文件权限
格式: chmod [参数] [权限表达式] [操作对象]
参数:
	-R  : 递归增加权限
	
权限表达式:
字母组合:
u+r 属组添加 可读权限
u+w
u+x
+x  每个组都加
案例1:将xxx文件添加属主 : 可读可写可执行、属组 :可读可写、其他人:没有任何权限
	chmod 760 xxx
案例2:将xxx下的所有文件设置rwxr--r--
	chmod -R  744  xxx/xxx

案例3:将xxx这个文件的属组增加一个可执行权限。
	chmod g+x xxx
	chmod g+x,o-r xxx
1.添加写权限
# 为其他用户添加 可写权限
[root@localhost tmp]# chmod o+w a.txt
[root@localhost tmp]# ll a.txt 
-rw-r--rw-. 1 root root 4 Dec 15 21:46 a.txt
# 修改权限后可以对文件进行写操作
[qq@localhost tmp]$ echo 'xxx' >> a.txt
[qq@localhost tmp]$ cat a.txt
xxx
2.删除可读属性
[root@localhost tmp]# chmod o-r a.txt
[root@localhost tmp]# ll a.txt
-rw-r---w-. 1 root root 4 Dec 15 21:52 a.txt
[qq@localhost tmp]$ cat a.txt
cat: a.txt: Permission denied
3.可执行权限
[root@localhost ~]# vi a.txt 
# 写个脚本
#!/bin/bash
echo 'hello word'
# :wq
[root@localhost ~]# ./a.txt
-bash: ./a.txt: Permission denied # 没有执行权限
[root@localhost ~]# chmod +x a.txt
[root@localhost ~]# ./a.txt
hello word
4.删除全部权限
[root@localhost tmp]# chmod 000 a.txt
[root@localhost tmp]# ll a.txt
----------. 1 root root 4 Dec 15 21:52 a.txt
[root@localhost tmp]# cat a.txt
xxx
# 权限普通用户是严格遵守权限的 root用户无视
其他用户无法读 无法写 无法执行
5.执行权限
测试权限对于目录的意义	
1、文件可读,路径的最小权限是必须拥有可执行权限。
2、文件可写,路径的最小权限是必须拥有可执行权限。
3、文件可执行,路径的最小权限是必须拥有可读可执行权限。
# 创建文件夹
[root@localhost tmp]# mkdir test
# 再文件夹下创建文件
[root@localhost tmp]# touch test/a.txt
# 写入信息
[root@localhost tmp]# echo 'xxx' >> test/a.txt 
# 修改文件夹权限
[root@localhost tmp]# chmod 000 test
[root@localhost tmp]# ll 
....
d---------. 2 root root 19 Dec 15 22:23 test
# 重连xshell 切换用户
[qq@localhost tmp]$ cd test
[qq@localhost test]$ 
# 重新连接
[root@localhost ~]# su qq
[qq@localhost root]$ cd /tmp/
# 查看权限
[qq@localhost tmp]$ ll
....
d---------. 2 root root 19 Dec 15 22:23 test
# 无法进入
[qq@localhost tmp]$ cat test/a.txt
cat: test/a.txt: Permission denied
# 添加可执行权限
[root@localhost tmp]# chmod o+x test
[root@localhost tmp]# ll
...
d--------x. 2 root root 19 Dec 15 22:23 test
# 可以查看
[qq@localhost tmp]$ cat test/a.txt
xxx
# 只是保留可写权限
[root@localhost tmp]# chmod 002 test
[root@localhost tmp]# ll
...
d-------w-. 2 root root 19 Dec 15 22:23 test
# 无法访问
[qq@localhost tmp]$ cat test/a.txt
cat: test/a.txt: Permission denied
# 只保留可读权限
[root@localhost tmp]# chmod 004 test
[root@localhost tmp]# ll
...
d------r--. 2 root root 19 Dec 15 22:23 test
# 无法访问
[qq@localhost tmp]$ cat test/a.txt
cat: test/a.txt: Permission denied
7.4默认权限
ps: shell中的特殊符号的意思  &&  and     ||   or
在Linux中,常用的文件的权限是666, 目录的权限是777
默认权限设置是由umask变量控制.
* umask 变量存放再/etc/profile文件中.
1、文件的权限是跟 umask 值相减,遇到奇数加一;遇到偶数则不变。
2、文件夹的权限只要跟 umask 值相减即可。

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
# 查看变量值
[root@localhost ~]# umask
# 第一位是特殊值暂时忽略
0022
[root@localhost ~]# mkdir a
[root@localhost ~]# ll
drwxr-xr-x. 2 root root    6 Dec 15 23:14 a
rwxr-xr-x --> 755
root 用户创建目录:
777 - 022 = 755
[root@localhost ~]# touch a.txt
[root@localhost ~]# ll
-rw-r--r--. 1 root root    0 Dec 15 23:16 a.txt
rwxr-xr-x --> 644 
root 用户创建文件:
666 -022 = 644
[qq@localhost ~]$ umask
# 第一位是特殊值暂时忽略
0002
[qq@localhost ~]$ mkdir a
[qq@localhost ~]$ ll
drwxrwxr-x. 2 qq qq 6 Dec 15 23:23 a
qz普通用户创建目录:
rwx rwx r-x --> 775
777 - 002 = 775
[qq@localhost ~]$ touch a.txt
[qq@localhost ~]$ ll
-rw-rw-r--. 1 qq qq 0 Dec 15 23:28 a.txt
qz普通用户创建文件:
rw- rw- r-- --> 664
666 - 002 = 664
# 临时修复唉umask值
[qq@localhost ~]$ umask 123
[qq@localhost ~]$ umask 
0123
# 修改之后
[qq@localhost ~]$ mkdir b
[qq@localhost ~]$ touch b.txt
[qq@localhost ~]$ ll
drw-r-xr--. 2 qq qq 6 Dec 15 23:31 b
-rw-r--r--. 1 qq qq 0 Dec 15 23:31 b.txt
目录 drw-r-xr--  777 - 123 = 654
# 遇到奇数加一
文件 rw-r--r--   666 - 123 = 644
7.4主属组修改
chown 命名修改属主和属组
chown 属主 [参数] [对象]
chown :属组 [参数] [对象]
chown 属主:属组 [参数] [对象]
	-R 递归修复
useradd命令详解
创建用户涉及的文件:
1. /etc/passwd   存放用户详细信息
2. /etc/shadow   存放用户密码
3. /etc/group    存放用户组
4. /etc/gshadow  存放用户组密码
5. /etc/skel     创建用户家目录需要复制的的模板
使用useradd 创建文件会做以下几件事:
1./etc/passwd文件末尾添加用户详细信息
qq:x:1000:1000::/home/qq:/bin/bash
用户名
: 分隔符
x密码占位符, 密码会拆分存储到/etc/shadow 文件中
1000 用户 uid
1000 用户组id 
/home/qq 用户登入后所在的路径
/bin/bash 使用的解释器
2. /etc/shadow 存放用户加密后的密码
qq:$6$GeJcPm2Q$6YynuO.2g96igvG71pKnJFJp9FbLKdWoQf6doEdOn4.WrUOTHB/FzoBsA9nhK60ZI3qOdF99CP64gzNH.IJBm/:18976:0:99999:7:::
3./etc/group  存放用户组的信息
qq:x:1000:
用户名:用户组密码占位符:用户组id
4./etc/gshadow  存放用户组密码
qq:!::
5./etc/skel 目录和文件复制到 /home/下并以用户名名命这个目录
6.修改用户目录的属主和属组.(使用root用户复制的文件默认属于root)
# 1.添加用户信息
[root@localhost ~]# vi /etc/passwd
qz:x:1001:1000::/home/qz:/bin/bash
[root@localhost ~]# vi /etc/shadow
# 2.复制root的密码或别的用户的
qz:$6$GeJcPm2Q$6YynuO.2g96igvG71pKnJFJp9FbLKdWoQf6doEdOn4.WrUOTHB/Fzo
999:7:::                                                       
# 3.添加用户组  
[root@localhost home]# vi /etc/group
qz:x:1001:
# 4.添加用户组密码
[root@localhost home]# vi /etc/gshadow
qz:!::
# 5.复制用户目录模板文件
[root@localhost ~]# cp -a /etc/skel /home/qz
# 6.重连xhell 
[root@localhost ~]# cd /home/
# 7.修改用户属主和属组
[root@localhost home]# chown qz:qz -R qz
[root@localhost home]# ll
drwxr-xr-x. 2 qz qz  83 Dec 16 15:29 qz
# 搞定

8.时间属性

stat 命令
显示文件或文件系统状态
[root@localhost ~]# stat a.txt
Access: 2021-12-16 15:55:09.631988358 +0800
Modify: 2021-12-16 15:55:09.631988358 +0800
Change: 2021-12-16 15:55:09.631988358 +0800
Access 文件访问时间   
Modify 文件修改时间
Change 属性修改时间

编辑文件  文件修改时间 属性修改时间  改变
访问文件  文件访问时间 改变
修改属性  属性修改时间 改变
[root@localhost ~]# cat a.txt
[root@localhost ~]# stat a.txt 
Access: 2021-12-16 16:04:32.186075700 +0800   # 查看文件改变
Modify: 2021-12-16 15:55:09.631988358 +0800
Change: 2021-12-16 15:55:09.631988358 +0800
[root@localhost ~]# vi a.txt
# :wq
[root@localhost ~]# stat a.txt 
# vi 编辑文件属性都改变
Access: 2021-12-16 16:07:45.841975752 +0800 
Modify: 2021-12-16 16:07:45.841975752 +0800
Change: 2021-12-16 16:07:45.844986166 +0800
[root@localhost ~]# echo 'xxx' >> a.txt
[root@localhost ~]# stat a.txt 
# 文件添加信息
Access: 2021-12-16 16:07:45.841975752 +0800
Modify: 2021-12-16 16:09:38.520757431 +0800   # 文件修改时间
Change: 2021-12-16 16:09:38.520757431 +0800   # 属性修改时间
# 修改权限
[root@localhost ~]# chmod 777 a.txt 
[root@localhost ~]# stat a.txt 
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-12-16 16:07:45.841975752 +0800
Modify: 2021-12-16 16:09:38.520757431 +0800
Change: 2021-12-16 16:12:57.182975482 +0800
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值