Linux操作系统口令文件安全问题详细解析

几乎所有的类Unix操作系统的口令文件的格式都雷同,Linux亦不例外。口令安全是Linux操作系统的传统安全问题之一。

  传统口令与影子口令

  /etc/passwd是存放用户的基本信息的口令文件。该口令文件的每一行都包含由6个冒号分隔的7个域:

  username: passwd: uid: gid: comments: directory: shell

  以上从左到右7个域分别叙述如下:

  username:是用户登陆使用的名字。

  passwd:是口令密文域。密文是加密过的口令。如果口令经过shadow则口令密文域只显示一个x,通常,口令都应该经过shadow以确保安全。如果口令密文域显示为*,则表明该用户名有效但不能登陆。如果口令密文域为空则表明该用户登陆不需要口令。

  uid:系统用于唯一标识用户名的数字,uid系统是这样分配的:

  0 超级用户

  1~10 守护程序和伪用户

  11~99 系统保留用户

  100~ 正常用户

  gid:表示用户所在默认组号。由/etc/group文件决定。

  comments:描述用户的个人信息。

  directory:定义用户的初始工作目录。

  shell:就是指定用户登陆到系统后启动的外壳程序。

  表1列出了系统在安装过程中创建的标准用户,表中的内容和/etc/passwd文件的描述是一致的。

  表2列出系统安装过程中创建的标准用户组,和/etc/group文件是一致的:

  Linux使用不可逆的加密算法如DES来加密口令,由于加密算法是不可逆的,所以从密文是得不到明文的。但问题在于,/etc/passwd文件是全局可读的,加密的算法是公开的,如果有恶意用户取得了/etc/passwd文件,他就可以穷举所有可能的明文通过相同的算法计算出密文进行比较,直到相同,于是他就破解了口令。因此,针对这种安全问题,Linux/Unix广泛采用了“shadow(影子)”机制,将加密的口令转移到 /etc/shadow文件里,该文件只为root超级用户可读,而同时/etc/passwd文件的密文域显示为一个x,从而最大限度减少密文泄露的机会。

  /etc/shadow文件的每行是8个冒号分割的9个域,格式如下:

  username: passwd: lastchg: min: max: warn: inactive: expire: flag

  其中:

  lastchg:表示从1970年1月1日起到上次修改口令所经过的天数。

  min:表示两次修改口令之间至少经过的天数。

  max:表示口令还会有效的最大天数,如果是99999则表示永不过期。

  warn:表示口令失效前多少天内系统向用户发出警告。

  inactive:表示禁止登陆前用户名还有效的天数。

  expire:表示用户被禁止登陆的时间。0

  flag:无意义,未使用。

  启用影子口令

  RedHat Linux缺省安装shadow,如果你发现你的系统的/etc/passwd文件仍然可以看到密文,就说明你没有启用shadow。可以执行pwconv来启用shadow。

  在RedHat Linux 7.1中,影子工具包(shadow utils)包含了几个工具支持以下功能:

  传统口令与影子口令之间的转换工具:pwconv、pwunconv。

  验证口令,组和相应的影子文件:pwck、grpck。

  以符合工业标准的方法增加、删除和修改用户帐户:useradd、usermod、userdel。

  以符合工业标准的方法增加、删除和修改用户组:groupadd、groupmod、groupdel。

  以符合工业标准的方法管理文件/etc/group。

  无论系统是否启用shadow机制,上述工具都可以正常使用。

  更改Linux口令的最短长度

  Linux系统默认最短口令长度为5个字符,这个长度不足以保证口令的健壮性,应该改为最短8个字符,编辑/etc/login.defs文件,在此文件中,将

  PASS_MIN_LEN  5

  改为:

  PASS_MIN_LEN  8

  表1

  User Uid gid Directory shell
Root 0 0 /root /bin/bash

  Bin 1 1 /bin

  Daemon 2 2 /sbin

  Adm 3 4 /var/adm

  Lp 4 7 /var/spool/lpd

  Sync 5 0 /sbin /bin/sync

  shutdown 6 0 /sbin /sbin/shutdown

  Halt 7 0 /sbin /sbin/halt

  Mail 8 12 /var/spool/mail

  News 9 13 /var/spool/news

  Uucp 10 14 /var/spool/uucp

  Operator 11 0 /root

  Games 12 100 /usr/games

  Gopher 13 30 /usr/lib/gopher-data

  ftp 14 50 /home/ftp

  Nobody 99 99 /

  表2

  Group Gid Members

  Root 0 Root

  Bin 1 root,bin,daemon

  Daemon 2 root,bin,daemon

  Sys 3 root,bin,adm

  Adm 4 root,adm,daemon

  Tty 5

  Disk 6 Root

  Lp 7 daemon,lp

  Mem 8

  Kmem 9

  Whell 10 Root

  Mail 12 Mail

  News 13 News

  Uucp 14 Uucp

  Man 15

  Games 20

  Gopher 30

  Dip 40

  ftp 50

  nobody 99

  Users 100

  floppy 19

(0)

