Linux 基础 - 用户管理

Linux 用户管理

Linux 中有用户和用户组两个概念,每个用户都有单独的 UID,每个用户组也有单独的 GID,采用 Int32 存储,Linux 用户分为,普通用户、根用户、系统用户。

普通用户就像 Windows 中自己创建的用户,基本没啥权限,只可以对 /home 中自己的目录进行操作,想要对其他目录操作需要授权,就像 Windows 中运行一个程序需要以管理员身份运行一样。一般普通用户的 UID 都是大于 1000 的(CentOS5,6 大于 500),因为系统在添加普通用户从 1000 (CentOS5,6 大于 1000)开始编号。

根用户就是 root 用户,就像 Windows 中的 Administrator 用户,UID 是 0,拥有完全的权限,啥都能改,啥都能删,一不小心就能把系统玩坏的那种。

系统用户,并不是真的用户,比如 CentOS 中,需要 mysql 用户运行 mysqld 进程,UID 是 1~999(CentOS5,6 范围 1~499)。

每个用户至少属于一个用户组。

查看当前用户 ID:id

[root@localhost ~]# id
uid=0(root) gid=0(root)=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

查看当前所属组:groups

[root@localhost ~]# groups
root

查看当前登录用户:who

[root@localhost ~]# who
root     pts/0        2020-09-25 08:48 (desktop-9l9jknp.mshome.net)

查看当前登录用户详细信息:w

[root@localhost ~]# w
 12:12:42 up  3:38,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    desktop-9l9jknp. 08:48    2.00s  0.19s  0.01s w

调查用户:finger

我用的 CentOS 是最小安装,当我在终端输入 finger 的时候提示 -bash: finger: 未找到命令 所以我先用 yum 安装了 finger

[root@localhost ~]# yum -y install finger 

然后执行 finger

[root@localhost ~]# finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone   Host
root      root       pts/0          Sep 25 08:48                           (desktop-9l9jknp.mshome.net)

默认没有参数的时候 会显示系统当前登录的用户

[root@localhost ~]# finger onlychina
Login: onlychina                        Name:
Directory: /home/onlychina              Shell: /bin/bash
Last login 五 9月 25 11:09 (CST) on pts/0
No mail.
No Plan.

新增用户:useradd

[root@localhost ~]# useradd onlychina
[root@localhost ~]# id onlychina
uid=1000(onlychina) gid=1000(onlychina)=1000(onlychina)
[root@localhost ~]# groups onlychina
onlychina : onlychina
[root@localhost ~]# ls /home
onlychina

-u 指定 UID

[root@localhost ~]# useradd -u 5555 onlychina5555
[root@localhost ~]# id onlychina5555
uid=5555(onlychina5555) gid=5555(onlychina5555)=5555(onlychina5555)
[root@localhost ~]# groups onlychina5555
onlychina5555 : onlychina5555
[root@localhost ~]# ls /home
onlychina   onlychina5555

可以看出 创建用户时 同时创建了 同名的用户组 以及家目录

-g 指定用户组

[root@localhost ~]# useradd -g onlychina onlychina1
[root@localhost ~]# id onlychina1
uid=1001(onlychina1) gid=1000(onlychina)=1000(onlychina)
[root@localhost ~]# groups onlychina1
onlychina1 : onlychina
[root@localhost ~]# ls /home
onlychina  onlychina1  onlychina5555

-d 指定家目录

[root@localhost ~]# useradd -d /home/home11 onlychina11
[root@localhost ~]# id onlychina11
uid=1002(onlychina11) gid=1002(onlychina11) 组=1002(onlychina11)
[root@localhost ~]# groups onlychina11
onlychina11 : onlychina11
[root@localhost ~]# ls /home
home11  onlychina  onlychina1  onlychina5555

修改密码:passwd

[root@localhost ~]# passwd onlychina
更改用户 onlychina 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

输入两遍相同的密码即可

普通用户也可以修改自己的密码

[onlychina@localhost ~]$ passwd
更改用户 onlychina 的密码 。
为 onlychina 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

先输入当前密码 再输入两遍新密码即可

修改用户:usermod

-d 修改用户家目录

[root@localhost ~]# cat /etc/passwd | grep onlychina11
onlychina11:x:1002:1002::/home/home11:/bin/bash
[root@localhost ~]# usermod -d /home/newhome11 onlychina11
[root@localhost ~]# cat /etc/passwd | grep onlychina11
onlychina11:x:1002:1002::/home/newhome11:/bin/bash

-L 冻结用户

[root@localhost ~]# cat /etc/shadow | grep onlychina11
onlychina11:$6$Kq3f7L0n$h0nsPKi.8cGAXxADmSv7gwT5GjjE/pxlzKEihtODc3kY82lY5IlLXBILyskexzmiIV1U3Gsj1/a64baYogedS1:18530:0:99999:7:::
[root@localhost ~]# usermod -L onlychina11
[root@localhost ~]# cat /etc/shadow | grep onlychina11
onlychina11:!$6$Kq3f7L0n$h0nsPKi.8cGAXxADmSv7gwT5GjjE/pxlzKEihtODc3kY82lY5IlLXBILyskexzmiIV1U3Gsj1/a64baYogedS1:18530:0:99999:7:::

-U 解冻用户

