Linux系统是一个多用户多任务的分时操作系统,每个账户拥有一个唯一的用户名和各自的口令。用户的管理主要包括以下:
- 用户组的管理
- 用户账号的添加、删除与修改
- 用户口令的管理
用户组的管理
1.创建用户组
groupadd [options] groupname
-g: 指定用户组的标志号
-o: 一般与-g同时使用,表示新的用户组可以与已有用户组的GID相同
groupadd -g 101 test3 添加一个用户组,GID 101
2.删除用户组
groupdel group
eg.groupdel test3 删除用户组test3
3.修改用户组
groupmod [options] group
-g:GID
-n:将用户组名字改为新名字
4.切换用户组
如果一个用户属于多个用户组,用户可以在登录后,使用命令切换到其他用户组newgrp group
用户组的删除、添加,实际上会改动/etc/group文件
输入命令: cat /etc/group可以查看用户组
...
cc:x:1000:cc
test1:x:1001:
test2:x:1002:
test3:x:101:
用户管理
1.添加单个用户
useradd [options] user
- -c 用户描述
- -d 用户的主目录,如果目录不存在,可指定-m创建
- -g 所属的用户组,可用使用组名或者GID,用户组需存在,否则会报错useradd: group 'test1' does not exist
- -G 附加用户组
- -s指定用户的shell文件
- -u用户号,如果有-o,可重复使用其他用户的标志号
useradd -c test1user -d /home/cc1 -g test1 cc1 为组test添加用户cc1
2.删除用户
userdel -r user 删除用户(从/etc/passwd删除)以及它的主目录
3.修改账号
usermod [options] user
- -c 用户描述
- -d 用户的主目录,如果目录不存在,可指定-m创建
- -g 所属的用户组,可用使用组名或者GID,用户组需存在,否则会报错useradd: group 'test1' does not exist
- -G 附加用户组
- -s指定用户的shell文件
- -u用户号,如果有-o,可重复使用其他用户的标志号
4.用户的口令管理
用户刚创建时被锁定,无法使用。管理员可以修改用户的口令,而无需验证旧的口令,其他用户只能修改自己的口令
命令格式:passwd [options] user
- -l 锁定用户
- -f 强制用户下次登录时必须修改口令
- -u 口令解锁
- -d 账号无口令
- passwd 修改当前用户的口令
与账户有关的文件
账户和用户组的修改主要涉及文件/etc/passwd、/ect/group、/etc/shadow
1./etc/passwd
每个账户在这个文件中有个对应行,这个文件记录了用户的一些基本属性。
cat /etc/passwd可查看
...
cc:x:1000:1000:CC:/home/cc:/bin/bash
cc1:x:1001:1001:test1user:/home/cc1:/bin/bash
cc2:x:1002:1002:changetotest2:/home/cc2:/bin/bash
cc4:x:1003:1002:test1user:/home/cc4:/bin/bash
cc3:x:1004:1001:test2user:/home/cc3:/bin/bash
cc5:x:1005:101::/home/cc5:/bin/bash
cc6:x:1006:101::/home/cc6:/bin/bash
从左往右,分别是 账户名:口令秘钥:用户标志号:组标志号:描述:主目录:登录shell
- 用户名 代表用户的字符串,由字母、数字或者“/”组成,不能有冒号、.、-和+
- 口令 一些系统中会直接在这里存储用户的口令加密串,但是/etc/passwd是所以用户都可以访问的,所以部分系统会把真正加密后的加密串存放到/etc/shadow,而/etx/passwd中用代号x替代
- 用户标志号,一个整数,如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
- 组标识号,记录用户所属的用户组
- 主目录,用户的起始工作目录
-
用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。如果不指定shell,系统使用sh为默认的登录shell