《Linux命令行与shell脚本编程大全》 第7章

第7章:理解Linux文件权限

Linux沿用了Unix文件权限的办法,允许用户和组根据每个文件和目录的安全性设置访问文件

7.1Linux的安全性

Linux系统会为各种各样的功能创建不同系统账户,用户账户被分配唯一的用户ID(UserID=UID)

Linux系统中root账户的UID通常是0

Linux为系统预留了500以下的UID值,普通用户创建账户时,大多数Linux会将500起始的第一个可用UID分配给这个账户(未必适用所有Linux发行版)

7.1.1/etc/passwd文件

在这里插入图片描述
1)登录用户名

2)用户密码(密码都被设置为x形式)【一般保存在/etc/shadow文件中】

3)用户账户的UID(数字形式)

4)用户账户的GID(数字形式)

5)用户账户的文本描述(称为备注字段)

6)用户HOME目录的位置

7)用户的默认shell

7.1.2/etc/shadow文件

在这里插入图片描述

/etc/shadow每条记录有9个字段,包括

1)与/etc/passwd文件中登录名对应的登录名

2)加密后的密码

3)自1970年1月1日(上次修改密码的日期)到当天的天数

4)多少天后才能更改密码

5)多少天后必须更改密码

6)密码过期前提前多少天提醒用户更改密码

7)密码过期后多少天禁用用户账户

8)用户账户被禁用的日期,用自1970年1月1日到当天的天数表示

9)预留字段,给将来使用

7.1.3添加新用户

语法:
useradd

常使用命令:
useradd username -m -s /bin/bash -d /home/username -g groupname

参数 描述

-c cmoment 给新用户添加备注

-d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录)

-D 创建新用户时的默认值(系统默认值被设置在/etc/default/useradd文件中【useradd -D或/usr/sbin/useradd -D查看】)
在这里插入图片描述

新用户会默认添加到GID为100的公共组

其中的SKEL说明:

userad允许用户创建一个默认的HOME目录配置,以SKEL指定的目录下文件作为模板,自动在每个新用户HOME中放置
在这里插入图片描述

-e expire_date 用YYYY-MM-DD格式指定一个账户过期的日期

-f inactive 指定这个账户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁用,-1表示禁止这个功能

-g initial_group 指定用户登录组的GID或组名

-G group 指定用户除登录之外所属的一个或多个附加组

-k 必须和-m一起使用,将/etc/skel目录内容复制到用户的HOME目录

-m 创建用户的HOME目录(默认创建新用户时不创建HOME目录)

-M 不创建用户的HOME目录(当默认设置里指定创建时,才用到)

-n 创建一个同用户登录名同名的新组

-r 创建系统账户

-p passwd 为用户账户指定默认密码

-s shell 指定默认的登录shell

-u uid 为账户指定一个唯一的UID

修改系统默认值:

useradd -D加如下参数可以修改默认的系统新用户值

参数 描述

-b default_home 更改默认的创建用户HOME目录的位置

-e expiration_date 更改默认的新账户过期的日期

-f inactive 更改默认的新用户从密码过期到账户被禁用的天数

-g group 更改默认的组名称或GID

-s shell 更改默认的登录shell

7.1.4 删除用户

语法:
userdel:默认只会删除/etc/passwd文件中的用户信息,而不会删除用户的任何文件

-r:删除用户的HOME目录及mail目录

7.1.5 修改用户

用户账户修改工具:
在这里插入图片描述

usermod

-c:修改备注字段

-e:修改过期日期

-g:修改默认的登录组

-l:修改用户账户的登录名

-L:锁定账户,用户无法登录

-p:用来修改账户密码

-U:解除锁定

usermod参数众多,非常强大,下面给出一些最常用的实例:

usermod -g group user1 #将user1添加到组group中

usermod -l user2 user1 #修改user1的用户名为user2

usermod -L user1 #锁定账号

usermod -U user1 #解除锁定

usermod -s /sbin/nologin user1 #设置账户不能进行登录使用

usermod -s /bin/bash user1 #账户恢复登录使用

值得注意的是usermod -p用来修改密码,千万谨慎,使用usermod -p 后面的接的并不是明文,而是密文,
比如:usermod -p 123 user1,你以为是将user1密码改为123,但登录输入123你会悲催的发现无法登录。

  • passwd、chpasswd

