在Linux系统中,默认情况下,用户相关信息都记录在/etc/passwd这个文件中 ,个人密码记录在/etc/shadow中
除此之外,Linux的组Group信息都放在/etc/group内。
user group others 作为linux的基本常识这里就不在进行描述了,接下来我们了解一下文件的基本信息
文件的基本信息
ls 就是list的缩写,展示当前目录下的文件列表,ls -al (可以简写成ll) 会额外展示此时用户对文件的操作权限。
先解释一下上面的意思:(为了说明方便,这里把文件夹和文件统称为文件)
drwxr-xr-x. | 17 | root | root | 256 | Apr 26 14:24 | bin |
---|---|---|---|---|---|---|
文件权限 | 链接数 | 文件拥有者 | 文件所属group | 文件容量(字节) | 文件最后修改时间 | 文件名 |
文件权限 eg. drwxr-xr-x
linux用10位字符来表示文件权限, 每位有不同的权限含义,某一位无权限时用 符号' - ' 表示。
第1位:
d 表示该文件是文件目录,
- 表示该文件是文件
l 表示链接文件 (link files)。类型windows的桌面快捷方式
b 表示装置文件里可供存储的接口设备(可随机存储装置)比如硬盘 。软盘 , eg. /dev/sda
c 表示装置文件里的串行端口设备,如键盘鼠标等。
s 资料接口文件 (sockets) 在网络中的数据承接文件 通常在/run 下和/tmo下
p 数据输送文件 (pipe) FIFO管道文件,用于解决多个程序读取同一文件的同步性和有序性
接下来的字符每3个为一组,第2、3、4位为一组,一般均为rwx和-的字符组合。(严谨的说,x还可以变成s或t)
其中:
文件:r 表示read 可读权限,w表示write 可写权限,x表示execute 可执行权限 s(暂时不讲,后面说) 若没有某一个权限则字符为‘ - ’
目录:r表示可以读取目录中包含的文件名数据,ls w 表示 可以在目录中创建和删除文件,改文件名,复制或移动文件 , x表示该目录是否允许进入。
s: 标志位可执行文件,且该可执行文件可以使用系统的所有资源。
t: 暂时不描述
第1组:
文件拥有者可具备的权限。 案例文件的拥有者是root,则root便拥有rwx 即读、写、执行三个权限
第2组:
群组Group的可具备的权限,即加入此群组的用户可具备的权限。
第3组:
Others的权限,即非本人且没加入该群组人的权限。 一般为 r-- (只给外人可读权限,可望不可即)
另外,目录与文件的权限含义有一些区别,这在后续会写到
链接数
表示有多少文件链接到这个文件的i-node 节点中, i-node后续会讲到,这里先不详细讲解。
其他的顾名思义即可
特别要说明的的是文件名,如果文件名前面多了一个 “.” ,如.git 表示该文件为隐藏文件。这种情况下,ls查不到该文件,需要通过 ll 进行查看
ls 的其他参数 请查看 ls --help
改变文件的属性与权限
改变属性 :
chgrp 改变文件所属群组
chgrp其实是change group的缩写, 要改变的组名必须在/etc/group中存在,不存在则先需要创建组。
chown 改变文件拥有者
chown 其实是change owner的缩写,要改变的用户必须在/etc/passwd中存在,不存在则先需要创建用户,
chown -R 会进行递归变更,即修改目标目录下的所有文件
chown root:root xxxx 同时修改拥有者和群组,用:分割
改变权限:
chmod 改变文件权限
chmod 可以通过字符改变权限也可以通过数字改变权限。其对应关系为:
r | 4 |
w | 2 |
x | 1 |
所以数字可以通过 4+2+1的方式累加,可以得到以下规律:
--- | 0 |
r-- | 4 |
-w - | 2 |
--x | 1 |
rw- | 4+2=6 |
rwx | 4+2+1=7 |
所以 如果要把一组的权限设置成rwx,则设置数字为7即可。因此。 chmod 777 xxx 表示给文件设置所以权限。
通过字符进行修改这里就直接略过,格式为 chmod u=rwx, g=rwx, o=rwq xxx
Tip:Linux文件长度限制
单个文件或目录的最大文件名大小为255字节,ASCII英文占一个字节,最大能容纳255个字符的文件名
Linux的目标配置
可分享的(shareable) | 不可分享(unshareable) | |
---|---|---|
不变的(static) | /usr (软件) | /etc (配置文件) |
/opt (第三方软件) | /boot (开机启动有关的文件) | |
可变的(variable) | /var/mail(使用者邮箱信件) | /var/run(程序相关) |
/var/spool/news(新闻组) | /var/lock (程序相关) |
linux系统层面并不强制这样规定,你可以理解为一个业内通用的规范。
可不可分享就是指能否挂载给其他系统或者网络上的其他主机进行访问,
/
root根目录,与系统有关
/usr
unix software resource unix软件源(linux以前为了兼容unix,许多地方都和unix兼容)与软件安装和执行有关
/var
variable 与系统运作过程有关
根目录
可以理解为windows系统的C盘,放置着大量的系统文件,分区应尽量小从而减少出错概率(分区大容易放入其他文件,增加出错机会)
目录 | 应放置文件内容 |
---|---|
/bin | 放置许多系统的执行文件,对应着一系列的执行命令,如cat ,chmod,chown,date,mv,mkdir,cp,bash等 |
/boot | 放置开机引导所需要的文件,开机菜单栏和开机配置等 |
/dev | 放置装置文件和接口设备文件,如硬盘,鼠标,键盘等, |
/etc | 放置系统的配置文件,如用户配置,密码配置,群组配置,其他用户可以查看,但是root才有权限修改,/etc/opt 放置系统的第三方软件文件 |
/lib | 放置系统的函式库,这里可以简单理解成windows的驱动程序 |
/lib64 | 放置64位的系统函式库 |
/media | 可移除装置的目录,一般就是挂载的硬盘 |
/mnt | 挂载额外的设备,这个一般用于挂载共享硬盘,比如windows在虚拟机中运行Linux,挂载共享的文件内容则在这个目录下 |
/opt | 放置第三方软件,比如桌面管理工具等一系列软件, 用户个人下载安装的软件建议放在/usr/local中 |
/run | 放置系统开机后产生的各项信息 |
/sbin | 放在开机中需要的系统指令文件 |
/srv | 可以看做service的缩写,放置的是网络服务文件 |
/tmp | 放置用户产生的临时文件,不能放重要文件,最好定期删除里面的内容 |
/usr | 全称 unix software resource 存放用户安装的软件,可以类比成windows的C:\Program files /usr/bin: centos7以上,该目录的内容和 /bin一样,存放着一般用户能执行的指令文件 /usr/lib: 一般和/lib相同,lib64同理 /usr/local: 一般我们会把linux中下载安装的软件放置在这个目录方便管理 /usr/sbin: 系统指令,一般只有root能执行,和/sbin 相同 /usr/share 放置一些只读共享文件,比如软件文件说明,时间有关文件等。 /usr/games 放置游戏, 鸡肋文件...... /usr/include 放置C/C++等程序语言的头文件 /usr/libexec 放置用户常用的执行文件或脚本。 /usr/src 一般放置软件的源码 |
/var | 放置缓存,日志文件,软件产生的持久化文件,比如mysql的数据文件,redis的数据文件,docker的数据文件等等 /var/cache 应用程序运行过程的缓存 /var/lib 放置应用程序运行时需要用到的数据文件 比如 mysql的数据库文件 放置到 /var/lib/mysql 中 /var/lock 同步锁文件,保证文件读写安全,链接到/run 和/run相同 /var/mail 邮箱文件 链接到/var/spool/mail中 /var/log 放置登录文件,日志文件,特别重要 /var/run 放置系统启动后产生的文件 ,比如有存储有关PID的文件 和/run相同 链接过去 /var/spool 队列数据, linux保证文件读写安全而创建的队列文件,原理和同步队列类似 |
/home | 系统默认的用户主目录(家),每个用户都有一个属于自己的home目录 |
/root | 系统管理员(root)的主目录(家), |
/proc | 这个是个虚拟文件系统,其内容是放置在内存中的,包括系统运行时的信息,网络信息 |
/sys | 这个是个虚拟文件系统,其内容是放置在内存中的,包括系统核心和系统硬件执行的相关信息 |
现在的linux 已经将/etc /bin /dev /lib /sbin这5个重要的目录中的重要文件 移动到 /usr中,因为/usr是只读的,能一定程度上保证数据安全。