用户管理有两个最重要的配置文件,一个是保存用户信息的文件/etc/passwd,一个是保存了用户密码的文件/etc/shadow。
超级用户的uid为0,在/etc/passwd里面有很多伪用户,这些用户是不能登入的,他们的uid在1-499之间,安装完系统就缺省的添加了这些用户。
UID为0的用户就是超级用户。
将/etc/passwd test:x:1002:1003::/home/test:/bin/bash将其改为test:x:0:1003::/home/test:/bin/bash
[root@centos oracle]# su - test
上一次登录:一 12月 25 21:22:01 CST 2017pts/0 上
[root@centos ~]#
可以看到test用户变为了超级用户,权限和root一样。
在使用useradd添加的用户是普通用户,在系统安装完毕在/etc/passwd里面就有许多用户,这里面有很多用户并不是真正可以登入系统和使用的。
root@localhost ~]# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
oracle:x:1001:1001:/home/oracle:/bin/bash
在/etc/passwd里面保存了每一个用户的信息,可以使用man 5 passwd来查看配置文件帮助。
(密码文件)里每行一条记录,并且每行有这样的格式:
account:password:UID:GID:GECOS:directory:shell (帐号:密码:用户ID:组ID:一般的信息:目录:shell)
字段描述如下:
account 使用者在系统中的名字,它不能包含大写字母.
password 加密的用户密码,或者星号。
UID 用户 ID 数。
GID 用户的主要组 ID 数。
GECOS 这字段是可选的,通常为了存放信息目的而设的. 通常,它包含了用户的全名. GECOS 意思是通用电气综合操作系统(General Electric Comprehen‐
sive Operating System), 当 GE 的大型系统部分割售卖给 Honeywell 时它被改为 GCOS. Dennis Ritchie
作过报告:"有时我们发送印刷品或批道作业到 GCOS机器时,gcos 字段打断了 $IDENT 卡的信息,不太美观。"
directory 用户的 $HOME 目录.
shell 登录时运行的程序(如果空的,使用 /bin/sh). 如果设为不存在的执行(程序),用户不能通过 login(1) 登录.
在密码位的地方没有存储密码。在linux里面内核只认识数字,不认识密码,
伪用户一般分为两种,一种是与linux系统相关的,一种是与程序服务相关的。比如使用shutdown关机的时候就会调用伪用户的身份。在linux系统里面任何一个进程操作都必须有一个用户身份,这个就通过调用伪用户。比如安装了apache,http的进程,启动以后也要对应一个用户身份,但是不能对应root启动这个进程,如果别人得到这个进程相当于窃取到管理员root的权限,这样很危险,所以都是通过一些伪用户,添加一些服务的伪用户,比如apache,mysql。这些实际上是这些进程启动之后调用的用户身份。
所以伪用户最大的作用就是在一些系统操作或一些应用服务的调用的身份而已。
用户组是同样类型用户的集合,一个用户可以属于多个用户组,比如有一个用户叫张三,可以让其管理FTP server又可以管理web server,可以让其同时属于这两个组。但是总要有一个缺省的组,UID就是定义缺省组的组id,添加一个一个用户的时候如果不指定缺省组,默认创建一个和用户名称相同的组并且将用户添加进去。
在实际当中,添加一个用户必须指定所在的组。
一个用户属于某个组就拥有这个组的权限。所以用户加入组就是让用户享有这个组的权限。
描述信息,这个部分可以写内容也可以不写,就是用来描述用户信息的,建议在添加用户的时候写上用户的描述信息。
每一个普通用户必须要有一个宿主目录来存放基本信息,比如环境设置的选项,如果创建用户不指定宿主目录,那么就会在/home下面创建和用户同名的宿主目录。
普通用户使用的缺省shell就是bashshell。
如果真的要将linux做一个服务器,那么密码最好使用8位或者8位以上的,大小写数字字母的组合来组成密码。Unix最早采用的加密算法是des,但是des识别的密码位只有8位,现在使用的linux大多数时候使用的是des和md5混合使用的,md5是255位的。
Md5进行密码的加密,MD5算法对密码的加密规则,第一个,输入的长度不固定但是输出的长度是固定的,不管输入的密码长度是6位的还是8位的,生成的加密的密码是固定长度的值,单向不可逆的,无法通过输出推算出输入的值。
[root@centos oracle]# echo "123456" | md5sum
f447b20a7fcbf53a5d5be013ea0b15af -
[root@centos oracle]# echo "1" | md5sum
b026324c6904b2a9cb4b88d6d61c81d1 -
可以看到不同长度的密码最终生成的密文都是同等长度的,在设置密码的时候强度要足够同时应该经常修改密码。
为什么不在/etc/passwd里面密码位放上用户的加密密码。
因为在/tec/passwd里面保存了用户的信息,有很多命令在使用的过程当中会调用这些信息,调用这些信息就需要/etc/passwd这个文件。所以查看/etc/passwd文件会发现每一个用户对其都有一个读的权限,那么将加密密码放在这里每个人都可以拿到加密过后的密码去尝试破解,这样就危险了。(用户密码是存放在/etc/shadow里面)
[root@centos oracle]# ls -ld /etc/passwd
-rw-r--r--. 1 root root 2459 12月 25 21:25 /etc/passwd