passwd用来修改密码,-e用来强制用户下次登录的时候再次修改密码

chpasswd可以批量导入用户密码,从标准输入读取数据

  • chsh、chfn、chage

chsh用来修改默认的用户登录shell,使用时必须是全路径,不能使用shell名

chfn用来修改/etc/passwd备注字段,会将Unix的finger命令用到的信息存入备注字段

chfn不加参数时,会询问你要存进备注字段的值(出于安全性考虑,很多Linux管理员禁用finger)

chage用来帮助管理用户账户的有效期

参数 描述

-d 设置上次修改密码到现在的天数

-E 设置密码过期的日期(可用来创建临时账户,但是过期之后账户信息还在,类似锁定)

-I 设置密码过期到锁定账户的天数

-m 设置修改密码之间最少要多少天

-W 设置密码过期前多久开始出现提醒信息

chage命令设置日期的格式

1.YYYY-MM-DD

2.从1970年1月1日起到该日期天数的数值

7.2使用Linux组

有些Linux发行版会创建一个组,把所有用户都当成这个组的成员(这种情况要小心)

有些发行版会为每个用户创建一个单独的组,这样更安全(例如Ubuntu)

每个组都有一个唯一的GID和组名

7.2.1/etc/group格式

在这里插入图片描述

组名、组密码、GID、属于改组的用户列表

千万不能直接修改/etc/group来添加用户到一个组,应使用usermod

列表中有些组并没有列出用户,这并不意味着这些组没有成员。

当一个用户在/etc/passwd中指定某个组作为默认组时,用户账户不会作为该组成员出现在/etc/group中

7.2.2创建新组

groupadd

group shared

默认没有属于该组成员,groupadd命令没有提供将用户添加到组的选项

usermod

usermod -G shared rich

添加rich用户到shared组中

-G:只是添加组到用户中,不影响默认组

-g:添加组到用户中,并且替换默认组

(如果更改了以登录的用户所属的组,用户重新登录后才会生效)

7.2.3修改组

groupmod:可以修改已有组的GID或组名

-n:修改组名(可以随意更改,而不会影响安全性)

-g:修改已有组的GID

7.3理解文件权限

文件类型:-文件/d目录/l链接/c字符型设备/b代表块设备/n代表网络设备

访问权限:r可读/w可写/x可执行

组权限顺序:属主/属组/用户
在这里插入图片描述

7.3.1默认文件权限

umask:用于设置创建文件和目录的默认权限
在这里插入图片描述

umask值只是一个掩码,需要将umask值从对象全权限值中减掉,对文件来说该值是:666,目录是:777

sticky bit(黏着位):八进制模式
在这里插入图片描述

7.4改变安全性设置

7.4.1改变权限

chmod

符号模式权限[ugoa][±=][rwxXstugo…]

第一个选项定义了权限作用的对象

u:代表用户

g:代表组

o:代表其他

a:代码上述所有

最后的选项代表作用到设置上的权限

X:如果对象是目录或者它已有执行权限,赋予执行权限

s:运行时重新设置UID或者GID

t:保留文件或目录

u:将权限设置为跟属主一样

g:将权限设置为跟属组一样

o:将权限设置为跟其他用户一样

7.4.2改变所属关系

chown

用来改变文件的默认属组

可用登录名或UID来指定属组

语法:chown options owner[.group] file

可同时改变文件的属主和属组

7.5共享文件

Linux为每个文件和目录存储了3个额外的信息位

设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行

设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目录的默认属组作为默认属组

粘着位:进程结束后文件还会在内存中

SGID可通过chmod设置,加到标准3位八进制值之前,或者在符号模式下用符号s

八进制值 描述

000 -0所有位都清零

001 -1粘着位置位

010 -2SGID位置位

011 -3 SGID位和粘着位都置位

100 -4 SUID位置位

101 -5 SUID位和粘着位都置位

110 -6 SUID位和SGID位都置位

111 -7 所有位都置位

共享目录步骤:

mkdir创建目录>chgrp改变目录的默认属组>设置SGID

注意:所有组成员都需要把他们的umask值设置成文件对属组成员可写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值