时间:2017年08月07日星期一
说明:本文部分内容均摘取自书籍《Linux命令行与shell脚本编程大全》,版权归原作者所有。《Linux命令行与shell脚本编程大全》(第三版)第七章学习总结
第七章:理解Linux文件权限
本章内容:
理解Linux的安全性
解读文件权限
使用Linux组
7.1 Linux的安全性
Linux安全系统的核心是用户账户。每个能进入Linux系统的用户都会被分配唯一的用户账户。用户对系统中各种对象的访问权限取决于他们登录系统时用的账户。
7.1.1 /etc/passwd文件
Linux系统使用一个专门的文件来将用户的登录名匹配到对应的UID值。这个文件就是/etc/passwd文件,它包含了一些与用户有关的信息。
root:x:0:0:root:/root:/bin/bash
root用户账户是Linux系统的管理员,固定分配给它的UID是0.
/etc/passwd文件的字段包含了如下信息:
登录用户名
用户密码(/etc/passwd文件中的密码字段都被设置成了x,即隐藏了密码,
密码单独保存在etc/shadow文件中)
用户账户的UID(数字形式)
用户账户的组ID(GID)(数字形式)
用户账户的文本描述(称为备注字段)
用户HOME目录的位置
用户的默认shell
7.1.2 /etc/shadow文件
/etc/shadow文件对Linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件,每个用户账户都对应一条记录,每条记录中都有9个字段
与/etc/passwd文件中的登录名字段对应的登录名
加密后的密码
自上次修改密码后过去的天数密码(自1970年1月1日开始计算)
多少天后才能更改密码
多少天后必须更改密码
密码过期前提前多少天提醒用户更改密码
密码过期后多少天禁用用户账户
用户账户被禁用的日期(用自1970年1月1日到当天的天数表示)
预留字段给将来使用
7.1.3 添加新用户
命令:useradd
命令格式:useradd test
命令说明:创建一个名为test的用户
7.1.4 删除用户
命令:userdel
命令格式:userdel -r test
命令说明:删除test用户级test用户的HOME目录
7.1.5 修改用户
用户账户修改工具
usermod:修改用户账户的字段,还可以指定主要组以及附加组的所属关系
passwd:修改已有用户的密码
chpasswd:从文件中读取登录名密码对,并更新密码
chage:修改密码的过期日期
chfn:修改用户账户的备注信息
chsh:修改用户账户的默认登录shell
命令:usermod
常用参数
-c:修改备注字段
-e:修改过期日期
-g:修改默认的登录组
-l:修改用户账户的登录名
-L:锁定用户,使用户无法登录
-p:修改账户的密码
-U:解除锁定,使用户能够登录
命令:passwd
命令格式:passwd test
命令说明:修改test用户的登录密码
命令:chpasswd
命令格式:chpasswd < users.txt
命令说明:批量修改用户名对应的密码,登录名和密码用冒号分隔
命令:chsh、chfn、chage
命令说明:chsh修改默认的用户登录shell、chfn修改备注字段、chage修改密码过期日期
7.2 使用Linux组
7.2.1 /etc/group文件
保存组信息的文件,格式如:root:x:0:root
,字段分别为
组名
组密码
GID
属于该组的用户列表
千万不能通过直接修改/etc/group文件来添加用户到一个组,要用usermod命令
7.2.2 创建新组
命令:groupadd
命令格式:groupadd name
命令说明:创建一个名为name的组
说明:如果更改了已登录系统账户所属的用户组,该用户必须登出系统后再登录,组关系的更改才能生效。
警告:为用户账户分配组时要格外小心。如果加了-g选项,指定的组名会替换掉该账户的默认组。-G选项则将该组添加到用户的属组的列表里,不会影响默认组。
7.2.3 修改组
命令:groupmod
命令格式:groupmod -n name newname
命令说明:将name组的组名修改为newname
命令格式:groupmod -g 505 name
命令说明:将name组的GID修改为505(原来是504)
说明:由于所有的安全权限都是基于GID的,所以可以随意改变组名而不会影响文件的安全性。但不要随意修改组的GID。
7.3 理解文件权限
7.3.1 使用文件权限符
命令:ls
命令格式:ls -l
命令说明:使用ls命令查询Linux系统上的文件、目录和设备的权限。
示例:drwxr-xr-x 3 root root 4096 Jul 25 21:05 java
说明:第一个字段及 drwxr-xr-x 就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象的类型:
-代表文件
d代表目录
l代表链接
c代表字符型设备
b代表块设备
n代表网络设备
之后有3组字符的编码。每一组定义了3中访问权限:
r代表对象是可读的
w代表对象是可写的
x代表对象是可执行的
若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的三个安全级别:
对象的属主:即用户名
对象的属组:即组名
系统其它用户:其它用户
7.3.2 默认文件权限
命令:umask
命令格式:umask
命令说明:查看默认权限
Linux文件权限码
权限:二进制值:八进制值:描述
---:000:0:没有任何权限
--x:001:1:只有执行权限
-w-:010:2:只有写入权限
-wx:011:3:有写入和执行权限
r--:100:4:只有读取权限
r-x:101:5:有读取和执行权限
rw-:110:6:有读取和写入权限
rwx:111:7:有全部权限
文件来说:全权限是666表示所有用户都有读和写的权限
目录来说:全权限是777表示所有用户都有读、写、执行权限
命令格式:umask 026
命令说明:设置默认文件权限为 666-026=640,目录权限为 777-026=751。
7.4 改变安全性设置
7.4.1 改变权限
命令:chmod
命令格式:chmod +x dir
命令说明:给dir目录赋执行权限
命令格式:chmod +x shell.sh
命令说明:给shell.sh文件赋执行权限
7.4.2 改变所属关系
命令:chown
命令格式:chown owner file
命令说明:改变文件的属主
命令示例:chown test demo.sh
命令说明:将demo.sh文件的属主修改为test用户为属主
命令:chgrp
命令格式:chgrp group file
命令说明:改变文件的默认属组
命令示例:chown grouptest demo.sh
命令说明:将demo.sh文件的默认属组修改为grouptest用户组
说明:只有root用户能够改变文件的属主。任何属主都可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员。
7.5 共享文件
命令演示:
命令:mkdir testdir
说明:创建一个名为testdir的目录
命令:chgrp grouptest testdir
说明:改变testdir目录的默认属组为grouptest用户组
现在,grouptest用户组下的所有用户都可以访问testdir下的文件了。
7.6 小结
本章讨论了管理Linux系统安全性需要知道的一些命令行命令。Linux通过用户ID和组ID来限制对文件、目录以及设备的访问。Linux将用户账户的信息存储在/etc/passwd文件中,将组信息存储在/etc/group文件中。每个用户都会被分配唯一的用户ID,以及在系统中识别用户的文本登录名。组也会被分配唯一的组ID以及组名。组可以包含一个或多个用户以支持对系统资源的共享访问。本章介绍了useradd、userdel、usermod、passwd、chpasswd、chsh、chfn、chage、groupadd、groupmod、umask、chmod、chow、chgrp命令。
本章学习命令个人总结如下:
useradd:添加新用户
userdel:删除用户
usermod:修改用户账户的字段,还可以指定主要组以及附加组的所属关系
passwd:修改已有用户的密码
chpasswd:批量修改用户密码
chsh:修改用户账户的默认登录shell
chfn:修改用户账户的备注信息
chage:修改密码的过期时间
groupadd:创建新组
groupmod:修改组
umask:显示和设置默认权限
chmod:改变文件和目录的安全性设置
chow:改变文件的属主(属于哪个用户或用户组)
chgrp:改变文件的默认属组(属于哪个用户组)