文件系统&权限控制与部分常用命令
1、Linux 文件系统权限
本节主要参考来源为 《鸟哥的Linux私房菜》 感兴趣的同学拜读一下原著
用户与用户组
引入文件、文件夹权限之前,需要区分Linux有用户与用户组的权限
1. 文件所有者 限制非creater操作文件
2. 用户组 可以限制非本组(同一服务器下其它团队)操作文件
权限
一个典型的目录的权限如drwxrwxr-x. 2 zpx zpx 59 11月 20 21:30 .
以上代码中drwxrwxr-x
第一个字符表示这个对象是文件、目录还是链接文件
- d表示目录
- -表示文件
- l表示链接文件
- b表示设备文件里的可供存储的接口设备
- c表示设备文件里面的串行端口设备如鼠标键盘
rwxrwxr-x
除第一个字符后的所有字符每三个为一组,分别代表用户所有者、文件所属用户组、其他人的权限,组内三个字符分表表示 读、写、执行的权限
2
表示连接数,表示有多少个文件被链接到当前链接的磁盘数据块上(类似c++中引用计数的浅拷贝),具体来讲是表示有多少文件名连接到此节点(inode)
第一个zpx
表示文件所有者、第二个表示文件所属用户组
显然,读取该目录需要read权限,修改任何信息则需要当前用户拥有对该文件、文件夹的write权限
Linux目录
基于Linux开发的产品实在太多,因此制定了FHS(Filesystem Hierarchy Standard)标准规范每个特定目录线应该放置什么样的数据。
具体讲:FHS规定了根目录/,/usr以及/var三者的数据放置规范,其他由开发者自行配置
FHS将目录定义为四种形态,举例如下
- | - | - |
---|---|---|
可分享的 | 不可分享的 | |
不变的 | /usr 软件放置处 | /etc 配置文件 |
/opt 第三方软件 | /boot 开机与内核文件 | |
可变的 | /var/mail 用户邮件信箱 | /var/run 程序相关 |
/var/spool/news 新闻组 | /var/lock 程序相关 |
具体来讲,FHS规定了根目录下有如下目录及其含义
- | - |
---|---|
/bin | 放置执行文件,此目录放置单用户维护模式还能被操作的命令 |
如cat、chmod、chown、date、mv、mkdir等 | |
/boot | 放置开机使用的文件,包括Linux内核文件以及开机菜单与开机所需配置文件 |
/dev | 放置任何设备与接口设备的文件(Linux任何设备与接口设备以文件的形式存在 |
/etc | 放置系统几乎所有的配置文件,如账号密码、服务的起始文件等。 |
/home | 系统默认的用户主文件夹 |
/lib | 放置开机时用到的函数库,以及在/bin或/sbin下面的命令会调用的函数库 |
/media | 放置可删除的设备,包括光盘等 |
/mnt | 放置暂时挂载的额外的设备 |
/opt | 给第三方软件放置的目录,如安装KDE桌面到此目录下 |
/root | 系统管理员的主文件夹 |
/sbin | 放置只有root使用的命令涉及开机、修复、还原系统等 |
服务器软件程序放置到/usr/sbin/中 | |
本机安装第三方软件产生的系统执行文件放在/usr/local/sbin/中 | |
/srv | server的缩写,是一些网络服务启动后,这些服务所需的数据目录 |
形如/srv/www/放置www服务所需的网页数据 | |
/tmp | 放置用户或正在执行的程序临时放置文件的地方,可以被任何人访问 |
除了FHS标准规定之外,根目录下还有常用目录如下
- | - |
---|---|
/lost+found | 使用ext2/ext3文件系统格式下会产生的一个目录 |
目的在于当文件系统发生错误时,保存丢失的片段 | |
/proc | 该目录本身为一个虚拟文件系统,其数据全部中内存中 |
如系统内核、进程、外部设备的状态及网络状态等,本身不占任何硬盘空间 | |
/sys | /sys也是一个虚拟文件系统,主要记录与内核相关的信息 |
如当前已加载的内核模块与内核检测到的硬件设备信息等 |
值得强调的是,由于开机仅挂载根目录,与开机有关的目录有
- /etc 配置文件
- /bin 重要执行文件
- /dev 所需要的设备文件
- /lib 执行文件所需的函数库以及内核所需的模块
- /sbin 重要的系统执行文件
FHS还规定/usr和/var
分别如下
- | - |
---|---|
/usr/X11R6/ | X Window系统重要数据放置的目录(11R6表示第十一版第六次释出) |
/usr/bin/ | 放置绝大部分用户可以使用的命令 |
/usr/include/ | 放置c/c++等程序语言的头文件(header)与包含文件(include) |
/usr/lib/ | 包含应用软件的函数库、目标文件以及不被一般用户使用的执行文件或脚本文件 |
/usr/local/ | 系统管理员自行安装的软件,如将系统自带的python2.7升级到新版本 |
/usr/sbin/ | 非系统正常运行所需的系统命令,如网络服务器软件的服务命令 |
/usr/share/ | 放置共享文本文件 |
/usr/src/ | 放置非内核的程序源码 |
值得强调的是,与/usr目录不同,/var放置经常变动的文件,常常随系统运行慢慢变大
- | - |
---|---|
/var/cache/ | 应用程序运行过程中产生的临时文件 |
/var/lib/ | 程序执行过程中需要用到的数据文件 |
/var/lock/ | 放置防止两个程序同时使用一个设备或文件可能产生的错误情况的将设备上锁的文件 |
/var/log/ | 放置登陆日志文件 |
/var/mail/ | 放置电子邮箱的目录,与/var/spool/mail/目录互为连接文件 |
/var/run/ | 放置某些程序或服务启动后的PID |
/var/spool/ | 放置队列数据,如电子邮件,被使用后会被删除 |
2.部分系统常用命令简介
具体使用见man手册
du
显示每个文件和目录的磁盘使用空间。
df
显示指定磁盘文件的可用空间。
top
常用的性能分析工具
free
查看内存使用情况
pstack
显示每个进程的栈跟踪
su, sudo(sudo -, sudo -s)
超级用户权限执行命令
adduser
账户管理
password
登陆密码管理