相关推荐

  • Linux 操作系统下Web服务器配置详细介绍

    所的软件都放在了/home/web目录 1.MYSQL的配置过程: [root@mail web]# tar zxvf mysql-5.0.18.tar.gz [root@mail web]# cd mysql-5.0.18 [root@mail mysql-5.0.18]# groupadd mysql [root@mail mysql-5.0.18]# useradd -g mysql mysql [root@mail mysql-5.0.18]# ./configure --prefix=

  • 如何实现Linux操作系统的自动登录

    开机自动登录Linux,并自动运行XWindow应用程序,有其特殊的应用背景,如基于Linux平台的监控系统,Linux启动后不需要身份验证,而直接运行监控程序等等.本文以Redhat7.2为平台,结合Linux启动过程,介绍了如何避免身份验证自动登录,并直接进入X Window自动运行应用程序. 一.Linux启动的最后阶段的工作 Linux在启动过程的最后阶段(具体启动步骤略),init会根据/etc/inittab文件的最后一行x:5:respawn:/etc/X11/prefdm-nod

  • Linux rdesktop操作系统下远程登录Windows XP桌面

    发现新立得也有下载: sudo apt-get install rdesktop 或到下载rdesktop,下载后安装: $ tar -zxvf rdesktop-1.5.0.tar.gz $ cd rdesktop-1.5.0 $ ./configure $ make $ make install 终端输入 rdesktop //很详细用法说明 $ rdesktop -u username -p password ip 就可以远程登录了.username是XP当前用户 注意:登录前确认XP已开

  • Linux操作系统与命令知识汇总

    什么是操作系统呢?这个问题很简单吧!管理计算机软硬件的软件就是操作系统.操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口.操作系统的功能包括管理计算机系统的硬件.软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等.实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如:划分CPU时

  • linux操作系统安装sql developer步骤

    1.安装 jdk 复制代码 代码如下: # cd/u01(把jdk文件放在此目录下) # chmod a+x jdk-6u41-linux-i586.bin # ./chmod a+x jdk-6u41-linux-i586.bin (提示授权说明,q跳过,然后输入yes,等待后即可完成安装) 2.打开/etc/profile,在profile文件末尾加入: 复制代码 代码如下: exportJAVA_HOME=/u01/jdk1.6.0_41 exportJAVA_BIN=/u01/jdk1.

  • 轻松解决 Linux操作系统故障恢复技巧

    不论你在运行什么操作系统,在很多情况下,你会面对灾难恢复操作.你的主引导区被覆盖,你的硬盘不能启动,或者一个重要的文件被删除,或者你的显示卡启动时闪烁一下就黑屏了.本文会就这些问题作一些技巧性的讨论,帮助你在遇到这些问题时,不致于手足无措. 首先需要的是一张应急启动软盘,在安装 Linux 时,一般会要求建立一张的,所以,你应该有这张磁盘的,如果还没有建立的话,赶紧去建立一张吧,什么?不知道怎么做?很简单的,一般的 Linux 系统下使用 mkbootdisk 命令就可以了.后面的那些参数,只要

  • Linux rpm tar 操作系统下软件的安装与卸载方法

    Linux操作系统下软件的安装与卸载在Windows下安装软件时,只需运行软件的安装程序(setup.install等)或者用zip等解压缩软件解开即可安装,运行反安装程序(uninstall.unware."卸载"等)就能将软件清除干净,完全图形化的操作界面,简单到只要用鼠标一直点击"下一步"就可以了.而Linux好象就不一样了,很多的初学者都抱怨在Linux下安装和卸载软件非常地困难,没有像使用Windows时那么直观.其实在Linux下安装和卸载软件也非常简单

  • 完美解决Linux操作系统下aes解密失败的问题

    现象描述:windows上加解密正常,linux上加密正常,解密时发生如下异常: 复制代码 代码如下: javax.crypto.BadPaddingException: Given final block not properly padded       at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)       at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)       at com

  • Linux操作系统下关于用户和组的配置管理指南

    用户管理,主要的工作就是建立一个合法的用户帐户.设置和管理用户的密码.修改用户帐户的属性以及在必要时删除已经废弃的用户帐号. 1. 增加一个新用户 在Linux系统中,只有root用户才能够创建一个新用户,如下的命令将新建一个登录名user1的用户. # useradd user1 但是,这个用户还不能够登录,因为还没给它设置初始密码,而没有密码的用户是不能够登录系统的.在默认情况下,将会在/home目录下新建一个与用户名相同的用户主目录.如果需要另外指定用户主目录的话,那么可以使用如下命令:

  • linux操作系统安装MONO执行C#程序的详解步骤

    第一步 环境(UBUNTU系统下) 复制代码 代码如下: sudo apt-get install mono-gmcs mono 第二步 建立example.cs 复制代码 代码如下: class X {static void Main () {System.Console.Write("My first mono app worked!/n"):}} 第三步 编译 复制代码 代码如下: gmcs example.cs 第四步 执行 复制代码 代码如下: ./example.exe 在

随机推荐