您的位置:首页 > 运维架构 > Linux

Linux 的shadow文件解释

2016-07-28 11:27 399 查看

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 < users.txt

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]# chfntestChanging 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命令的日期格式可以用一下两种方式的一种:1.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 目录的全权限为 777umask 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
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: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修改组账户信息 groupmod3个安全等级 rwxr--r--默认权限设置 umask (掩码规则-文件666,目录777)chmod 修改文件或目录的安全设置(只有文件的属主才能修改属主和属组,或者root用户)SGID强制某个目录下创建的新文件或目录都沿用该父目录的属组(共享简便方法)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 权限 chmod shadow