用户类别:
管理员: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