Linux中用户管理详解(上)-Linux学习日记在Linux系统中,所有的用户和组像一个国家。如果国家要繁荣昌盛的话,需要治理得当,需要有主席或者总统,以及地方官员和老百姓组成。在linux中如果你对安全需求比较苛刻,完全可以限制用户的各种行为,不同用户的权限是不同的。在linux中系统中,它并不认识帐号名称。它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中。我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passwd文件中是否有这个帐号,如果没有则跳出,如果有的话,他会读取该帐号的userID和groupID同时该帐号的根目录和shell也读了出来。然后在去核对密码表,在/etc/shadow中找出我们刚刚输入的帐号和userID,核对我们输入密码是否正确。一切正确我们可以登录到当前用户shell。那么,我们首先了解一下用户帐号文件。1./etc/passwd我们使用more查看一下这个文件我们首先看第一行root这一行,一共有七项,每一项使用:分开,他们代表的意思如下:帐号名称:帐号名称由于对应用户ID,这个是系统默认用户root超级管理员,在同一个系统帐号名称是唯一的,长度根据不同的linux系统而定,一般是8位。密码:由于系统中还有一个/etc/shadow文件用于存放加密后的口令,所以在这里这一项是“x”来表示,如果用户没有设置口令,则该项为空。用户ID:这个是系统内部用于来识别不同的用户的,不同的用户识别码不同,其中用户ID有以下几种:0代表系统管理员,如果你想建立一个系统管理员的话,可以建立一个普通帐户,然后将该账户的用户ID改为0即可。1-500系统预留的ID,500以上是普通用户使用。组ID:其实这个和用户ID差不多,用来规范群组,他与/etc/group有关。描述信息:这个字段几乎没有什么作用,只是用来解释这个帐号的意义。一般常见的是用户全名信息。-用户根目录:就是用户登录系统的起始目录,用户登录系统后将首先进入该目录。root用户默认的是/root,普通用户的是/home/用户名。用户登录shell:就是用户登录系统时使用的shell,关于shell我们会在以后专门的研究一下。通常我们可以使用vi编辑这个文件,也可以使用vipw命令对/etc/passwd对这个用户帐户文件进行编辑,使用的编辑器是vi。2./etc/shadow在早期的unix操作系统中,用户的帐号信息和口令信息都保存在passwd文件中,尽管系统已经对口令进行了加密,并且以密文的方式保存在passwd文件中,但是由于passwd文件对于系统中的所有用户是可读的,口令比较容易破解,存在较大的安全隐患。现在使用“shadow”文件保存密文的用户口令,使用passwd文件保存用户帐号其它信息。“shadow”文件只有管理员用户才可以读取其中的内容。由于这个文件可能被破解,所以一定不要将该文件内容泄露给他人,保证系统安全。同样,我们还是分析第一行,一共有九项,分别说明一下:帐户名称:和passwd对应,和passwd的意思相同。密码:这才是真正的密码,并且已经加密过了,只能看到一些特殊符号。需要注意的是这些密码很难破解,但是不等于不能。还有密码栏的第一个字符为“*”表示这个用户不用来登录,如果那个用户不想让他登录了,可以在他前面加个星。上次改动密码的日期:这段记录了改动密码的最后日期,为什么是13798呢?这是因为linux计算日期的方法是以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为13798了。密码不可被改动的天数:这个字段代表要经过多久才可以更改密码。如果是“0”代表密码可以随时更改。密码需要重新更改天数:由于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个帐号将暂时失效。上面的99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全。密码变更期期限快到前的警告期:当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。默认的是七天。帐号失效期:如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重新启用,那么这个帐号将暂时失效。帐号取消日期:这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。保留:最后一个字段是保留的,看以后有没有新功能加入。3./etc/group查看一下这个文件我们还是分析第一行,一共有四项,依次为:群组名称:就是群组的名称了。群组密码:通常不需设定,因为我们很少使用群组登录。不过这个密码也被记录在/etc/shadow中了。群组ID:也就是组ID了。支持帐号的名称:这个群组的所有帐号。如果你想让用户qiuri也属于root这个群组,就在第一行最后加上“,qiuri”注意添加的时候没有空格。通常我们使用vi编辑这个文件,也可以使用vigr这个命令编辑,等同于使用vi/etc/group编辑。4.adduser添加用户如果没有特殊的要求,通常我们使用adduser用户名称直接创建用户帐号。例如我们创建qiuri帐户:由于一般新创建的帐号都会在刚才我们说的三个文件的最后一行添加一行内容,我们验证一下:我们使用这条命令是通过/etc/login.defs和/etc/default/useradd这两个默认帐号设定文件来实现创建用户时用户的基本设置的。/etc/login.defs文件内容如下:/etc/default/useradd文件内容如下:这个文件中我们有必要了解一下,SKEL这个选项,用户的根目录内容是从/etc/skel这个目录下复制过去的。在手动添加用户的时候有用。查看一下这个目录下的内容:这条命令还有好多的参数举例几个,供大家参考一下:adduser[-uuid][-ggroup][-dhome][-sshell]-u:直接给出userID-g:直接给出GID-d:直接将根目录建立在已存在目录-s:定义shell5.passwd设置用户密码默认的情况下,在添加完用户后并没有设置用户的密码,因此建立的用户帐号即使存在也不能登陆系统。需要使用passwd命令对用户帐号设置密码才可以用于登陆系统。这条命令分为管理员给用户修改密码和用户自己登录系统自己修改密码。管理员root给用户修改密码,例如:创建用户qiuri,然后设置密码管理员给用户设置密码以命令passwd[用户名]来设置密码,在输入密码的过程中为了避免输入错误,将连续输入两次。如果两次输入的密码相同,表示输入的密码正确,同时将密码以加密的方式保存到了shadow文件中。设置完以后我们可以使用用户qiuri登录。qiuri用户自己修改一下密码:Linux用户管理详解(中)在我的上一篇《Linux中用户管理详解(上)》我们已经明白通过命令useradd每创建一个用户都会在相应的配置文件中添加相关的信息和创建用户的宿主目录。其实今天要和大家说的是和用户相关的linux安全问题,在安全中有一种技术人们称它为“后门”技术,其实就是说一些“小黑”,入侵到服务器后得到root权限,最常见的就是添加一个用户方便日后来访。虽然这是一个初级的技术,但是这个能够看出你对/etc/passwd和/etc/shadow文件的熟悉程度。如果你是黑客的话,入侵到一个系统后,你为了防止管理员修改密码导致你不能登录,而你去修改密码,这不是明摆着要通知管理员他的系统已近被入侵了,所以这个时候可以通过编辑passwd和shadow文件来实现如下内容:[root@qiuri~]#echoadmin:x:0:0::/usr/src:/bin/bash/etc/passwd[root@qiuri~]#echoadmin:!!:14143:0:99999:7:::/etc/shadow通过以上两条命令可以添加一个UID为0的具有管理员权限的账户,也可以编辑配置文件手工输入,当然,这里小黑们会尽量的掩盖自己创建的这个账户,首先用户名称一般会选择一个类似系统应用程序的账户,用户的主目录也不会和其它账户一样放在/home下。总之尽量的逃过哪些粗心的管理员。当然,还没有设置密码是不能够通过远程可以连接上服务器的,这个时候用passwd来设置一下:输入要设置的密码,之后查看/etc/shadow配置文件后密码位已近成为md5加密的乱码。[root@qiuri~]#passwdadmin[root@qiuri~]#grepadmin/etc/shadowadmin:$1$1IoPDSJW$3NxLHwcXeutWT1lIMb4Zy1:14163:0:99999:7:::这个时候我们可以测试一下登录,这个时候我们没有必要退出后再登录,我们可以使用su命令切换用户,大家在使用这条命令的时候最常见的问题如下:[root@qiuri~]#suadminbash-3.1#[root@qiuri~]#su–adminbash-3.1#咋看起来这两条命令没有什么区别,当我们使用suadmin命令的时候,我们输入一个认为可用的命令的时候会得到“commandnotfound”的错误信息。是由于su命令不能在根用户环境中的读操作。为了解决这个问题,只能在给su命令添加一个”–”的选项,也就是su–admin这样的格式。我们使用pwd查看一下这两个命令的区别:[root@qiuri~]#suadminbash-3.1#pwd/rootbash-3.1#su-admin-bash-3.1#pwd/usr/src看到了吧,其实这两个命令的区别就是:使用su命令切换用户后,不会修改当前登录会话的目录或者环境;而su–后,通常会修改用户的登录目录为用户自己的根目录,并且用户自己的变量也可以使用了。或许有人还有疑问为何提示符为”-bash-3.1#”了,其实这个”-bash-3.1”不是关键,主要是看”#”和”$”来区别用户的类型。这里变为”-bash-3.1”的原因是我们创建的admin用户没有自己的初始配置文件,我们使用命令创建用户的时候都会从/etc/skel这个目录中复制到用户的宿主目录。这里查看一下这个配置文件:[root@qiuri~]#ls-al/etc/skel/total48drwxr-xr-x2rootroot409609-1821:26.drwxr-xr-x94rootroot1228810-1120:27..-rw-r--r--1rootroot242006-07-12.bash_logout-rw-r--r--1rootroot1762006-07-12.bash_profile-rw-r--r--1rootroot1242006-07-12.bashrc[root@qiuri~]#我们看到这些都是一下隐藏文件,这些文件是用于用户的环境变量的shell脚本,用户登录后可以修改这些文件。我在以后的文章中详细介绍这些文件的用途。那我们就将这些文件复制过去看看:[root@qiuri~]#cp-r/etc/skel/.*/usr/src[root@qiuri~]#su-admin[root@qiuri~]#pwd/usr/admin当然,通过这种方法创建的后门用户很容易被细心的管理员发现,但是如果你对这些配置文件不是很熟悉的话也是很难发现问题。这就是火能助人,也能杀人的道理。当发现这样的用户,我们需要做的是将其删除,删除用户的命令是userdel。1)userdel命令用于删除linux系统中的用户账号,命令格式如下:userdel[-r]user_name一般,在使用这条命令的时候,如果不添加”-r”的话,不会删除用户的宿主目录,这样就可以保存该用户在系统中的文件,要是想删除的话我们可