/etc目录下配置文件说明

passwd系统用户信息文件

  • cat /etc/passwd : 查看系统用户信息文件
[root@1997sty ~]# cat /etc/passwd | head -1
root:x:0:0:root:/root:/bin/bash
  1. 用户名
  2. 用户密码(已经被隐去,写入其他文件)
  3. 用户的uid信息
  4. 用户的gid信息
  5. 注释
  6. 家目录信息
  7. 用户登录系统方式
  • /bin/bash通用的解释器
  • /usr/bin/sh等价于/bin/bash
  • /usr/bin/bash等价于/bin/bash
  • /sbin/nologin无法登录系统
  • /usr/sbin/nologin无法登录系统

QQ图片20191123151005.png

shadow系统用户密码文件

  • cat /etc/shadow : 查看系统用户密码文件

QQ图片20191123151011.png

group组用户记录文件

  • cat /etc/group : 查看组用户记录文件

QQ图片20191123151014.png

gshadow用户组密码文件

  • cat /etc/gshadow : 查看组用户密码文件

QQ图片20191123151029.png

系统的操作命令

useradd命令

创建用户命令

  • useradd 1997sty : 创建一个1997sty用户
  • useradd 1997sty -M -s /sbin/nologin : 创建一个1997sty用户,不创建家目录,指定shell登录方式为/sbin/nologin(无法登录的用户)
  • useradd 1997sty -u 2000 : 创建一个1997sty用户,指定用户uid为2000
  • useradd 1997sty -g 1997sty_1 -G 1997sty_2 : 创建一个1997sty用户,指定用户所属组为1997sty_1,指定用户附属组为1997sty_2
  • useradd 1997sty -c "manager" : 创建一个1997sty用户,注释信息为manager

指定用户shell登录方式

  • /bin/bash通用的解释器
  • /usr/bin/sh等价于/bin/bash
  • /usr/bin/bash等价于/bin/bash
  • /sbin/nologin无法登录系统
  • /usr/sbin/nologin无法登录系统

执行参数

  • -M : 不创建家目录
  • -s : 指定用户shell登录方式
  • -u : 指定用户uid信息
  • -g : 指定用户所属主要组信息
  • -G : 指定用户所属附属组信息
  • -c : 指定用户注释信息

usermod命令

修改用户信息

  • usermod 1997sty -s /sbin/nologin : 修改1997sty用户,指定shell登录方式为/sbin/nologin(无法登录的用户)
  • usermod 1997sty -u 3000 : 修改1997sty用户,指定uid为3000

指定用户shell登录方式

  • /bin/bash通用的解释器
  • /usr/bin/sh等价于/bin/bash
  • /usr/bin/bash等价于/bin/bash
  • /sbin/nologin无法登录系统
  • /usr/sbin/nologin无法登录系统

执行参数

  • -s : 指定用户shell登录方式
  • -u : 指定用户uid信息
  • -g : 指定用户所属主要组信息
  • -G : 指定用户所属附属组信息
  • -c : 指定用户注释信息

userdel命令

删除用户信息

  • userdel 1997sty : 删除1997sty用户
  • userdel -r 1997sty : 删除1997sty用户以及用户的家目录

passwd命令

修改用户密码信息

  • passwd : 修改当前用户密码
  • passwd 1997sty : 修改1997sty用户密码

非交互式设置密码

  • echo 123456|passwd --stdin 1997sty : 修改1997sty用户密码

企业中密码管理

  1. 密码要复杂12位以上字母数字及特殊符号
  2. 保存好密码信息 keepass 密码保险柜,本地存储密码 lastpass 密码保险柜,在线存储密码
  3. 大企业 用户和密码统一管理 相当于活动目录AD openldap域 用户信息统一保存在一个用户管理服务器中 用户的家目录中的文件 用户密码 用户名称
  4. 动态密码:动态口令,第三方提供自己开发也很简单

groupadd命令

