Linux_《Linux命令行与shell脚本编程大全》第七章学习总结

时间: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:改变文件的默认属组(属于哪个用户组)
    原文作者:妙手空空
    原文地址: https://segmentfault.com/a/1190000010649023
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