Linux操作系统中用户有着不同功能的身份。
Linux系统中用户的分类
1)超级用户: root uid=0
2)系统用户:不需要登录系统,服务于应用程序,维护系统的运行,如 bin,nobody uid=1-499
3)普通用户:可以登录的用户 uid>=500
UID:用户标识
系统文件:
/etc/passwd:用户信息
/etc/shadow:用户密码相关的信息
对用户的操作:新增、删除、修改、查看、设置密码
1、查看用户 id
# id //默认查看的是当前用户的信息
uid=0(root) gid=0(root) groups=0(root)
# whoami //查看当前用户是谁
root
# id lp //查看指定用户的信息
uid=4(lp) gid=7(lp) groups=7(lp)
uid:用户标识
gid:组标识,用户的主组
groups:用户所属组信息
2、添加用户 useradd
注意:添加用户的操作只有 root 能操作
# useradd niulang
反例:
# su - niulang // switch user切换用户
$ useradd zhinv
-bash: /usr/sbin/useradd: Permission denied 权限被拒绝,普通用户是无法添加用户的
$ exit
logout
# id niulang
uid=500(niulang) gid=500(niulang) groups=500(niulang)
添加用户时,如果不指定用户的组,那么默认会创建一个与用户名同名的组作为用户的主要组。
1)添加用户时指定选项 man useradd
-c:注释性的描述信息
-d:指定用户的家目录
默认情况下:
root 的家目录是 /root
普通用户的家目录是 /home
-g:指定用户的主要组,前提是组必须存在
-G:指定用户的附加组(附属组),前提是组必须存在
-s:指定用户的登录 shell
-u:指定用户的uid
# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码位:uid:gid:注释性描述:用户的家目录:用户的登录shell
-u
-g
-c
-d
-s
# echo $SHELL //查看当前 shell,echo 可以用来打印变量
/bin/bash
要求区分的两种 shell
/bin/bash:可登录 shell,如果用户的 shell 是这个,那么该用户可以登录到系统中
/sbin/nologin:非登录shell,如果用户的 shell 是这个,那么该用户是不允许登录到系统的
格式:useradd 选项 选项的参数 ... 用户名
例子:
# useradd -u 600 -s /sbin/nologin zhinv
# id zhinv
uid=600(zhinv) gid=600(zhinv) groups=600(zhinv)
注意:添加用户时,实际上执行了以下操作
1、修改了 /etc/paasswd 文件
2、修改了 /etc/shadow 文件
3、修改了 /etc/group 文件
4、修改了 /etc/gshadow 文件
5、创建了家目录 /home
6、创建了邮箱帐号 /var/spool/mail/
# tail -1 /etc/passwd
zhinv:x:600:600::/home/zhinv:/sbin/nologin
# useradd -g 502 wangmu 错的
useradd: group '502' does not exist
# useradd -g zhinv wangmu
# id wangmu
uid=601(wangmu) gid=600(zhinv) groups=600(zhinv)
同时添加多个用户时,命令中间可以使用分号隔开
3、删除用户 userdel
# userdel wangmu //删除的时候不会删除用户的家目录和邮箱
# useradd wangmu //能添加,但是会有提示消息
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
-r: //可以干净的删除一个用户
# userdel -r wangmu
# cd /var/spool/mail/ //邮箱所在位置
4、给用户设置密码
passwd
超级用户:既可以修改自己的密码,又可以修改别人的密码,无需提供当前密码
普通用户:只能修改自己的密码,要求严格,并且需要提供当前密码,而且密码不能过于简单
# passwd //默认修改当前用户的密码
Changing password for user root.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
# passwd niulang //修改指定用户的密码
Changing password for user niulang.
New password:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
反例:
# su - niulang
$ passwd zhinv
passwd: Only root can specify a user name.
普通用户修改自己的密码,需要当前密码,而且长度最少6位,而且不能是字典单词
$ passwd
Changing password for user niulang.
Changing password for niulang.
(current) UNIX password:
New password:
BAD PASSWORD: it is based on a dictionary word
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
/etc/shadow:存放用户密码信息的文件
# head -1 /etc/shadow
root:$6$9AOmQbxm$3X1qbP0srKNql7jCXpmwhyNxGTHmIbT65zF.:16276:0:99999:7:::
用户名:加密后的密码:....
$6$:加密算法是sha512
$1$:加密算法是md5
-l 锁定密码 (实际是给密码前加 !!)
-u 解锁密码 (取消密码前的 !!)
5、修改用户:不常用
usermod: //modify:修改
-G:修改用户的附属组,不管用户原来的附属组如何,直接覆盖
-g:修改用户的主要组
-a:一般和-G联合使用,追加附属组
-u:修改用户的uid
-d:修改用户的家目录
-s:修改用户的shell
-L : 锁定账户 (实际是给账户密码前加 !)
-U: 解锁账户 (取消账户密码前的 !)
# useradd -G niulang,zhinv sha
# id sha
uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),600(zhinv)
# useradd sha2
# usermod -G sha2 sha
# id sha
uid=601(sha) gid=601(sha) groups=601(sha),602(sha2)
# usermod -a -G niulang sha
# id sha
uid=601(sha) gid=601(sha) groups=601(sha),500(niulang),602(sha2)
谢谢您的阅读!