良许Linux教程网 干货合集 详解Linux shadow文件

详解Linux shadow文件

在linux中,口令文件在/etc/passwd中,早期的这个文件直接存放加密后的密码,前两位是”盐”值,是一个随机数,后面跟的是加密的密码。为了安全,现在的linux都提供了 /etc/shadow这个影子文件,密码放在这个文件里面,并且是只有root可读的。

image-20211125121622679

shadow文件的说明

richy:$6$70rKewE7OH/ZJCRI$TPwG9kLBIzZwKDKckpsnIYSTyXKXwIUplK0xZlPVkMgCxexz1a0rA70DJfD8eWEwOIxwcJuxj7Fr6zdKS/Osn1:17009:0:99999:7:::

1.与/etc/passwd文件中的登录名对应的登录名; 2.加密后的密码;3.自1970年1月1日(上次修改密码的日期)到当天的天数; 4.多少天后才能更改密码; 5.多少天后必须更改密码; 6.密码过期前提前多少天提醒用户更改密码; 7.密码过期后多少天禁用用户账户; 8.用户账户被禁用的日期,用自1970年1月1日到当天的天数表示; 9.预留字段,给将来使用; 使用shadow,Linux系统可以更好的控制用户密码了,他可以控制用户多久更改一次密码,以及密码未更新的话多久禁用该用户账户。

添加新用户

1.查看Linux系统默认的useradd添加值: [root@alone ~]# /usr/sbin/useradd -D GROUP=100==>新用户会被添加到GID为100的公共组 HOME=/home==>新用户的HOME目录将位于/home/账户名 INACTIVE=-1 ==>新用户账户密码在过期后不会被禁用 EXPIRE= ==>新用户账户未被设置为某个日期后就过期 SHELL=/bin/bash==>新用户账户将bash shell 作为默认shell SKEL=/etc/skel ==> 系统会将/etc/skel目录下的内容复制到用户的HOME目录下 CREATE_MAIL_SPOOL=yes==>系统为该用户账户在maill目录下创建一个用于接收邮件的文件

更改默认值的参数: -b default_home更改默认用户HOME目录位置 -e expiration_date更爱用户的过期日期 -f inactive更改用户从密码过期到账户被禁用的天数 -g group更改默认的组名或GID -s shell 更改默认的登录shell 例子:

[root@alone skel]# useradd -D -s /bin/tsch
[root@alone skel]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/tsch
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

删除用户

userdel只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。 如果加上-r参数,userdel 会删除用户的HOME目录及mail目录。然而系统上仍可能存有该用户的其他文件,可能会造成一些问题。 加上-r参数的例子:

[root@alone skel]# /usr/sbin/userdel -r test
[root@alone skel]# ls -al /home/tes
ls: 无法访问/home/tes: 没有那个文件或目录

修改用户

修改用户信息的工具如下 usermod 修改用户账户的字段,可以指定主要组以及附加组的所属关(权限) passwd 修改已有用户的密码 chpasswd 从文件中读取登录名密码对,并更新密码 chage 修改密码的过期日期 chfn 修改用户账户的备注信息 chsh 修改用户账户的默认登录shell

1.usermod

usermod 能用来修改/etc/passwd文件中的大部分字段,只需用相应的参数就行。参数大部分跟useradd命令一样,比如 -c 用来修改过期日期, -g修改默认的登录组:-l 修改用户账户的登录名 -L 锁定账户,这样用户就无法登录了-p修改账户的密码-U 解除锁定,解除后用户能正常登录 以上-L参数尤其适用,用这个参数就能锁定账户,用户就无法登录,而不用删除账户和用户的数据,要让账户恢复正常,只要加-U参数就行。

2.passwd和chpasswd

改变用户的密码最简单就是用passwd命令: [root@alone skel]# passwd test 更改用户 test 的密码 。 新的 密码: 无效的密码: 它基于字典单词 无效的密码: 过于简单 重新输入新的 密码: passwd: 所有的身份验证令牌已经成功更新。

