用户权限管理
组管理
创建组
groupadd 参数 组名
-g 设置组id号,默认从1000开始,1~999是系统预留的组
修改组
groupmod 参数 组名
-g gid缩写,可设置组ID
-n name缩写,可设置组名
删除组
groupdel 祖名
用户管理
root用户的权限最大是因为root 的UID为0,如果将其他用户的UID也改为0,那么他们将获得和root一样的权限。
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码:UID:GID:用户注释:用户家目录:用户使用的解释器
创建用户
useradd 参数 用户名-g:表示指定用户的用户主(主要)组,选项值可以是用户组ID,也可以是组名 -G:表示指定用户的用户附加(额外)组,选项值可以是用户组ID,也可以是组名 -u :uid,用户的id(用户的标识符),系统默认会从500 /或1000之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】 -c:comment,添加注释(选择是否添加) -s:指定用户登入后所使用的shell 解释器,默认/bin/bash【专门的接待员】,如果不想让其登录,则可以设置为/sbin/nologin (重要) -d:指定用户登入时的启始目录(家目录位置) -n:取消建立以用户名称为名的群组(了解)
-M:创建用户时不创建家目录,即/home下没有以用户名命名的文件 useradd -M hejj [root@master /home 20:43:05]# su - hejj Last failed login: Mon Jul 10 10:04:51 CST 2023 from server01 on ssh:notty There were 5 failed login attempts since the last successful login. su: warning: cannot change directory to /home/hejj: No such file or directory -bash-4.2$ exit logout 1、表示系统读不到用户的个人配置文件,用户在useradd创建时,系统会去/etc/skel 目录下,拷贝所有的用户个人环境变量配置文件,到用户生成的家目录 /home/hejj 2、用户在登录时,自动加载 /home/hejj 下的所有文件内容 3、修复手段,手动拷贝前两步操作即可修复 cp -r /etc/skel /home/hejj
id 用于检查用户和组以及对应的UID,GID等信息
[root@pylinux ~]# id yu uid=1000(yu) gid=1000(yu) 组=1000(yu) [root@pylinux ~]# id -u yu #显示用户id 1000 [root@pylinux ~]# id -g yu #显示组id 1000 [root@pylinux ~]# id -un yu #显示用户名 yu [root@pylinux ~]# id -gn yu #显示组名 yu
修改用户信息
usermod 参数 用户名-g:表示指定用户的用户主组,选项的值可以是用户组的ID,也可以是组名 -G:表示指定用户的用户附加组,选项的值可以是用户组的ID,也可以是组名 -u:uid,用户的id(用户的标识符),系统默认会从500 之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】 -L:锁定用户,锁定后用户无法登陆系统lock -U:解锁用户unlock -c<备注>:修改用户帐号的备注文字 -d<登入目录>:修改用户登入时的目录 -s<shell>:修改用户登入后所使用的shell
修改密码
非交互式修改密码 [root@master ~]# echo '123456789'|passwd --stdin hejj Changing password for user hejj. passwd: all authentication tokens updated successfully.
删除用户
userdel 参数 用户名 -f:强制删除用户,即使用户当前已登录; -r:删除用户的同时,删除与用户相关的所有文件。 userdel -rf oldchao # 强制删除用户与其家目录
whoami、who、w、last、lastlog
whoami显示可用于查看当前登录的用户,我是谁
[root@pylinux ~]# whoami root
w命令显示当前以登录的用户
[root@pylinux ~]# w 04:15:01 up 15 days, 18:03, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 122.71.x5.xx 04:05 5.00s 0.07s 0.00s w 1.显示当前系统时间、系统从启动到运行的时间、系统运行中的用户数量和平均负载(1、5、15分钟平均负载) 2.第二行信息 user:用户名 tty:用户使用的终端号 from:表示用户从哪来,远程主机的ip信息 login:用户登录的时间和日期 IDLE:显示终端空闲时间 JCPU:该终端所有进程以及子进程使用系统的总时间 PCPU:活动进程使用的系统时间 WHAT:用户执行的进程名称
who
[root@pylinux ~]# who root pts/0 2018-07-12 04:05 (122.71.x5.xx) 名称 用户终端 用户登录的系统时间 从哪来的机器ip
last、lastlog命令查看用户详细的登录信息
#last命令显示已登录的用户列表和登录时间 [root@pylinux ~]# last root pts/0 122.71.x5.xx Thu Jul 12 04:05 still logged in root pts/0 122.71.x5.xx Thu Jul 12 04:02 - 04:05 (00:02) root pts/1 122.71.x5.xx Wed Jul 11 16:56 - 16:57 (00:00) wtmp begins Sun Jul 8 06:23:25 2018 lastlog命令显示当前机器所有用户最近的登录信息 last读取的是如下文件信息,二进制加密数据。 [root@yuanlai-0224 ~]# ll /var/log/wtmp -rw-rw-r--. 1 root utmp 170112 Mar 12 15:16 /var/log/wtmp [root@pylinux ~]# lastlog 用户名 端口 来自 最后登陆时间 root pts/0 122.71.65.73 四 7月 12 04:05:09 +0800 2018 bin **从未登录过** yu pts/0 四 7月 12 04:05:51 +0800 2018 epmd **从未登录过** rabbitmq 日 9月 29 03:42:01 +0800 2019 py pts/0 四 7月 12 04:06:02 +0800 2018 testyu **从未登录过**
visudo命令
visudo用于编辑/etc/sudoers文件,且提供语法检测,用于配置sudo命令
1.直接输入visudo命令,相当于打开vim /etc/sudoers 找到如下行 89 ## The COMMANDS section may have other options added to it. 90 ## 91 ## Allow root to run any commands anywhere 92 root ALL=(ALL) ALL 2.添加你想让执行sudo命令的用户 89 ## The COMMANDS section may have other options added to it. 90 ## 91 ## Allow root to run any commands anywhere 92 root ALL=(ALL) ALL 93 yu ALL=(ALL) ALL 3.保存退出,使用vim/vi的模式,此时已经可以用yu用户,使用sudo命令了
降低sudo权限
1.编辑visudo
修改权限,只允许执行mkdir,useradd
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
yuchao01 ALL=(ALL) /usr/bin/mkdir,/usr/sbin/useradd
2.再次使用sudo,尝试使用vim,权限不够了,不让用
[yuchao01@yuanlai-0224 ~]$ sudo vim /opt/三里屯美女微信.txt
[sudo] password for yuchao01:
Sorry, user yuchao01 is not allowed to execute '/bin/vim /opt/三里屯美女微信.txt' as root on yuanlai-0224.
3.使用mkdir是可以的
[yuchao01@yuanlai-0224 opt]$ mkdir yuchao到此一游
mkdir: cannot create directory ‘yuchao到此一游’: Permission denied
[yuchao01@yuanlai-0224 opt]$
[yuchao01@yuanlai-0224 opt]$ sudo mkdir yuchao到此一游
[yuchao01@yuanlai-0224 opt]$ ll
total 4
drwxr-xr-x 2 root root 6 Mar 9 20:29 yuchao到此一游
-rw-r--r-- 1 root root 19 Mar 9 20:21 三里屯美女微信.txt
[yuchao01@yuanlai-0224 opt]$
4.使用useradd是可以的
[yuchao01@yuanlai-0224 opt]$ id caixukun01
uid=1011(caixukun01) gid=1011(caixukun01) groups=1011(caixukun01)
[yuchao01@yuanlai-0224 opt]$
删除用户命令如何添加上?
[yuchao01@yuanlai-0224 opt]$ sudo userdel caixukun01
Sorry, user yuchao01 is not allowed to execute '/sbin/userdel caixukun01' as root on yuanlai-0224.
chage设置密码过期
chage命令是用来修改帐号和密码的有效期限;这个信息由系统用于确定用户何时必须更改其密码。
语法格式:chage [参数]
常用参数:
-M | 密码保持有效的最大天数 |
---|---|
-W | 用户密码到期前,提前收到警告信息的天数 |
-E | 帐号到期的日期,会禁止此帐号,也可以修改账号的过期时间。0表示立即过期,-1从不过期 |
-d | 设置密码什么时候过期!-1 从不过期 0 立即过期 |
-l | 列出当前用户的密码过期设置。普通用户仅可以查看自己的密码过期时间。 |
参考实例
使用-l参数列出用户密码过期的设置:
chage -l root
使用-M参数设置redis用户的密码最大有效期为100天:
chage -M 100 redis
设置yuchao01用户的密码,到2022-3-14
过期,3-15号登录必须改密码。
chage -d '2022-3-14' ycc01 # 密码能用到3-14号,3-15号必须得改密码
设置yuchao01用户过期时间为1年,并且限制下次登录,必须立即修改密码。
[root@yuanlai-0224 ~]# chage -E '2023-03-12' -d 0 ycc01
[root@yuanlai-0224 ~]# chage -l ycc01
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :3月 12, 2023
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :1
在密码过期之前警告的天数 :7