[root@localhost ~]# cat /etc/shadow | grep onlychina11
onlychina11:!$6$Kq3f7L0n$h0nsPKi.8cGAXxADmSv7gwT5GjjE/pxlzKEihtODc3kY82lY5IlLXBILyskexzmiIV1U3Gsj1/a64baYogedS1:18530:0:99999:7:::
[root@localhost ~]# usermod -U onlychina11
[root@localhost ~]# cat /etc/shadow | grep onlychina11
onlychina11:$6$Kq3f7L0n$h0nsPKi.8cGAXxADmSv7gwT5GjjE/pxlzKEihtODc3kY82lY5IlLXBILyskexzmiIV1U3Gsj1/a64baYogedS1:18530:0:99999:7:::

man usermod 可以查看更多参数

用法:usermod [选项] 登录

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -v, --add-subuids FIRST-LAST  add range of subordinate uids
  -V, --del-subuids FIRST-LAST  remove range of subordinate uids
  -w, --add-subgids FIRST-LAST  add range of subordinate gids
  -W, --del-subgids FIRST-LAST  remove range of subordinate gids
  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射

删除用户:userdel

[root@localhost ~]# id onlychina11
uid=1002(onlychina11) gid=1002(onlychina11)=1002(onlychina11)
[root@localhost ~]# userdel onlychina11
[root@localhost ~]# id onlychina11
id: onlychina11: no such user

并不会删除家目录和用户邮件

-r 可以删除用户全部信息

新增用户组:groupadd

[root@localhost ~]# cat /etc/group | grep onlychina
onlychina:x:1000:
onlychina5555:x:5555:
[root@localhost ~]# groupadd onlychina666
[root@localhost ~]# cat /etc/group | grep onlychina
onlychina:x:1000:
onlychina5555:x:5555:
onlychina666:x:1002:

删除用户组:groupdel

[root@localhost ~]# groupdel onlychina666
[root@localhost ~]# cat /etc/group | grep onlychina
onlychina:x:1000:
onlychina5555:x:5555:

切换用户:su

su 默认切换为 root 用户

[root@localhost ~]# su onlychina
[onlychina@localhost root]$ su onlychina1
密码:
[onlychina1@localhost root]$ exit
exit
[onlychina@localhost root]$ exit
exit
[root@localhost ~]#

su - 即切换用户也切换用户环境(家目录)

[root@localhost ~]# su - onlychina
上一次登录:五 9月 25 12:24:53 CST 2020pts/0 上
[onlychina@localhost ~]$ su - onlychina1
密码:
上一次登录:五 9月 25 12:25:09 CST 2020pts/0 上
[onlychina1@localhost ~]$ exit
登出
[onlychina@localhost ~]$ exit
登出
[root@localhost ~]#

以 root 用户身份执行命令:sudo

正常情况下,普通用户不可以执行需要 root 用户权限的命令。

[onlychina@localhost ~]$ passwd onlychina1
passwd:只有根用户才能指定用户名。

而 sudo 则可以以 root 用户身份去执行命令

[onlychina@localhost ~]$ sudo passwd onlychina1

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] onlychina 的密码:
onlychina 不在 sudoers 文件中。此事将被报告。

但是这里并没有执行成功,因为 onlychina 用户并没有使用 sudo 的权限,需要 root 用户在 /etc/sudoers 文件中设置 onlychina 用户的权限。

[onlychina@localhost ~]$ exit
登出
您在 /var/spool/mail/root 中有邮件
[root@localhost ~]# cat /var/spool/mail/root
From root@localhost.localdomain  Fri Sep 25 12:35:06 2020
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
        id 1AF8C200509F; Fri, 25 Sep 2020 12:35:06 +0800 (CST)
To: root@localhost.localdomain
From: onlychina@localhost.localdomain
Auto-Submitted: auto-generated
Subject: *** SECURITY information for localhost ***
Message-Id: <20200925043506.1AF8C200509F@localhost.localdomain>
Date: Fri, 25 Sep 2020 12:35:06 +0800 (CST)

localhost : Sep 25 12:35:06 : onlychina : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/onlychina ; USER=root ; COMMAND=/bin/passwd onlychina1

切换回 root 用户后将会收到刚才 onlychina 用户产生的邮件,告知 root 用户 onlychina 用户想要 sudo 执行某命令,但是没有使用 sudo 的权限。

root 用户需要修改 /etc/sudoers 文件,让 onlychina 用户可以使用 root 权限。

可以使用 vi 或者 vim 对 sudoers 进行修改,但是考虑到这个文件的重要性和安全性,Linux 提供了 visudo 命令,该命令在保存时将会检查 sudoers 的语法设置,放在造成无法使用 sudo 的后果。

[root@localhost ~]# visudo
......(略去内容)......
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root         ALL=(ALL)     ALL
onlychina    ALL=(ALL)     ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
......(略去内容)......

添加 onlychina 那一行 onlychina ALL=(ALL) ALL

其中 onlychina 是用户,ALL=(ALL) 任何登录点=(任何执行人),ALL 任何命令

onlychina ALL=(ALL) NOPASSWD:ALL 无需输入密码即可执行 sudo 命令

然后再尝试 onlychina 用户使用 sudo

[onlychina@localhost ~]$ sudo passwd onlychina1
[sudo] onlychina 的密码:
更改用户 onlychina1 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

sudo 并不是切换了用户,只是以 root 身份去执行一个命令,而可以执行的命令列表也在 sudoers 文件中

......(略去内容)......
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

## Next comes the main part: which users can run what software on
......(略去内容)......

secure_path 即是可以执行的命令列表,在这些目录内的程序可以被 sudo 执行,如果自己安装的程序在 /usr/local/bin 中,则可以将该目录添加进去

......(略去内容)......
# Defaults   env_keep += "HOME"

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

## Next comes the main part: which users can run what software on
......(略去内容)......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值