文件权限与目录配置
用户与用户组
- 用户:即某个文件的拥有者,可以管理自己账号下的文件,另有一个超级账号
root
,可以统一管理全局,利用su root
命令登录该账号。 - 用户组:相当于群组,多个用户之间可以组成用户组,组内数据可共享,并且对外不共享。
用户身份、用户组记录文件:
默认情况下,系统账号以及 root
的相关信息,都记录在 /etc/passwd
文件夹内,个人的密码记录在 /etc/shadow
文件夹内,所有的组名记录在 /etc/group
文件夹内。
文件权限
ls
命令可以列出当前目录下的所有文件,ls -al
则可以更详细的列出所有文件以及权限等信息。
- 第一列代表文件类型与权限:
- 第一列一共有 10 个字符
- 第一个字符表示文件类型
- 如果为
d
则是目录 - 如果为
-
则是文件 - 如果为
l
则表示链接文件 - 如果为
b
表示设备文件里面的存储设备 - 如果为
c
则表示串口设备,如键盘鼠标
- 如果为
- 接下来的 9 个字符,三个为一组,且均为
rwx
三个参数组合,没有该权限则为-
。分别表示文件拥有者、用户组内其它账号、非本人且没有加入组的其它账号的权限。
- 第二列表示有多少文件名链接到此节点。每个文件都会将它的权限与属性记录到文件系统的
inode
中,每个文件名会链接到一个inode
,这个属性就是记录有多少不同文件名链接到相同的inode
号码。 - 第三列表示文件拥有者的账号
- 第四列表示文件的所属用户组
- 第五列为文件大小(Bytes)
- 第六列为创建日期或修改日期。这个时间如果距离现在太久,会仅显示年份,不具体到小时。如果想要显示完整的时间,可以使用
ls -l --full-time
- 第七列为文件名,如果前面有
.
,则为隐藏文件。
修改文件属性与权限
chgrp [-R] [group name] [file name]
:修改文件所属用户组chown [-R] [account name] [file name]
orchown [-R] [account name]:[group name] [filename]
:修改文件拥有者chmod
:修改文件的权限。方法有两种,分别是使用数字和使用符号。- 使用数字
chmod [-R] [number] [filename]
:数字对照表关系为r:4 w:2 x:1
,这三种权限加起来为一个数,分别有三个数,来表示用户、用户组、其他人对应的权限。 - 使用符号
chmod [u/g/o/a] [+/-/=] [r/w/x] [file name]
- 使用数字
-R
表示递归,即连同该目录下的所有目录与文件一并修改
目录配置
FHS (Filesystem Hierarchy Standard) 标准用于规范每个特定的目录下应该要放置什么样的数据。
- 根目录
/
:根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录在同一分区。- FHS 要求必须存在的目录
/bin
:用于放置在单人维护模式下还能够被使用的命令/boot
:用于放置在启动时会使用到的文件,包括 Linux 内核文件、启动选项以及相关配置文件/dev
:任何设备都以文件的形式存放在这个目录。读写这个目录下的某个文件,就相当于读写某个设备。/etc
:存放系统主要的配置文件。另外 FHS 还规范几个重要的目录:/etc/opt
:必要。放置第三方辅助软件/opt
的相关配置文件/etc/x11
:建议。与 X Window 有关的各种配置文件。尤其是 xorg.conf 这个 X server 的配置文件/etc/sgml
:建议。与 SGML 格式有关的配置文件/etc/xml
:建议。与 XML 格式有关的配置文件
/lib
:存放在启动时会用到的函数库,以及/bin
或/sbin
下的命令需要调用的函数库/media
:放置的是可删除的设备,如 软盘、光盘、DVD 的挂载/mnt
:用来暂时挂载一些额外设备,与/media
相似/opt
:给第三方辅助软件放置的目录/run
:保存系统启动后产生的信息,可以使用内存来模拟/sbin
:系统启动过程中需要的,包括启动、修复、还原系统所需要的命令。某些服务器软件程序放置在/usr/sbin
中,本机自行安装的软件所产生的系统执行文件放置在/usr/local/sbin
/srv
:一些网络服务启动后,需要使用的数据目录/tmp
:让一般用户或正在执行的程序暂时放置文件的地方。任何人都可存取,所以需要定期清理。
- FHS 建议可以存在的目录
/home
:系统默认的用户目录,此目录有两种代号:~
:代表目前这个用户的家目录~username
:代表 username 这个用户的家目录
/lib<qual>
:用来存放与/lib
不同的格式的二进制函数库,例如支持 64 位的/lib64
/root
:root 的家目录
- FHS 没有规定,但仍重要的目录
/proc
:一个虚拟文件系统,它的内容储存在内存中。存储系统内核、进程信息、外接设备的状态、网络状态/sys
:虚拟文件系统,记录内核和系统硬件信息
- FHS 要求必须存在的目录
/usr
:UNIX Software Resource 内部数据不可分享、不可变动。是 UNIX 操作系统软件资源所放置的目录,所有软件的数据应该合理的放置在此目录下的子目录中- FHS 要求必须存在的目录
/usr/bin
:所有一般用户能够使用的命令。FHS 要求在此目录下不能有子目录/usr/lib
:与/lib
相同,由其链接到该目录/usr/local
:系统管理员在本机将自己的软件安装到此目录/usr/sbin
:非系统正常运行所需要的命令。由/sbin
链接到此目录/usr/share
:放置只读的数据文件,不分系统架构都可读取的文本文件,以及共享文件/usr/share/man
:在线帮助文件/usr/share/doc
:软件的说明文档/usr/share/zoneinfo
:与时区有关的时区文件
- FHS 建议可以存在的目录
/usr/games
:与游戏相关数据/usr/include
:C/C++ 等语言的头文件和包含文件,在我们用 Tarball(*.tar.gz)的方式安装软件时会用到/usr/libexec
:不被一般用户常用的执行文件和脚本/usr/lib<qual>
:由/lib<qual>
链接到此目录/usr/src
:一般将源代码放置在这里,内核源代码放在/usr/src/Linux
- FHS 要求必须存在的目录
/var
:该目录主要存放在系统运行时经常变动的内容,包括缓存和日志以及一些运行产生的文件- FHS 要求必须存在的目录
/var/cache
:应用程序缓存/var/lib
:执行过程中需要用到的数据文件,此目录下各软件有各自的目录/var/lock
:某些设备或资源的进程锁/var/log
:日志文件,非常重要/var/mail
:放置个人电子邮箱,该目录与/var/spool/mail
互为链接/var/run
:某些程序或服务启动后,会将它们的 PID 放在此目录下,此目录链接到/run
/var/spoot
:放置一些队列数据
- FHS 要求必须存在的目录
文件与目录管理
相关指令
目录相关
cd
:切换目录pwd
:显示当前目录mkdir
:建立一个新目录rmdir
:删除一个空目录
环境变量 $PATH
:PATH = "${PATH}:dir"
可以将 dir
路径添加到环境变量。不同身份的用户默认的 PATH
不同。目录 .
最好不要放到环境变量中。
文件相关
cp
:复制-i
:若目标文件存在,则会在覆盖时进行询问-l
:进行硬链接的链接文件建立-p
:连同属性一起复制(权限、用户、时间),备份常用-r
:递归复制,用于目录
rm
:删除mv
:移动basename
:获得文件名dirname
:目录名
查看文件内容
cat
:直接查看一个文件的内容-n
:打印出行号
tac
:反向打印nl
:添加行号,比cat -n
好看more
:一页一页的翻页查看- 空格:下一页
- 回车:向下翻一行
- /字符串:向下查找
:f
:显示文件名和行数q
:退出b
:往前翻一页
less
:比more
灵活一些
非纯文本文件
od
命令与文件查找
which [-a] [command]
:在环境变量内查找某一命令,-a
将所有找到的命令列出,而不是第一个find
:全局搜索,速度很慢whereis [-lbmsu]
:主要查找/bin/sbin
以及/usr/share/man
下面的man page
文件-l
:确认whereis
查找了多少目录-b
:只找binary
格式文件-m
:只找在说明文件manual
路径下的文件-s
:只找source
源文件-u
:查找不在上面三个项目当中的其它特殊文件