Linux真香
- 0. 一些实验的基本操作
- 1. 用户与用户组
- 2. 属性与权限
- 2.1 基本概念
- 2.2 改变属性与权限
- 3. 目录配置
- 3.1 FHS(Filesystem Hierarchy Standard)
- 3.2 目录树
- 3.3 绝对路径和相对路径
0. 一些实验的基本操作
代码语言:javascript复制#显示当前目录地址,-P表示显示正确的完整路径,并非连接路径
pwd [-P]
#创建一个文件夹,-p表示递归创建,可以在filename中输入一个路径,-m表示自行配置文件的权限
mkdir [-p/-m] ${filename}
#删除文件夹,-p表示连同上层“空的”目录也一起删除,可以在filename中输入一个路径,-r表示目录“非空”也删除
rmdir [-p] ${filename}
rm -rf ${filename}
#移动多个文件
mv ${filename1} ${filename2} -t ${menu}
1. 用户与用户组
引入用户 Linux是一个多用户、多任务的系统,由于常常会有多个人同时使用这台主机,所以“文件所有者”的角色就显得非常重要,我们可以管理自己的隐私和适应的工作环境。Linux根据uid来标记用户,而用户的名字只是为了我们能够一目了然。
引入用户组 Linux既然是多用户、多任务的系统,这就很适合团队开发,既然要团队开发资源,用户组就可以很容易的管理你的团队,并且每个用户可以有多个用户组,这很符合现实情况。
至此,Linux就有个三种身份:User(u)、Group(g)、Others(o)。 这里需要提前说明一下,为了更好的管理系统,Linux还设置了一个“万能的用户”——root。
代码语言:javascript复制/etc/passwd #存放用户信息
/etc/shadow #存放加密后的密码
/etc/group #存放用户组
2. 属性与权限
2.1 基本概念
有了不同的用户身份是不够的,Linux自然地引入了权限。
通过ls -al
可以查看包含隐藏文件(.)在内的目录下的文件属性。
drwxr-x--- 3 root root 4096 Apr 15 15:00 linuxtest
[ 1 ][2][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
1: 10个字符,第一个是文件类型([d]为目录,[-]为文件,[l]为连接文件),后九个分别为所有者、用户组、其他用户的权限,其中rwx为具体权限
2: 有多少文件链接到此节点(i-node)
3: 文件的所有者
4: 文件所有者所在的用户组
5: 文件容量,单位为B,单一最大容许文件名为255字符,完整文件名为4096字符
6: 最近修改日期,`-l --full-time`可以查看完整时间格式
7: 文件名,Linux文件名要做到见名知意,所以一般名称一般很长
- 目录的权限
r:针对
ls
而言,能否通过命令查看; w:是否可对该目录下面的文件名变动,如新建、删除、重命名、移动文件或目录; x:针对cd
而言,能够进入该目录成为工作目录。所以目录能够开放浏览,需要同时给予r和x权限。 - 文件的权限 r:读取文本文件的文字内容; w:编辑、增加、修改改文件的内容,但是不包括删除该文件(删除文件的权限在目录权限下); x:文件能否被执行,这里与Widows系统不一样,文件能否被执行取决于权限,而并非文件后缀名。而且,文件能否被执行和执行成功与否是不同的。
2.2 改变属性与权限
首先给出三种改变权限的命令:
代码语言:javascript复制#-R表示递归(recursive)的持续更改
chgrp [-R] ${group} ${dirname/filename} #改变文件/目录的用户组
chown [-R] ${account} ${dirname/filename} #改变文件/目录的所有者
chown [-R] ${account}:${group} ${dirname/filename} #改变文件/目录的所有者和用户组
chmod [-R] ${authority} ${dirname/filename} #改变文件/目录的三状态权限
这里针对chmod
中的权限可以用三个数字来表示:r—4,w—2,x—1,三个数字的顺序分别代表owner、group、others。
此外,为了特殊情况的方便操作,我们也可以使用符号类型来对权限进行修改:
代码语言:javascript复制chmod u/g/o/a /-/= r/w/x ${dirname/filename}
具体的用法可以是:
- 枚举:
chmod u=rwx,go=rx linuxtest
- 只增减某些:
chmod a-x linuxtest
3. 目录配置
3.1 FHS(Filesystem Hierarchy Standard)
目的:让用户可以了解到已安装软件通常放置于哪个目录下。
分类:目录从两个维度下可以分成static、variable
和shareable、unshareable
两大类。
FHS所定义的三层主目录为/、/var(动态的,分享/不可分享)、/usr(静态的、可分享)
3.2 目录树
开机过程中仅有根目录会被挂载,有五个目录不可与根目录放在不同的分区,分别是:/etc(配置文件)、/bin(执行文件)、/lib(库函数、内核模块)、/dev(设备文件)、/sbin(系统执行文件)。
特性:
- 目录树的起点为/;
- 每一个目录不只能使用本地端的文件系统,也可以使用网络上的文件系统;
- 没有给文件在此目录树中的文件名(包含完整路径)都是独一无二的。
/:与开机、还原、系统修复等操作有关,/所在分区越小越好,越不易发生问题。 bin:放置单用户维护模式下还能够被操作的必备执行文件,如cat、chmod、mv、bash等常用命令。 boot:Linux内核文件(vmlinuz)以及开机菜单与开机所需配置文件等。 dev:任何设备与接口都以文件的形式存在于此。 etc:系统主要的配置文件,可查阅,仅root有权利修改。一般不要放置可执行文件。 home:系统默认的用户主文件夹。 lib:在开机时会用到的函数库,以及在/bin或/sbin下面才会调用的函数库。 media:放置可删除的设备。 mnt:暂时挂载某些额外的设备。 opt:放置第三方软件。 root:系统管理员的主文件夹。 sbin:系统管理的必备执行文件,开机、修复、还原系统中所需要的命令,如reboot、init、ifconfig。 srv:网络服务启动后需要的数据目录。 tmp:一般用户或者正在执行的程序暂时放置文件的目录。 lost find:使用标准的ext2/ext3才会产生的目录,当文件系统发生错误时,将一些丢失的片段放置到该目录下。 proc:虚拟文件系统,系统内核、进程、外部设备的状态及网络状态等。 sys:虚拟的文件系统,记录与内核相关的信息。 usr:(Unix Software Resource)系统刚安装完毕时占用最多的硬盘容量的目录,不要自行新建该软件自己独立的目录,应在其子目录下操作。 X11R6:X Window系统重要数据存放目录。 bin:绝大部分用户命令,与开机无关的。应用程序工具的必备执行文件,如gcc、gzip。 include:C/C 等程序语言的头文件与包含文件放置处。 lib:各应用软件的函数库、目标文件,以及不被一般用户惯用的执行文件或脚本。 local:系统管理员在本机自行安装自己下载的软件目录。 sbin:非系统正常运行所需的系统命令,主要是网路管理的必备执行文件,如netconfig、daemon。 share:放置共享文件。 src:放置源码。 var:系统运行后渐渐占用硬盘容量的目录,针对常态性变动的文件。 cache:应用程序本身运行过程中产生的一些暂存文件。 lib:程序本身执行过程中,需要使用到的数据文件放置的目录。 lock:锁。 log:放置登录文件。 mail:放置个人电子邮件信箱的目录。 spool:放置一些队列数据,使用后删除。 run:某些进程或者服务启动后,将它们的PID放置在此。
这里有四个相似的目录:/bin、/sbin、/usr/bin、/usr/sbin,它们都是存放二进制执行文件的目录。具体区分方式是,/下的目录与/usr下的目录的区别在于是否与开机过程有关;bin(binary)与sbin(system binary)的区别在于是否用于系统管理。此外,使用源代码自行编译安装的软件通常位于 /usr/local/bin和/usr/local/sbin中。
3.3 绝对路径和相对路径
绝对路径:由根目录(/)开始写起的文件名或目录名称,如/home/matthew 相对路径:相对于目前路径的文件名写法,与绝对路径的区别在于是不是由根目录写起,如…/home