Linux 权限规则及磁盘了解
Linux permission rules and disk understanding.
声明:试验环境为 debian9 且为物理机。如果你使用的是其它发行版,在此随笔记录的内容中可能会与你系统产生差别,具体请发行版为主,但主要的还是没变的,本随笔仅供参考!
1.磁盘基本概念:
磁盘主要由三个基本要素构成,柱面(cylinder),扇区(sector),磁头(head)。
磁盘在 Linux 中的表示;linux 所有设备都被抽象成一个文件,保存在 /dev 目录下;可根据符号去确定设备类型,IDE设备的名称表示为 hd[a-z],SATA/SCSI/SAS/USB等设备的名称表示为 sd[a-z]。对磁盘做了一个基本的了解后就可以对磁盘进行分区了,主要的两大分区机制 MBR && GPT 已经在前面的随笔写过了,有需要地朋友可以前面查看。
2. linux 用户及权限:
用户的概念,用于限制使用者或进程可以使用及不可以使用的哪些资源。
用户分为以下三类:
root --- ID 为 0。
系统 --- ID 为 1-499。
普通 --- ID 为 500 以上。
系统中的文件都有一个所属用户及所属组,通过用户的模式对文件或者访问者进行权限的限制,合理利用的系统资源,规避风险。
与用户信息相关的三个重要文件,在添加删除更改用户及组时需要用到的文件呐:
/etc/passwd ,保存用户信息。
/etc/shadow ,保存用户密码,被加密过的,不会明文保存的。
/etc/group ,保存组信息。
创建用户,使用 useradd 命令,此命令会执行以下操作:
a-- 在/etc/passwd 文件下添加用户信息。
b-- 如果使用 passwd 命令创建密码,则将密码保存在 /etc/shadow 文件中。
c-- 为用户建立一个新的家目录;注意不同的发行版根据命令添加的参数不一样所导致的结果也不一样,请一定细心呢。
d-- 将 /etc/skel 中的文件复制到用户的家目录中。
修改用户信息,使用 usermod 命令。
删除用户信息,使用 userdel 命令,在使用该命令时,不加参数是不会主动去删除用户的家目录的,需要手动执行;可以添加 -r 参数在删除用户信息时同时删除用户家目录。
组的添加修改及删除使用以下三个命令:
groupadd
groupmod
groupdel
------------------------我是美丽的分割线-------------------------------在聊完了用户及组的基本操作后,瞎谈关于权限的问题呗,都知道权限实质是和用户挂钩的。------------------------
权限是操作系统用来限制对资源访问的机制,权限一般分为读,写,执行;系统中每个文件都拥有特定的权限,所属用户及所属组,通过这样的机制去限制哪些用户哪些组可以对特定文件进行什么样的操作。
进程的权限==用户的权限,因为每个进程都是以某个用户的身份运行。
在 linux 中,每个文件拥有三种权限:
1.r ,表示可读取文件内容(操作对象文件),可列出目录内容(操作对象目录)。
2.w ,表示可修改文件内容(操作对象文件),可在目录中创建删除文件(操作对象目录)。
3.x ,表示可作为命令执行(操作对象文件),可访问目录内容(操作对象目录)。
linux 权限基于 UGO 模型进行控制:
U 表示 user ,G 表示 group ,O 表示 other;每一个文件的权限基于 UGO 模型进行设置,权限三位(rwx)一组,对应 UGO 分别设置;每一个文件拥有所属用户和所属组,对应 UG ,不属于该文件所属用户及所属组的使用 O 权限。
UGO 模型的对应位说明:
-rw-r--r-- 1 dewey dewey 0 Mar 31 20:05 nihao.txt 【分别相对应以下说明】
UGO 链接数量 所属用户 所属组 大小 时间 文件名或者目录
关于 -rw-r--r-- 的注明:
第0位表示文件类型,第123位表示 user 权限,第456位表示 group 权限,第789位表示 other 权限。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
修改文件所属用户及组:
chown ,改变文件的所属用户。
chgrp ,改变文件的所属组。
chmod ,修改文件权限,同时也支持以数值方式修改权限;读写执行分别表示为: rwx==421
Linux 下的文件及目录的默认权限,每一个终端都拥有一个 umask 属性,用以确定新建文件及目录的默认权限。目录的默认权限是777-umask ,文件的默认权限是666-umask 。
Linux 下还具有三类特殊权限,用于限制用户的行为,分别是:
1. suid ,以文件的所属用户身份执行,而非执行文件的用户(操作对象为文件);对目录无影响(操作对象为目录)。
2. sgid ,以文件所属组身份执行(操作对象为文件);在该目录中创建的任意新文件的所属组与该目录的所属组相同(操作对象为目录)。
3. sticky ,对文件无影响(操作对象为文件);对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其它用户所持有的文件(操作对象为目录)。
设置特殊权限:
suid , 使用命令 chmod u+s 。
sgid , 使用命令 chmod g+s 。
sticky , 使用命令 chmod o+t 。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
例子,练习 chown ,chgrp ,chmod 的命令使用及设置黏贴位;suid && sgid的设置方式一样,仅是实现的功能不同而已。
第一步在/下创建文件夹 linuxcast mkdir linuxcastt 查看此目录的权限为: drwxr-xr-x 1 root root 0 Apr 3 17:48 linuxcast/ 第二步在 linuxcast/ 目录下创建两个文件夹分别是 market && manage 查看两个文件夹的权限为: drwxr-xr-x 1 root root 0 Apr 3 17:51 manage drwxr-xr-x 1 root root 0 Apr 3 17:51 market 通过chgrp 命令改变目录的所属组: chgrp dewey manage/ chgrp wangsusu market/ 此时在查看两个文件夹的所属组已变更为: drwxr-xr-x 1 root dewey 0 Apr 3 17:51 manage drwxr-xr-x 1 root wangsusu 0 Apr 3 17:51 market 此时用户dewey 和 wangsusu 都可以相互访问对方的文件夹。 使用 chmod 命令修改文件的使用权限: chmod o-rx manage/ chmod o-rx market/ 在查看两个文件的权限,此时 other 已没有了读写执行权限了: drwxr-x--- 1 root dewey 0 Apr 3 17:51 manage drwxr-x--- 1 root wangsusu 0 Apr 3 17:51 market 经过这样设置后,用户 dewey 和 wangsusu 不能相互访问对方的文件夹了。 第四步在 linuxcast/ 文件夹下创立文件 early 和 evening 查看两个文件的权限为: -rw-r--r-- 1 root root 0 Apr 3 18:12 early -rw-r--r-- 1 root root 0 Apr 3 18:12 evening 使用 chown 命令改变两个文件的所属用户为 dewey 和 wangsusu 此刻在查看两个文件的权限为: -rw-r--r-- 1 dewey root 0 Apr 3 18:12 early -rw-r--r-- 1 wangsusu root 0 Apr 3 18:12 evening 而在这个时候,linuxcast/ 这个文件夹的权限一直没有改变,所以在这里用户dewey 和 wangsusu 是不能删除对方的文件的,因为两个用户都对 linuxcast/ 这个目录没有写入权限。使用命令 chmod 改变 other 用户对 linuxcast/ 文件夹的写入权限。 chmod o+w linuxcast/ 此时 linuxcast/ 文件夹的权限为: drwxr-xrwx 1 root root 48 Apr 3 18:12 linuxcast/ 这个时候,用户dewey 和 wangsusu 就可以对双方的文件进行删除了,因为考虑到生产环境中,用户需要写权限,而又要避免用户不可以删除其它用户的文件,就只能对父目录设置 sticky 位了。 使用 chmod 命令对文件夹 linuxcast/ 设置黏贴位: chmod o+t linuxcast/ 查看 linuxcast/ 文件夹的权限为: drwxr-xrwt 1 root root 48 Apr 3 18:30 linuxcast/ 仔细看看就能发现 linuxcast/ 文件夹 OTHER的执行权限由 x 变成了 t ;这个时候,用户 dewey 和 wangsusu 仅可以删除自己的文件,不能删除他人的文件呢。 删除结果如下: dewey@debian:/linuxcast$ rm -rf evening rm: cannot remove 'evening': Operation not permitted 提示没有权限。