Lunix文件权限和目录配置
1. 本章涉及到的简单命令
1. su 切换身份
2. ls -al 查看文件及其属性
3. chgrp 改变文件所属群组 chgrp user(群组) password.txt
4. chown 改变文件拥有者 chowm xiaoming test.txt / chowm xiaoming:user password.txt
5. chmod 改变文件的权限 chmod 774 test.txt / chmod u=rwx,go=rw password.txt / chmod a+x password.txt
6. copy 复制文件 copy 源文件 目标文件
7. mkdir 创建目录 mkdir home
8. touch 修改文件或者目录的时间属性,若文件不存在,系统会建立一个新的文件 touch test.txt
2. Lunix文件权限
2.1 文件的属性
2.1.1 第一栏代表文件的类型,基本包括:
- :一般文件(硬链接)
l :符号链接(软链接,可使用带有-s选项的ln命令来创建一个软链接)
d :目录
c :字符设备文件
p :命名管道
s :套接字
b :块设备特殊文件
注:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』,可使用 ls -al 查询出来。
2. 1.2 权限数字对应关系
r:4
w:2
x:1
2.2 如何改变属性和权限
chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限
3 Lunix目录配置
3.1 Filesystem Hierarchy Standard (FHS)文件系统目录标准
可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
不可分享的:自己机器上面运作的装置文件或者是与程序有关的 socket 文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了;
不变的:有些数据是不会经常变动的,跟随着 distribution 而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等;
事实上,FHS 针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录
的定义:
/ (root, 根目录):与开机系统有关;
/usr (unix software resource):与软件安装/执行有关;
/var (variable):与系统运作过程有关。
3.2 根目录
/bin:存放着可执行的用户命令的目录,所有用户都可使用,主要有:cat、chmod、chown、date、mv、mkdir、cp、bash等常用命令。注意到 /bin 的文件属性为链接文件,原文件的位置是 /usr/bin,是因为新的CentOS 7 已经将全部的用户命令放置于此。也就是说,bin 与 usr/bin 是一摸一样的
/boot:开机启动文件与Linux内核文件目录。
/dev:设备与接口文件目录。
/etc:存放系统配置文件的目录,如账号密码文件、各种服务的启动文件。只有 root 有权利修改。
另外,FHS建议不要放置可执行文件(binary)在这个目录。
/lib:(library)函数库文件目录,存放开机启动时会用到的函数库,以及在 /bin 或 /sbin 下面的用户命令会调用的函数库。同样该文件是链接文件,原文件为 /usr/lib
/lib64:存放与 /lib 不同的二进制函数库,该文件为支持64位的函数库。
/media:(媒体),该文件下放置的是可删除设备,如光盘、DVD等设备暂时挂载于此。该文件下为自动挂载,比如U盘插入电脑,会自动在 /media 下生成一个目录,该目录就是U盘所在的目录。
/mnt:是被系统管理员使用,手动挂载一些临时媒体设备的目录。
/opt:第三方辅助软件放置目录。
/run:用来存放系统启动后所产生的各项信息。
/sbin:启动过程中需要的文件,包括启动、修复、还原系统所需的命令。同意,该文件为链接文件,原文件位置为 /usr/bin。
/srv:(service)一些网络服务启动后,这些服务所需要使用的数据目录。
/tmp:一般用户正在执行的程序暂时放置文件的地方,需要定时清理。FHS建议启动时将 /tmp 下的数据都删除。
/home:系统默认的用户家目录(home directory),新增一个账号,默认用户的家目录都会规范到这里。
/root:系统管理员(root)的家目录。
/proc:该目录本身是一个虚拟文件系统,它放置的数据都是在内存当中,如系统内核、进程信息、外接设备状态及网络状态,所以本身不占用任何硬盘空间。
/sys:和 /proc很相似,也是一个虚拟文件系统,主要记录内核与系统硬件信息相关内容,同样不占用硬盘空间。
3.3 用户目录
/user : Unix操作系统软件资源所放置的目录,是安装时会占用较大硬盘容量的目录
/usr/bin:一般用户能够使用的命令都放置于此。另外,FHS要求该目录下不应有子目录。
/usr/lib:与 /lib 功能相同,所以 /lib 就是链接到此目录中
/usr/local:安装自己下载的软件,建议安装到此目录。
usr/sbin:与 /sbin 功能相同,/sbin 就是链接到此目录中。
/usr/share:主要放置只读的数据文件
/usr/games:与游戏相关的数据放置处。
/usr/include:c/c++等程序语言头文件(header)与包含文件(include)放置处。
/usr/libexec:某些不被一般用户执行的文件或脚本都会放置在此目录,如大部分X窗口下面的操作命令,很多都是在此目录下。
/usr/lib64:与 /lib64 功能相同, /lib64就是链接到此目录中。
/usr/src:一般源代码建议放置到这里,内核源码则在 usr/src/Linux 目录下。
3.3 /var目录
/var:主要针对经常变动的文件,如缓存、日志文件、软件运行所产生的文件
/var/cache:应用程序运行中产生的缓存放置的目录。
/var/lib:应用程序执行过程中,需要使用到的数据文件放置的目录。
/var/lock:某些设备文件一次只能被一个应用程序使用,因此将该设备上锁,确保只会给单一软件使用。第二个程序想使用,只能等设备解除锁定(第一个程序用完)。
/var/log:日志文件放置的目录。
/var/mail:放置个人电子邮箱的目录。
/var/run:某些程序或服务启动后,会将它们的 PID 放置在这个目录下。
/var/spool:该目录通常放置一些队列数据(排队等待其他程序使用的数据)。
FHS 标准建议:
根目录(/)所在分区槽应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区槽内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。