权限管理-用户管理
目录
内容概述
1.linux用户介绍
-1.1什么是用户
-1.2为什么要有用户
-1.3如何查看用户相关信息
2.用户与组相关文件
3.用户管理命令
-用户命令汇总
-1.创建用户
-2.查看用户
-3.删除用户
-4.useradd命令详解:创建用户的同时指定选项
-5.usermod命令
-6.设定与修改密码
4.组管理命令
-组管理命令汇总
-1.创建组
-2.修改组
-3.删除组
-4.组成员管理
内容详解
1.linux用户介绍
-
1.1什么是用户?
用户对硬件资源的操作都需要通过操作系统,比如用户要读取硬盘中的一份关键数据,出于安全考虑,操作系统的开发者们都专门开发了安全机制,要使用操作系统必须事先输入正确的用户名与密码,这便是用户的由来.
-
1.2为什么要有用户?
# 主要就是权限问题
1、系统上的每一个进程,都需要一个特定的用户运行,一个用户拥有特定的权限,该用户运行的进程与用户权限一致.
2、通常在公司是使用普通用户管理服务器,因为root权限过大,容易出问题.
-
1.3如何查看用户相关信息?
[root@aliyum ~]# id # 查看当前用户
uid=0(root) gid=0(root) groups=0(root)
[root@aliyum ~]# whoami # 查看当前用户是谁
root
[root@aliyum ~]# id egon # 查看egon用户
uid=0(root) gid=0(root) groups=0(root)
[root@aliyum ~]# who # 查看所有登录的用户
root pts/2 2020-10-23 15:24 (139.227.12.100)
[root@aliyum ~]# ps aux |grep [s]sh # 每一个进程都有其用户
root 1067 0.0 0.2 112920 4328 ? Ss Feb15 0:04 /usr/sbin/sshd -D
root 27197 0.0 0.2 154708 5576 ? Ss 15:24 0:00 sshd: root@pts/2
2.用户与组相关文件
和用户、组相关的文件:
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
# /etc/passwd
root:x:0:0:root:/root:/bin/bash
第一字段:用户名(也被称为登录名);
第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;
第三字段:UID ;请参看本文的UID的解说;
第四字段:GID;请参看本文的GID的解说;
第五字段:描述信息,可选
第六字段:用户的家目录所在位置;
第七字段:用户所用SHELL的类型
# /etc/shadow
small_egon:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
big_egon:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起,这个字段是非空的;
第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),我们可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用; www.hackdig.com
第九字段:保留字段,目前为空,以备将来Linux发展之用;
如果想了解得更为详细,我们可以用 man shadow来查看帮助.
# /etc/group:组文件
head -1 /etc/group
root:x:0: # 以: 为分隔符,分为四列
第一列: root # 用户组的名称
第二列: x # 用户组的密码占位符
第三列: 0 # 用户组的ID/GID
第四列: # 显示该用户组作为哪个用户的附加组,多个用逗号分割
# /etc/gshadow:组密码文件
head -1 /etc/gshdow
root::: # 以: 为分隔符,分为四列
第一列: root # 用户组的名称
第二列: # 用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码.
第三列: # 用户组管理者,这个字段也可以为空,如果有多个用户组管理者,用,号分割
第四列: # 显示该用户组作为哪个用户的附加组,多个用,分割
3.用户管理命令
-
用户命令汇总
useradd #添加用户
userdel #删除用户
usermod #修改用户信息
-
1.创建用户
[root@localhost ~]# useradd user1
-
2.查看用户
[root@localhost ~]# id user1
uid=1002(user1) gid=1003(user1) 组=1003(user1)
[root@localhost ~]# who # 查看所有登录的用户信息
[root@localhost ~]# whoami # 查看当前登录的用户名
ps:当创建一个用户时,如果没有指定用户的主组,将会创建一个同名的组作为用户的主组.
-
3.删除用户
[root@localhost ~]# userdel user1 # 删除用户user1,但不删除用户家目录和mail
[root@localhost ~]# userdel -r user1 # 要想删彻底,加-r选项
-
4.useradd命令详解:创建用户的同时指定选项
# 怎样在Linux系统中添加一个新的用户账户
1.掌握useradd命令的功能:新增一个用户.
2.了解useradd命令的常用选项:
3.–u:指定用户的UID
4. –g:指定用户所属的主群
–G:指定用户所属的附加群
5. –d:指定用户的家目录
6. –c:指定用户的备注信息
7. –s:指定用户所用的shell
8. -e:修改过期时间
9. -M: 不创建家目录
10. -r: 创建系统账户,uid处于系统用户范围内,默认就没有家目录
# 灵活应用useradd命令的举例:
a.例如:在系统中新增一个fox(狐狸)用户的命令:useradd fox
b. 例如:在系统中新增一个用户user01,属组为police以及uid为600的命令:
useradd –u 600 –g police user01
[root@aliyum ~]# useradd xxx -M -s /sbin/nologin # 创建普通用户,但是没有家目录,不能登录系统
[root@aliyum ~]# useradd -r yyy -s /sbin/nologin # yyy属于系统用户,uid处于系统用户uid范围内
-
5.usermod命令
同useradd参数基本一致,只不过useradd是添加,usermod是修改
-u #指定要修改用户的UID
-g #指定要修改用户基本组
-a #将用户添加到补充组。仅与-G选项一起使用
-G #指定要修改用户附加组,使用逗号隔开多个附加组, 覆盖原有的附加组
-d #指定要修改用户家目录
-c #指定要修改用户注释信息
-s #指定要修改用户的bash shell
[root@root ~]# usermod -e 2013-02-11 user1000 # 修改过期时间
[root@root ~]# usermod -g group1 jj # 修改主组
[root@root ~]# usermod -a -G group2 jj # 修改附加组,-a添加,不加-a代表覆盖
其他选项
-m #将用户主目录的内容移动到新位置。如果当前主目录不存在,则不会创建新的主目录
-l #指定要修改用户的登陆名
-L #指定要锁定的用户
-U #指定要解锁的用户
-
6.设定与修改密码
passwd # 默认给当前用户设定密码
passwd 用户名 # root用户可以给自己以及所有其他用户设定密码,普通用户只能设定自己的密码
echo "密码" | passwd --stdin 用户名 # 非交互式
# 补充:可以利用系统内置变量生成随机字符串来充当密码
[root@aliyum ~]# echo $RANDOM|md5sum|cut -c 1-10
70ba11a74b
4.组管理命令
-
组管理命令汇总
groupadd
groupmod
groupdel
gpasswd # 设置组密码
newgrp # 切换主组
-
1.创建组
[root@aliyum ~]# groupadd gg1 #创建基本组, 不指定gid
[root@aliyum ~]# tail -1 /etc/group
gg1:x:2005:
[root@aliyum ~]# groupadd -g 5555 gg2 #创建基本组, 指定gid为5555
[root@aliyum ~]# tail -1 /etc/group
gg2:x:5555:
[root@aliyum ~]# groupadd -r gg3 # 创建系统组,gid从201-999
[root@aliyum ~]# tail -1 /etc/group
gg3:x:991:
-
2.修改组
[root@aliyum ~]# groupmod -g 1111 gg3
[root@aliyum ~]# tail -1 /etc/group
gg3:x:1111:
[root@aliyum ~]#
[root@aliyum ~]# groupmod -n new_gg3 gg3 # -n 修改组名称
[root@aliyum ~]# tail -1 /etc/group
new_gg3:x:1111:
-
3.删除组
如果一个组是一个用户的主组,那么该组不能被删除,删掉用户会默认一起删掉他的主组
[root@aliyum ~]# useradd egon1
[root@aliyum ~]# groupadd devops
[root@aliyum ~]# usermod -G devops egon1
[root@aliyum ~]# id egon1
uid=2004(egon1) gid=2004(egon1) groups=2004(egon1),5556(devops)
[root@aliyum ~]#
[root@aliyum ~]#
[root@aliyum ~]# groupdel devops # 附加组可以删除
[root@aliyum ~]# id egon1 # 查看用户,发现他的附加组没有了
uid=2004(egon1) gid=2004(egon1) groups=2004(egon1)
[root@aliyum ~]# groupdel egon1 # 无法删除组egon1,因为组egon1属于egon1用户的主组
groupdel: cannot remove the primary group of user 'egon1'
-
4.组成员管理
对于用户来说,组是分类的 :
1、一类是基本组或称主组,用户只能有一个基本组,创建时可通过-g指定,如未指定则创建一个默认的组(与用户同名).
2、附加组,基本组不能满足授权要求,创建附加组,将用户加入该组,用户可以属于多个附加组,加入一个组后就拥有了该组的权限.
注意:gpasswd将用户添加到组或从组中删除,只针对已存在的用户
[root@root ~]# gpasswd -a user07 it # 将某个用户加入到某个组
[root@root ~]# gpasswd -M user02,user03,user04 it # 将多个用户加入到it组
[root@root ~]# gpasswd -A lhf it # 指定lhf为组it的组长,除了root用户外lhf用户也可以采用第一条命令往it组里添加成员
[root@root ~]# grep 'it' /etc/group # 查看it组中的成员
it:x:505:user02,user03,user04
[root@root ~]# gpasswd -d user07 it # 删除用户usr07从it组
我们可以为组设置密码,然后让一些非组成员的用户通过命令”newgrp 组”临时切换到组内并输入密码的方式获取用户组的权限 和特性,如下:
[root@localhost ~]# groupadd group1
[root@localhost ~]# gpasswd group1
正在修改 group1 组的密码
新密码:
请重新输入新密码:
[root@localhost ~]# touch /tmp/a.txt
[root@localhost ~]# ll /tmp/a.txt
-rw-r--r-- 1 root root 0 8月 10 21:01 /tmp/a.txt
[root@localhost ~]# chown .group1 /tmp/a.txt
[root@localhost ~]# !ll
ll /tmp/a.txt
-rw-r--r-- 1 root group1 0 8月 10 21:01 /tmp/a.txt
[root@localhost ~]# chmod g+w /tmp/a.txt
[root@localhost ~]# gpasswd group1
[root@localhost ~]# su - egon
上一次登录:一 8月 10 21:01:46 CST 2020pts/0 上
[egon@localhost ~]$ echo 123 >> /tmp/a.txt # 此时没有权限
-bash: /tmp/a.txt: 权限不够
[egon@localhost ~]$ newgrp group1 # 临时切换到组group1下,拥有其权限
密码:
[egon@localhost ~]$ echo 123 >> /tmp/a.txt
[egon@localhost ~]$ cat /tmp/a.txt
123

浙公网安备 33010602011771号