用户权限管理

组管理

创建组
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
posted @ 2023-07-10 10:44  村尚chun叔  阅读(45)  评论(0编辑  收藏  举报