详解Linux shadow文件

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

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 -DGROUP=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/grouptest: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强制某个目录下创建的新文件或目录都沿用该父目录的属组(共享简便方法)。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/219702.html<

(0)
运维的头像运维
上一篇2025-04-14 05:50
下一篇 2025-04-14 05:51

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注