文章目录
用户组基本概念
Linux是一个可以实现多用户登陆的操作系统,允许多个用户同时登陆到系统上使用资源。系统根据账户来区分每个用户的文件、进程、任务,给每个用户提供特定的工作环境。
用户和组
- 系统上的每个进程(运行程序)都作为特定用户运行;
- 每个文件都由特定用户拥有;
- 用户对文件和目录访问受到限制;
- 与运行中的进程相关联的用户确定该进程可访问文件或目录。
使用者标识:UID和GID
系统解析用户的时候,不能直接的去解析用户名(root),能够识别解析的是ID号。
创建用户时,会产生一个与UID相同的用户组
Linux用户:Username/UID
- 管理员:root, 0
- 普通用户:1-65535 系统用户:1-499(CentOS6), 1-999 (CentOS7)
- 登录用户:500-65535 (Centos6),1000-65535 (Centos7)
- 解析库 :/etc/passwd
Linux组:Groupname/GID
- 管理员组:root, 0
- 普通用户组:1-65535
- 系统用户组:1-499(CentOS6), 1-999(CentOS7)
- 登录用户组:500-65535 (Centos6),1000-65535 (Centos7)
- 解析库:/etc/group
用户组的分类1:基本组、附加组
用户组的分类2:私有组、公共组
当我们用useradd命令去创建用户的时候你只需要去给予系统这个命令,系统会自动为你创建用户,可系统是怎样创建用户的呢?
我们来模拟系统创建一个用户user02,在创建用户user02时,系统将user02的信息都写入了这些文件中:
(1)/etc/passwd
vim /etc/passwd ==vipw
user02:x:1002:1002:This is a user:/home/user02:/bin/bash
#用户名:密码:UID:GID:描述:家目录:bash类型
(2)/etc/group
vim /etc/group == vigr
user02:x:1002:
#组名:密码:GID
(3)/etc/shadow
vim /etc/shadow == vipw -s
user02:$6$fFbV5lit$G1gmc54PgaCzyBlc6zqmnX2KbIW9189MdKPoe1v3baARt6mANGk7K0QQix91Aaw3hJEcpIgDfhg0oERJNTX58.:18466:0:99999:7:::
第一列:用户名
第二列:加密口令,存放加密后的用户口令字(密码)
若是两个!,则没有密码;
星号代表账号被锁定;
$ 6 $开头,表示用SHA-512加密;
$ 1 $开头,表示用MD5加密;
$ 2 $开头,表示用Blowfish加密;
$ 5 $开头,表示用SHA-256加密;
第三列:表示从某刻起,到用户最后一次修改口令的天数。时间起点对不同的系统可能不一样。
第四列:两次修改口令时间之间所需的最小天数
第五列:指口令保持有效的最大天数
第六列:表示从系统开始警告到用户密码正式失效的天数
第七列:表示系统没有登陆活动但账号仍能保持的最大天数
第八列:失效时间
(4)/etc/gshadow
vim /etc/gshadow == vigr -s
user02:!::
(5)创建一个家目录/home/user02
拷贝默认的用户登录登出的初始化文件:
/etc/skel -----> /home/user02
[root@localhost skel]# cp .bash_logout /home/user02
[root@localhost skel]# cp .bash_profile /home/user02
[root@localhost skel]# cp .bashrc /home/user02
(6)创建一个mail文件
[root@localhost mail]# touch user02
[root@localhost mail]# ll
总用量 0
-rw-rw----. 1 mary mail 0 7月 3 09:47 mary
-rw-rw----. 1 user01 mail 0 7月 23 18:03 user01
-rw-r--r--. 1 root root 0 7月 26 16:55 user02
[root@localhost mail]# chmod g+w,o-r user02 #改user02的可执行权限
[root@localhost mail]# ll
总用量 0
-rw-rw----. 1 mary mail 0 7月 3 09:47 mary
-rw-rw----. 1 user01 mail 0 7月 23 18:03 user01
-rw-rw----. 1 root root 0 7月 26 16:55 user02
[root@localhost mail]# chown user02:mail user02#改user02的属主属组
[root@localhost mail]# ll
总用量 0
-rw-rw----. 1 mary mail 0 7月 3 09:47 mary
-rw-rw----. 1 user01 mail 0 7月 23 18:03 user01
-rw-rw----. 1 user02 mail 0 7月 26 16:55 user02
注意:创建用户时的众多默认设定配置文件为/etc/login.defs
用户组管理命令
组管理
groupadd命令(增)
groupadd [选项] group_name
- -g GID:指定GID,默认是上一个组GID+1
- -r:创建系统组
groupmod命令(改)
groupmod [选项] group
- -g:修改GID
- -n:修改组名
groupdel命令(删)
groupdel [选项] group
gpasswd命令
组密码文件:/etc/gshadow
gpasswd [选项] 组名
- -a:给组中添加用户
- -d:从组中移除用户
用户管理
useradd命令(增)
useradd [选项] 用户名
- u:指定UID
- -g:指定GID
- -G:指明用户所属附加组,多个组用逗号分割
- -c:指明注释信息
- -d:以指定的路径为用户家目录
- -s:指定用户的默认SHELL
【例1】将用户lasa01加入group01组中
[root@localhost ~]# usermod -G group01 lasa01
查看/etc/group
usermod命令(改)
usermod [选项] 用户名
- -u:修改UID为指定UID
- -g:修改用户所属的基本组
- -G:修改用户所属附加组,原来的组会被覆盖
- -a:与-G一起使用,用于为用户追加新的附加组
- c:修改注释信息
- -d:修改用户家目录,用户原有文件不会被转移至新目录
- -m:只能与-d一起使用,用于将原来的家目录移至新目录
- -l:修改用户名
- -s:修改用户默认的SHELL
- -L:锁定用户密码
- -U:解锁用户密码
userdel命令(删)
userdel [选项] 用户名
- -r:删除用户时一并删除其家目录
passwd命令
passwd [选项] [用户名]
passwd:修改用户自己的密码;
passwd USERNAME:修改指定用户密码
- -l、-u:锁定和解锁用户密码
- -d:清楚用户密码串
- -e:终止指定用户密码
- -i:非活动期限
- -n:密码的最短使用期限
- -x:密码的最长使用期限
- -w:警告期限
–stdin :
echo “PASSWORD” | passwd --stdin USERNAME
【实例1】
使用for循环一次创建10个用户,指定用户名lasa,描述“This is a user ”,家目录/home/,bash类型:/bin/bash;假如创建成功,即useradd这条命令执行成功,则在屏幕上输出成功,否则输出创建失败。
执行shell,显示创建成功
查看/etc/passwd文件
【实例2】
给实例1所创建的10个用户加上相同的密码
查看/etc/shadow文件可以看到加密口令创建成功
chage命令
更改用户密码过期信息
chage [选项] 用户名
- -d:指定密码最后修改日期
- -E:密码到期的日期,过了这一天,此账号不可用,0表示马上过期,-1表示永不过期
- -W:密码过期前,提前收到警告的天数
- -m:密码可以修改的最小天数间隔,0代表随时可以修改
- -M:密码保持有效的最大天数
- -l:显示账户年龄信息
id命令
显示用户的真实有效ID
id [选项] 用户名
- -u:仅显示有效的UID
- -g:仅显示用户的基本组ID
- -G:仅显示用户所属的所有组ID
- -n:显示名字而非ID
【例】
[root@localhost ~]# id -u lasa01
1105
[root@localhost ~]# id -g lasa01
1106
[root@localhost ~]# id -G lasa01
1106 1003
查看/etc/group文件验证
查看/etc/passwd文件验证
chsh命令
chsh [选项] [用户名]
查看或更换用户登陆系统所用的shell
- -s:指定登陆shell
- -l:打印shell列表并退出
- -v:输出版本信息并退出
查看系统安装的shell方法1:
[root@localhost ~]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看系统安装的shell方法2:
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看当前系统使用的shell
[root@localhost ~]# echo $SHELL
/bin/bash
修改登陆shell
[lasa10@localhost ~]$ echo $SHELL
/bin/bash
[sa10@localhost ~]$ chsh -s /usr/bin/bash
Changing shell for lasa10.
密码:
Shell changed.
[lasa10@localhost ~]$ exit
[root@localhost ~]# su - lasa10
上一次登录:二 7月 28 18:06:18 CST 2020pts/0 上
[lasa10@localhost ~]$ echo $SHELL
/usr/bin/bash
pwck&grpck命令
pwck:检查/etc/passwd文件与/etc/shadow文件格式语法
grpck:检查/etc/group文件与/etc/gshadow文件格式语法
【例】检查组信息,返回0,没有任何错误
[root@localhost ~]# grpck
[root@localhost ~]# echo $?
0