-e`选项能强制用户下次登录时修改密码;
如果需要为系统中大量用户来修改密码,chpasswd命令能让事情简单许多,chpasswd命令能从标准输入自动读取登录名和密码对(冒号分隔)列表,给密码加密,然后为用户账户设置,也可以用重定向命令来将含有`userid:passwd`对的文件重定向给命令:
`[root@alone skel]# chpasswd 

3.chsh、chfn和chage

chsh、chfn和chage工具专门用来修改特定账户信息。chsh命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数,不能只用shell名:

[root@alone skel]# chsh -s /bin/csh test
Changing shell for test.
Shell changed.

chfn不加参数的时候会以此输入提示备注信息。如:“

[root@alone skel]# chfn test
Changing finger information for test.
Name []: ImaTest
Office []: ChongQing
Office Phone []: 88925925
Home Phone []: 88592626
Finger information changed.
[root@alone skel]# tail -2 /etc/passwd
richy:x:500:500:richy:/home/richy:/bin/bash
test:x:501:501:ImaTest,ChongQing,88925925,88592626:/home/test:/bin/csh

chage命令用来帮助管理用户账户的有效期,参数如下: -d 设置上次修改密码到现在的天数 -E 设置密码过期的日期 -I 设置密码过期到锁定账户的天数 -m 设置修改密码之间最少要多少天 -W 设置密码过期前多久开始出现提醒信息 chage命令的日期格式可以用一下两种方式的一种: 1.YYYY-MM-DD格式的日期。 2.代表从1970年1月1日到该日期天数的数值。 技巧:可以通过设置账户的过期日期来创建临时用户。过期账户和锁定账户相似,账户仍然存在,但是无法登录。

使用Linux组

1./etc/group文件

[root@alone skel]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:

/etc/group文件包含4个字段 组名:组密码:GID:该组的用户 -组密码允许非组内成员通过它临时成为该组的成员,但不常用。 -不能直接修改/etc/group文件来添加组,而要使用usermod命令来添加。添加用户到组时,需先创建组。

2.创建新组

使用groupadd命令

[root@alone skel]# /usr/sbin/groupadd shared
[root@alone skel]# tail /etc/group
fuse:x:494:
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
sshd:x:74:
tcpdump:x:72:
slocate:x:21:
richy:x:500:
test:x:501:
shared:x:502:

创建组时,默认没有用户属于该组成员。groupadd命令没有提供将用户添加到组的选项,但可以使用usermod命令来添加用户到组:

[root@alone skel]# /usr/sbin/usermod -G shared richy
[root@alone skel]# /usr/sbin/usermod -G shared test
[root@alone skel]# tail -3 /etc/group
richy:x:500:
test:x:501:
shared:x:502:richy,test

usermod的-G命令会把这个新组添加到该用户账户的组列表里。(组关系更改生效,必须注销重新登录)。注意:如果是-g参数,指定的组名会替换该账户的默认组。-G参数则是将改组添加到用户的属组列表里,而不影响默认组。

3.修改组

groupmod 可以修改已有组的GID(加-g参数)或者组名(加-n参数):

[root@alone skel]# tail -2 /etc/group
test:x:501:
sharing:x:502:richy,test

修改组名时,GID和组成员不会变,只有组名变。由于所有的安全权限都是基于GID的,你可以随意改变组名而不会影响文件的安全性。

文件的权限

1.使用文件权限符号

– 代表文件; d 代表目录; l 代表连接;c 代表字符型设备; b 代表块设备; n 代表网络设备;

2.默认文件权限

umask 的使用,文件的全权限为 666 目录的全权限为 777 umask 0022说明: 第一位为特殊安全选项 第二位是属主权限 第三位是属组权限 第四位是其他用户权限 umask的值是掩码形式,他会屏蔽掉不需要的权限,若想文件为644(即rw-r–r–),文件的掩码就是022(666-644),

[root@alone testdir]# ls -ld /root/testdir
drwxr-xr-x. 2 root root 4096 7月  28 10:05 /root/testdir

(即是 0026)由于目录默认权限时777,umask作用后生成的目录权限不同于生成的文件权限,umask值是026会从777中减去,留下来751作为目录权限设置。

3.改变安全性设置

