Linux基础之用户管理

用户管理
Linux用户概述与分类:UID,GID
Linux用户相关文件/etc/passwd每一列含义
用户增删改查命令
sudo管理
堡垒机

Linux系统会有各种的用户,每个用户都有自己的用途,root是最高权限用户,普通用户只能执行普通的操作,还有虚拟用户,为了服务的运行存在的用户.

Linux中的用户是有一个标记的,类似人类的身份证号码ID,叫做UID和GID;
GID就是用户组的ID,group ID;

用户分类:
root用户,uid是0
普通用户:uid >= 1000,无法对系统进行更改,只能在当前家目录有权限;CentOS7只有改成1000,之前CentOS5和6都是500;
虚拟用户:uid < 1000,也叫傀儡用户,用于服务,进程运行使用的用户,无法直接使用;

与用户相关的文件
/etc/passwd 存放用户信息
/etc/shadow 存放密码信息
/etc/group 用户组信息
/etc/gshadow 用户组密码信息

/etc/passwd
[root@web01 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
每一列含义:
第一列:用户名;
第二列:密码占位符;密码存在/etc/shadow
第三列:uid;
第四列:gid;
第五列:用户说明信息;创建用户是添加的,不添加就是空;
第六列:用户家目录;
第七列:用户使用的命令解释器;shell;
Linux常用命令解释器:
/bin/sh;
/bin/bash;正常可以使用;
/sbin/nologin;虚拟用户;

/etc/shadow,存放密码信息
[root@web01 ~]# cat /etc/shadow
root:$6$57w4jvhJPK9LZrvW$csAleTMf3dzB8G/gDG./IiwBYiODlzHfqNfNR9DKVKCAWPGBB/qIC1VzxseDLtX3wKMLc15uZDWraCVBgWW9t/::0:99999:7:::
bin:*:18353:0:99999:7:::
这个比较琐碎;
第一列:用户名;
第二列:密码;
第三列以及后:密码过期时间等,默认不过期;

/etc/group 存放用户组信息
[root@web01 ~]# cat /etc/group
root:x:0:
bin:x:1:
第一列:用户组的名字;默认和用户名一致;
第二列:密码;
第三列:gid;
第四列:空,这个组里面有什么额外用户;

用户管理指令:
增加,删除,修改,查看;
增加:
useradd
选项:
-u:指定uid;
-s:指定命令解释器,默认/bin/bash;
-M:不创建家目录;

-g:指定组;

-G:指定,附加组;

案例:添加用户mysql,指定uid 1314,指定命令解释器为/sbin/nologin,不创建家目录;
[root@web01 ~]# useradd -u 1314 -s /sbin/nologin -M mysql
这几个选项,不分前后顺序;
[root@web01 ~]# useradd -u 1314 -s /sbin/nologin -M mysql
id:查看用户信息;
[root@web01 ~]# id mysql
uid=1314(mysql) gid=1314(mysql) groups=1314(mysql)

passwd:设定/修改密码;
选项:
--stdin
案例:给mc1用户设置密码
[root@web01 ~]# passwd mc1
Changing password for user mc1.
New password:
//这是用交互界面设定密码
可以指定密码形式修改,不用交互式方法
[root@web01 ~]# echo 123 | passwd --stdin mc1

切换用户:su
su - mc1
作用:退出当前用户,换新用户;
su是命令,-是命令选项,-l --login
切换用户的时候,更新用户的配置与环境变量;

删除用户:userdel
选项:
-r:删除用户及家目录,默认不删除家目录,邮箱;
[root@web01 ~]# userdel -r mc1

 

修改用户信息
usermod
选项:
-s:指定命令解释器;
-d:指定用户的家目录;
-G:指定加入组;
[root@web01 ~]# usermod -G root mc1
[root@web01 ~]# id mc1
uid=1000(mc1) gid=1000(mc1) 组=1000(mc1),0(root)
[root@web01 ~]# usermod -G '' mc1 //删除其他组

查看
id 查询用户的uid,gid,用户组信息,检查用户是否存在;
whoami 查询当前用户的名字;
w 查看当前登录的用户的信息;
last 用户的登录情况;
lastlog 所有用户最近一次登录情况;

w
[root@web01 ~]# w
19:47:12 up 31 min, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.0.115 19:24 0.00s 0.06s 0.02s w
分析w命令:第一行,相当于命令uptime
第一行,第一列,系统时间;第二列,运行时长;第三列,连接用户数;第四列;系统负载,一分钟,五分钟,十五分钟,这里的数字,越接近CPU的数量,越忙;
第二行,第二列:tty:终端;pts代表远程,tty代表本地直连;
第二行,第三列:IP,从哪登录的;
第二行,最后列:WHAT,代表作什么,-bash代表什么都没做;
第二行,IDLE,空闲时间;
第二行,LOGIN@,几点登录的;
第二行,JCUP,PCPU,跟CPU相关,占用CUP的时间;

last,lastlog,查看最后登录情况;
[root@web01 ~]# last //显示所有用户登录信息;
[root@web01 ~]# lastlog //显所有用户最近一次登录信息;

注:chpasswd,可以批量改密码;

用户组命令
创建用户组 groupadd
使用场景:指定用户的uid和gid的时候可以用下groupadd;
创建组指定gid : groupadd -g 123 mc1
创建用户指定uid与用户组 useradd -u 123 -g mc1 -s /sbin/nologin -M mc1

 

故障案例:
命令行-bash-4.2$这样提示
[root@web01 ~]# ll -a /etc/skel/
总用量 24
drwxr-xr-x. 2 root root 62 12月 6 07:40 .
drwxr-xr-x. 81 root root 8192 12月 10 06:58 ..
-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc
先了解,创建用户,就是将/etc/skel下的文件复制到用户家目录的过程;
出现-bash-4.2$,就是因为用户家目录的这些文件丢了,这时候,复制过来就可以解决了;

sudo权限管理
sudo,用于给普通用户配置的命令,配置了sudo权限后普通用户可以以root权限运行命令;
授权sudo,需要使用root;
root授权配置
visudo (==背后修改vi /etc/sudoers)
普通用户使用
sudo + 命令

案例1:给普通用户添加cat,head,tail,grep的root权限
实操方法:
登录root用户:
[root@web01 ~]# visudo
在100行之后,照着添加
root ALL=(ALL) ALL //这是第100行,文件本身就有
mc1 All=(ALL) /bin/cat, /bin/head, /bin/tail, /bin/grep
//这是新添加的,工作中可以写到最后一行,这里只是照着学习,写到了这一行
///bin/cat, /bin/head, /bin/tail, /bin/grep,这些是用逗号空隔分隔的
然后就可以用普通用户测试了
[mc1@web01 ~]$ cat /var/log/secure
cat: /var/log/secure: 权限不够
[mc1@web01 ~]$ sudo cat /var/log/secure

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
...
用户如何查看自己有哪些sudo权限命令呢?
[mc1@web01 ~]$ sudo -l //看最后两行即可

案例2:授权所有命令且不需要输密码;
[root@web01 ~]# visudo //第102行,输入下面内容
mc1 ALL=(ALL) NOPASSWD:ALL

授权/bin/下所有命令
mc1 All=(ALL) /bin/*

posted @ 2022-12-17 16:16  mclind  阅读(93)  评论(0编辑  收藏  举报