LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 668|回复: 2

关于linux的shadow文件的时间问题

[复制链接]
发表于 2010-6-24 21:53:15 | 显示全部楼层 |阅读模式
1:里面的时间全是距离1970年1月1号的天数,请问有什么办法可以简单快速从一个日期得到转换后的相差天数呢,是有专门的命令,还是要自己算?
2:请问为啥是1970年1月1日,有什么特别的意义吗?
3:可以把那种相对的时间改成绝对时间吗,比如说改成月日年的类型,另外可以把自己时间精确到秒或者分吗?
发表于 2010-6-26 13:49:16 | 显示全部楼层
1. 看你用什么脚本语言, python反正有自己的库,bash就不太不清楚了,不过,date有类似的功能。
  1. info date
复制代码
2. 没什么特别的意义,应该只是简单的取整:
http://en.wikipedia.org/wiki/Unix_time#History
http://stackoverflow.com/questions/1090869/epoch-time
就好像公元对我们来说基本没有什么意义……
3.
  1. man shadow
复制代码
定义总之是精确到天的,我想可以精确到秒,只要你重新写一下shadow就行……也许已经有了吧,只是我不知道而已……
回复 支持 反对

使用道具 举报

发表于 2010-6-28 22:12:26 | 显示全部楼层
1. 自己算一下,也挺简单的,下面是示例

设置oracle和yzhq用户的帐号过期时间
# chage -E 2008-12-02 oracle
# chage -E 2008-12-12 yzhq

使用usermod命令也可以到达同样的效果,但它没有移除的选项。
# usermod -e 2008-12-02 oracle
# usermod -e 2008-12-12 yzhq


注意:修改前后shadow文件内容的变化

原:
oracle1$QzC6Y0hv$zvR0RX/ry.5mW48Lwo/xN.:14194:0:99999:7:::
yzhq1$SKij5pYr$HfEn1riVrXOA4ztJXn58g.:14210:0:99999:7:::

变化后:
oracle1$QzC6Y0hv$zvR0RX/ry.5mW48Lwo/xN.:14194:0:99999:7::14215:
yzhq1$SKij5pYr$HfEn1riVrXOA4ztJXn58g.:14210:0:99999:7::14225:

第8个字段的意义:Number of days after password expiration when an account is disabled (-E)


从下面的计算可以得知,14215和14225是失效的日志减去Linx的时间基准的值(Linux的时间基准是1970年1月1日凌晨0点):

SQL> select to_date('2008-12-02','yyyy-mm-dd') - to_date('1970-01-01','yyyy-mm-dd') as count  from dual;

     COUNT
----------
     14215

SQL> select to_date('2008-12-12','yyyy-mm-dd') - to_date('1970-01-01','yyyy-mm-dd') as count  from dual;

     COUNT
----------
     14225

SQL>



2.  “时间基准”是由操作系统的设计者规定的。
DOS的时间基准是1980年1月1日
UNIX和MINIX的时间基准是1970年1月1日上午12点
Linux的时间基准是1970年1月1日凌晨0点

3. 不可以,不可以。
因为根据shadow第8段内容实现的,参考1.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表