用户类别:

管理员:UID=0

普通用户:1~65535。最大2^32(4294967296)个用户。

系统用户:1-499

一般用户:500~65535

用户组类别:

私有组:创建用户是,如果没有为其指定所属的组,系统会自动为其创建一个鱼用户名相同的组。

基本组:用户的默认组。

附加组(额外组)默认组以外的其他组。

影子口令: 

密码文件中密码位为x。

用户:/etc/shadow

组:/etc/gshadow

/etc/passwd结构:

1.用户名

数字不能成为账号第一个字符。

为了避免系统出现问题,尽量不要使用大写字母。

用户名不能包含空格。

2.密码占位符

/etc/passwd 的权限为0644,即----rw-r--r--。所有账户都能查看,所以里边的显示内容都是加密过的内容。

如果这里是x,代表用户账户的密码储存在其他地方。

如果留空,则表示此账户登陆无需密码。

3.UID

4.GID 用户所属的基本组。

5.用户的finger信息。例如电话,邮编等等,用,逗号隔开。

6.用户的家目录

7.用户默认使用的shell。常见的shell都在/etc/shells下。

/etc/shadow结构:

1.用户名

2.加密过的密码 默认是空,显示为!!或*,代表用户是禁用的。使用$隔开。

密码格式如下:

$加密方式$SALT$密码

$1 使用md5加密。

3.最近一次修改密码的时间,记录的是从1970年1月1号开始的天数。

4.密码最短使用期限。0表示不做限定。

5.密码最长使用期限。

6.密码过期提示,还有多少天密码到期。

7.非活动期限。账号禁用前的宽限期,登陆时必须修改密码。

8.账号有效期。从1970年1月1日起到用户账号禁用的期限。99999表示永不过期。

9.保留段。无意义。

加密方式:

对称加密:加密和解密使用同一个密码。

公钥加密:每个密码都成对出现。1个为私钥(secret key),1个为公钥(public key)。

单向加密(散列加密、指纹加密):只能由明文转换成密文,不能由密文转换成明文。提取数据特征码。

特性:

1.定长输出。 无论明文多长,密文长度都一致。

2.蝴蝶效应。两个明文只要不一致,密文的结果完全不一样。 

3.明文一样,密文结果一定一样。

4.不可逆。

加密算法:

md5:message degist 128bit。

sha1:secure hash algorithm 1 160bit。

salt:加密时系统自动添加的,为了加密安全。

用户:

创建用户:

#useradd [OPTION] ... USERNAME

-u UID 指定UID。

-g GID 指定用户的属组的GID,属组必须已经存在。

-G GID 指定用户一个或多个已经存在的附加组。组合组直接使用,隔开。

-c "COMMENT" 注释信息。

-d DIR 指定家目录。

-s SHELL_DIR 指定要使用的shell。

能用的shell,一般要求是出现在/etc/shells 中有的shell。没有的话用户就无法登陆系统。

-e 指定用户的有效期限

-f 指定用户的非活动期限。

-M 不创建家目录

-m 强行创建家目录

-p 指定密码,要用加密过后的密码串

-r 创建系统用户。UID为1-499,用户不能登录系统,一般是为了运行某个服务。

如果没有指定上述参数,则系统会按照/etc/login.defs和/etc/defaults/useradd中的内容定义账号的默认值

默认值如下:

1.用户的邮件目录为/var/spool/mail/。

2.UID为500-60000,默认使用最后一个可用UID。

3.会自动建立用户的家目录。

例如:

#useradd hadoop

设定密码

#passwd [OPTION] USERNAME

-u 解锁用户。

-l 锁定用户。

--stdin 标准输入。通过管道接收输入的字符串作为密码。

#openssl passwd -1 -salt SALT 指定加密方式为md5,手工指定salt值为SALT,通过交互模式生成密码,复制到/etc/shadow内即可使用。

例如:

#password mysql#echo "redhat" |passwd --stdin mysql##echo "redhat" |passwd --stdin mysql > /dev/null#openssl passwd -1 -salt '12345678'

查看用户账号信息:

#id [OPTION] ... USERNAME

-u 显示UID

-g 显示GID

-G 显示附加组。

-n 显示名称

#finger [OPTION] ... USERNAME 显示用户的登陆信息。

#who [OPTION]显示当前登录的用户信息。

#w [OPTION] 查看当前登陆的用户信息

#whoami 显示当前使用的用户。

例如:

#id mysql

#finger mysql

修改账号信息:

#usermod [OPTION] 修改用户信息。选项和useradd类似。

-G 更改附加组。原信息将会清除,可以配合-a选项来实现追加。

-a 追加信息

-d 更改家目录。家目录的文件不会随之移动,使用-m选项移动家目录文件。

-m 移动用户家目录的文件。

-l OLDUSERNAME NEWUSERNAME 更改用户名。

#chage [OPTION] USERNAME 修改账号的各种期限时间。

#chsh USERNAME 更改用户的shell,只有管理员有权限。

#chfn USERNAME 更改用户的注释(COMMENT)信息。

删除用户:

#userdel [OPTION] USERNAME

-r 指定删除用户的家目录。

组:

创建组:

#groupadd [OPTION] ... GROUPNAME

-g GID 指定GID

-r 创建系统组。GID为1-499。

-f 强制执行,允许系统建立一个GID相同的组,默认情况下group的GID是不能相同的。

例如:

#groupadd mygrp

修改组信息:

#groupmod [OPTION] GROUPNAME

-g 修改GID。

-n NEWGROUPNAME 将GROUPNAME改为NEWGROUPNAME。

删除组:

#groupdel [OPTION] GROUPNAME

修改组密码:

#gpasswd [OPTION] GROUPNAME

切换账号的基本组:

#newgrp GROUPNAME

修改文件和目录的属主属组:

只有管理员有权限改变文件的属主属组。

属主:

#chown [OPTION] USERNAME[[:|.]GROUPNAME] FILE|DIR 

-R 递归。

-c 显示更改的部分的信息

-f 忽略错误信息

-h 修复符号链接

-v 显示详细的处理信息-deference 作用于符号链接的指向,而不是链接文件本身。

--reference=FILE1 FILE2,...  把指定的FILE1为参考(引用),把要操作的FILE2,...设置成FILE1相同的属主和属组。

--from=<当前用户:当前群组> 只有当前用户和群组跟指定的用户和群组相同时才进行改变。

--help 显示帮助信息

--version 显示版本信息

属组:

#chgrp [OPTION] GROUPNAME FILE|DIR

-R 递归

--reference

例如:

#chown -R fedora /tmp/a.txt

#chgrp -R mysql /tmp/a.txt

#chown -R fedora:fedora /tmp/a.txt

#chown -R fedora.fedora /tmp/a.txt

#chown -R :fedora /tmp/a.txt 只更改属组。

#chown --reference=/tmp/b.txt /tmp/a.txt 以b.txt为参考更改a.txt的属主属组。

手工创建账号实例:

要创建的账号名为test,家目录为/home/test。

#nano /etc/passwd#nano /etc/shadow#nano /etc/group#cp r /etc/skel /home/test#chown test.test /home/test#chmod go= /home/test#passwd test