[root@alone testdir]# chmod 760 newfile
[root@alone testdir]# ls -l newfile
-rwxrw----. 1 root root 0 7月  28 10:10 newfile

chmod的作用对象有 u(属主) g(属组) o(其他用户) a(所有) 。 chmod权限的增加(+)、移除(-)、重置为(=)。 chmod权限设置符号 x(赋予执行权限)、s(运行时重置UID或GID)、t(保留文件或目录)、u(权限设置为属主一样)、g(权限设置为属组一样)、o(权限设置为其他用户一样)。

[root@alone testdir]# chmod o+r newfile
[root@alone testdir]# ll newfile
-rwxrw-r--. 1 root root 0 7月  28 10:10 newfile
[root@alone testdir]# chmod u-x newfile
[root@alone testdir]# ll newfile
-rw-rw-r--. 1 root root 0 7月  28 10:10 newfile

chmod可以使用-R来递归的作用到文件和子目录,可以在指定文件名时使用通配符同事作用多个文件

4.改变所属关系

chown options owner[.group] filename
例如: [root@alone testdir]# chown dan newfile
[root@alone testdir]# ll newfile
-rw-rw-r--. 1 dan root 0 7月  28 10:10 newfile
[root@alone testdir]# chown dan.sharing newfile
[root@alone testdir]# ll newfile
-rw-rw-r--. 1 dan sharing 0 7月  28 10:10 newfile
不嫌麻烦可以用以下命令改变默认属组: [root@alone testdir]# chown .test newfile
[root@alone testdir]# ll newfile
-rw-rw-r--. 1 dan test 0 7月  28 10:10 newfile
chown带-R参数加通配符可以递归的改变子目录和文件的所属关系,-h参数可以改变该文件的所有符号链接文件的所属关系。
chgrp命令更方便的改变文件或目录的默认数组: [root@alone testdir]# chgrp sharing newfile
[root@alone testdir]# ll newfile
-rw-rw-r--. 1 dan sharing 0 7月  28 10:10 newfile

5.共享文件

最基本的方法是通过创建组来共享访问权限的方法。 大环境中共享方法:
-设置用户ID (SUID):当文件被用户使用时,会以文件属主权限运行。
-设置组ID(SGID):对文件来说,程序会以文件属组权限运行,对目录来说,目录中创建新文件会以目录的默认属组作为默认属组。
-粘着位:进程结束后文件还会在内存中
例子:
[root@alone testdir]# mkdir sss
[root@alone testdir]# ls -l
总用量 4 -rw-r--r--. 1 root root 0 7月 28 10:26
abc -rw-rw-r--. 1 dan sharing 0 7月 28 10:10 newfile
drwxr-xr-x. 2 root root 4096 7月 28 10:51 sss
[root@alone testdir]# chgrp sharing sss
[root@alone testdir]# chmod g+s sss
[root@alone testdir]# ls -ld sss
drwxr-sr-x. 2 root sharing 4096 7月 28 10:51 sss
[root@alone testdir]# umask 002
[root@alone testdir]# cd sss
[root@alone sss]# touch onetext
[root@alone sss]# ls -l
总用量 0
-rw-rw-r--. 1 root sharing 0 7月 28 10:53 onetext
首先,用mkdir创建共享的目录,
其次通过chgrp将默认属组改为含有需要共享用户的组,
最后将目录的SGID位置位,以保证目录中新建文件都用sharing作为默认组。
为了让这个环境正常工作,所有组成员都需要把它们的umask值设置成文件对属组成员可写(002)。
这样,组成员就能共享目录下创建文件,并且新文件沿用目录的属组,而不是用户的属组,
所有sharing组的用户都有访问权限。

—————-小结———————

账户信息 /etc/passwd 组信息 /etc/group 创建新用户 useradd 创建新组 groupadd 修改已有账户 usermod 修改组账户信息 groupmod 3个安全等级 rwxr–r– 默认权限设置 umask (掩码规则-文件666,目录777) chmod 修改文件或目录的安全设置(只有文件的属主才能修改属主和属组,或者root用户) SGID强制某个目录下创建的新文件或目录都沿用该父目录的属组(共享简便方法)。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部