创建用户组

  • groupadd 1997sty_group : 创建1997sty_group用户组
  • groupadd -g 1234 1997sty_group : 创建1997sty_group用户组,gid为1234

groupmod命令

修改用户组

  • groupmod -n group_1997sty 1997sty_group : 修改1997sty_group用户组名为group_1997sty
  • groupmod -g 1234 1997sty_group : 修改1997sty_group用户组gid为1234

groupdel命令

删除用户组

  • groupdel 1997sty_group : 删除1997sty_group用户组

chown命令

修改文件属主和属组信息

  • chown 1997sty /root/1997sty : 修改1997sty文件属主信息为1997sty
  • chown 1997sty.1997sty /root/1997sty : 修改1997sty文件属主和属组信息为1997sty
  • chown -R 1997sty.1997sty /root/1997sty : 修改1997sty目录,子目录和目录内文件的属主和属组信息为1997sty

id命令

查看用户信息

  • id : 查看当前用户信息
  • id root : 查看root用户信息

w命令

显示正在登陆系统的用户信息

  • w : 显示正在登陆系统的用户信息
 16:23:53 up 4 days,  1:00,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1        13:41    1.00s  0.22s  0.22s -bash

参数说明

  1. 登录用户
  2. 登录方式 pts/x 远程登录系统 tty1 本地登录
  3. 登录到服务器的地址
  4. 登录时间
  5. IDLE 空闲时间
  6. 用户操作系统 消耗的CPU资源时间
  7. 用户操作系统 消耗的CPU资源时间
  8. 用户进行的操作

发送文本给其他登录用户

  • echo "发送该文本到其他登录用户的命令行" >/dev/pts/1 : 发送该文本到其他登录用户的命令行

su命令

切换用户命令

  • su 1997sty : 切换到1997sty用户
  • su - 1997sty : 切换到1997sty用户,并且更改所有变量(使用env命令查看)
[root@1997sty ~]# su - 1997sty
上一次登录:一 11月 25 18:23:58 CST 2019pts/2 上
[1997sty@1997sty ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/1997sty/.local/bin:/home/1997sty/bin
[1997sty@1997sty ~]$ exit
登出
[root@1997sty ~]# su 1997sty
[1997sty@1997sty root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin

visudo命令

编辑/etc/sudoers只读文件,可以赋予其他用户权限

  • 1997sty ALL=(ALL) /usr/sbin/useradd, /usr/bin/rm该行文本赋予了1997sty用户useradd,rm命令root级别的权限,修改完成后:wq保存退出(位于文本第91行)
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
1997sty ALL=(ALL)       /usr/sbin/useradd, /usr/bin/rm

配置方法

#配置单个或多个命令
1997sty ALL=(ALL)       /usr/sbin/useradd, /usr/bin/rm
#授权单个命令目录或多个命令目录,并排除visudo命令
/usr/sbin/*, !/usr/sbin/visudo , /usr/bin/*
#不需要输入用户密码,可以直接sudo方式执行命令
NOPASSWD: /usr/sbin/*, !/usr/sbin/visudo , /usr/bin/*

sudo命令

让普通用户执行root命令的一个工具

  • sudo useradd 1997stysudo : 使用sudo命令创建一个1997stysudo用户(普通用户执行该命令且被赋予该root权限)
  • sudo rm -rf /root/1997sty : 使用sudo命令强制删除1997sty文件(普通用户执行该命令且被赋予该root权限)
  • sudo -l : 使用sudo命令查看被赋予的root权限(普通用户执行该命令且被赋予该root权限)

sudo命令近期第一次使用时提示以下信息并要求输入密码

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

  #1) Respect the privacy of others.
  #1) 尊重别人的隐私。
  #2) Think before you type.
  #2) 输入前要先考虑(后果和风险)。
  #3) With great power comes great responsibility.
  #3) 权力越大,责任越大。
[sudo] password for 1997sty: 
User oldboy may run the following commands on 1997sty:
  (ALL) /usr/sbin/useradd, /usr/bin/rm