本篇内容介绍了“Linux的shadow文件有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在linux中,口令文件在/etc/passwd中,早期的这个文件直接存放加密后的密码,前两位是”盐”值,是一个随机数,后面跟的是加密的密码。为了安全,现在的linux都提供了 /etc/shadow这个影子文件,密码放在这个文件里面,并且是只有root可读的。
shadow文件的说明
richy:$6$70rKewE7OH/ZJCRI$TPwG9kLBIzZwKDKckpsnIYSTyXKXwIUplK0xZlPVkMgCxexz1a0rA70DJfD8eWEwOIxwcJuxj7Fr6zdKS/Osn1:17009:0:99999:7:::
与/etc/passwd文件中的登录名对应的登录名;
加密后的密码;
自1970年1月1日(上次修改密码的日期)到当天的天数;
多少天后才能更改密码;
多少天后必须更改密码;
密码过期前提前多少天提醒用户更改密码;
密码过期后多少天禁用用户账户;
用户账户被禁用的日期,用自1970年1月1日到当天的天数表示;
预留字段,给将来使用; 使用shadow,Linux系统可以更好的控制用户密码了,他可以控制用户多久更改一次密码,以及密码未更新的话多久禁用该用户账户。
添加新用户
查看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 -DGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/tschSKEL=/etc/skelCREATE_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/tesls: 无法访问/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 testChanging shell for test.Shell changed.
chfn
不加参数的时候会以此输入提示备注信息。如:“
[root@alone skel]# chfn testChanging finger information for test.Name []: ImaTestOffice []: ChongQingOffice Phone []: 88925925Home Phone []: 88592626Finger information changed.[root@alone skel]# tail -2 /etc/passwdrichy:x:500:500:richy:/home/richy:/bin/bashtest:x:501:501:ImaTest,ChongQing,88925925,88592626:/home/test:/bin/csh
chage
命令用来帮助管理用户账户的有效期,参数如下:
-d
设置上次修改密码到现在的天数
-E
设置密码过期的日期
-I
设置密码过期到锁定账户的天数
-m
设置修改密码之间最少要多少天
-W
设置密码过期前多久开始出现提醒信息
chage命令的日期格式可以用一下两种方式的一种:
YYYY-MM-DD格式的日期。
2.代表从1970年1月1日到该日期天数的数值。
技巧:可以通过设置账户的过期日期来创建临时用户。过期账户和锁定账户相似,账户仍然存在,但是无法登录。
使用Linux组
1./etc/group文件
[root@alone skel]# cat /etc/grouproot:x:0:bin:x:1:bin,daemondaemon:x:2:bin,daemonsys:x:3:bin,admadm:x:4:adm,daemontty:x:5:disk:x:6:lp:x:7:daemonmem: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/groupfuse: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/grouprichy: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/testdirdrwxr-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 newfilechown带-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
共享文件
最基本的方法是通过创建组来共享访问权限的方法。 大环境中共享方法:-设置用户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:26abc -rw-rw-r--. 1 dan sharing 0 7月 28 10:10 newfiledrwxr-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 sssdrwxr-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强制某个目录下创建的新文件或目录都沿用该父目录的属组(共享简便方法)。
“Linux的shadow文件有什么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!