Linux 用户管理

作者: 错过了过去 | 来源:发表于2019-06-16 20:00 被阅读19次

今天是周日了,美美的睡了一个午觉,感觉一周的劳累全部释放掉了。前面我和大家分享文件权限 的时候有讲过要单独写文章介绍 Linux 系统的用户管理,今天我们就一起来看看吧。

对于我们自用的系统,默认有一个超级用户 root,还有一个普通用户,就是我们在安装操作系统 的时候自己设置的那个用户名,比如我的叫做 elliot。其实有这两个用户就可以了,我们也不必去管怎么增加用户,删除用户等。但是考虑到我们可能想改一下用户名,改一下用户密码等,我还是决定介绍一些这些内容,不感兴趣的朋友可以不必看,不影响你对 Linux 系统的正常使用。

还有一点,Linux 系统还有服务器版本的,一般同一个服务器会有很多人使用,所以都会给每个使用的人都创建一个普通用户。好了那我们一起来看看是怎么操作的吧。

1. useradd 命令

我们创建新的用户使用的是 useradd 命令,在终端输入:useradd -h 或者 useradd --help 可以看到如下页面,是 useradd 命令的说明文档。下面我们来看几个重要的参数。

20190317172741022_681778810.png
  • -d 账号主目录(复制于 /etc/skel)
  • -m 同时创建主目录(默认首次创建用户的时候才生效)
  • -c 全名(描述)
  • -e 账号过期 YYYY_MM_DD
  • -N 不创建同名组账号
  • -g 指定主组(必须存在)
  • -G 额外组

看上面的描述肯定会有人云里雾里的,看不懂,接着来看一个创建新用户的例子吧:

  • sudo useradd -d /home/chaojun -m chaojun:这条命令执行后,我们就创建了一个新用户 chaojun,同时创建了 chaojun 用户的家目录 /home/chaojun

这里需要注意, 账号最长 32 个字符,用户的家目录下的文件拷贝自 /etc/skel。执行 ll /etc/skel 就可以看到其中包含的文件,如下图:

20190317173725852_516822355.png

2. 管理用户

既然添加了新的用户,那我们的系统就存在多个用户,操作系统是怎么管理我们的多个用户的呢?其实在 Linux 系统下,有一个账号数据库文件:/etc/passwd,我们一起来看看它里面的内容是怎么样的吧:在终端输入:cat /etc/passwd 便能看到。

elliot@ubunut:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin
syslog:x:102:106::/home/syslog:/usr/sbin/nologin
messagebus:x:103:107::/nonexistent:/usr/sbin/nologin
_apt:x:104:65534::/nonexistent:/usr/sbin/nologin
uuidd:x:105:111::/run/uuidd:/usr/sbin/nologin
avahi-autoipd:x:106:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
rtkit:x:109:114:RealtimeKit,,,:/proc:/usr/sbin/nologin
cups-pk-helper:x:110:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
whoopsie:x:112:117::/nonexistent:/bin/false
kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin
saned:x:114:119::/var/lib/saned:/usr/sbin/nologin
pulse:x:115:120:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
avahi:x:116:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
colord:x:117:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false
geoclue:x:119:124::/var/lib/geoclue:/usr/sbin/nologin
gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false
gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false
elliot:x:1000:1000:elliot,,,:/home/elliot:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false
chaojun:x:1001:1001::/home/chaojun:/bin/sh
elliot@ubunut:~$ 

其中每一行代表一个用户,每个用户的描述是用冒号分隔开的 7 个字段,他们代表的含义不一样,为了简单,我举个例子来解释每个字段的含义,当然真实含义并不全是这样的。

用户名 房间号 公司电话 住宅电话 other 主目录 shell
chaojun x 1001 1001 /home/chaojun /bin/sh
elliot x 1000 1000 elliot,,, /home/elliot /bin/bash

有人可能会问,不是只用 root、elliot、chaojun 三个用户吗?我怎么看到不止三行内容。其实是因为 Linux 的一些服务运行需要不同的权限,为了安全,在服务安装的时候会自动给不同的服务创建用户来获得不同的权限。

还有一个用户数据库文件是 /etc/shadow,我们在终端输入命令:sudo cat /etc/shadow 即可看到其中的内容。

elliot@ubunut:~$ sudo cat /etc/shadow
[sudo] password for elliot: 
root:!:17960:0:99999:7:::
daemon:*:17937:0:99999:7:::
bin:*:17937:0:99999:7:::
sys:*:17937:0:99999:7:::
sync:*:17937:0:99999:7:::
games:*:17937:0:99999:7:::
man:*:17937:0:99999:7:::
lp:*:17937:0:99999:7:::
mail:*:17937:0:99999:7:::
news:*:17937:0:99999:7:::
uucp:*:17937:0:99999:7:::
proxy:*:17937:0:99999:7:::
www-data:*:17937:0:99999:7:::
backup:*:17937:0:99999:7:::
list:*:17937:0:99999:7:::
irc:*:17937:0:99999:7:::
gnats:*:17937:0:99999:7:::
nobody:*:17937:0:99999:7:::
systemd-network:*:17937:0:99999:7:::
systemd-resolve:*:17937:0:99999:7:::
syslog:*:17937:0:99999:7:::
messagebus:*:17937:0:99999:7:::
_apt:*:17937:0:99999:7:::
uuidd:*:17937:0:99999:7:::
avahi-autoipd:*:17937:0:99999:7:::
usbmux:*:17937:0:99999:7:::
dnsmasq:*:17937:0:99999:7:::
rtkit:*:17937:0:99999:7:::
cups-pk-helper:*:17937:0:99999:7:::
speech-dispatcher:!:17937:0:99999:7:::
whoopsie:*:17937:0:99999:7:::
kernoops:*:17937:0:99999:7:::
saned:*:17937:0:99999:7:::
pulse:*:17937:0:99999:7:::
avahi:*:17937:0:99999:7:::
colord:*:17937:0:99999:7:::
hplip:*:17937:0:99999:7:::
geoclue:*:17937:0:99999:7:::
gnome-initial-setup:*:17937:0:99999:7:::
gdm:*:17937:0:99999:7:::
elliot:$6$LaBA0Snx$otlymeUGos/2uKD1Ke8IaEonwXIvcVCAuHMd4MxVVYp7eAevi5YSDUv0AWX0iPpi5.4nK6.6vgt.NSrc6ykB./:17960:0:99999:7:::
vboxadd:!:17962::::::
chaojun:!:17972:0:99999:7:::
elliot@ubunut:~$ 

我们还是来举例说明其中的含义,例子:elliot:$6$LaBA0Snx$otlymeUGos/2uKD1Ke8IaEonwXIvcVCAuHMd4MxVVYp7eAevi5YSDUv0AWX0iPpi5.4nK6.6vgt.NSrc6ykB./:17960:0:99999:7:::

可以看到,每一行代表一个用户,每个用户的描述用 8 个 冒号隔开,也就是 9 个字段描述。下面详细说明每个字段的含义:

  • 1-2 用户名:密码
    • 密码为 "!"、"*" 的账号不能直接登录系统(其他账号登录后可切换为)
    • !:密码锁定
  • 3 上次修改日期
    • 自 1970-01-01 起的天数
    • 0 表示用户下次登录时需要修改密码,空表示关闭密码过期功能
  • 4-5 密码最小使用期:密码最长使用期
    • 后值小于前值时用户无法修改密码
  • 6 密码过期前几天提醒
  • 7 密码过期几天后账号会被锁定
    • 账号过期用户不能登录,密码过期看此设置
  • 8 账号过期日期(距 1970-01-01 的天数)
  • 9 保留

3. 设置账号密码

  • passwd chaojun
    • -l 锁定账号密码!
    • -u 解锁账号
    • -d 删除密码(账号无密码可登录)
    • -n/-x 密码最小/最大使用期
    • -w 密码过期前几天发出警告
    • -i 密码过期几天后锁定账号
    • -e 密码立刻过期(下次登录必须修改密码)
    • -S 查看账号的密码状态(L锁定、P活动、N没密码)

4. 添加账号

  • adduser chaojun
    • 基于 useradd 的 Perl 脚本
    • 并非所有的Linux发行版本都包含
    • 向导式运行(不需要记忆命令)
    • /usr/sbin/adduser
  • 批量添加账号
    • sudo newusers users.txt
      • user1:passwd1:::user1:/home/user1:/bin/bash
      • user2:passwd2:::user2:/home/user2:/bin/bash

5. 删除账号

  • userdel chaojun
    • 未同时删除用户主目录
    • 进行文件备份
  • rm -rf /home/chaojun 删除用户主目录
  • userdel -r chaojun 删除账号的同时删除其主目录

6. 切换账号

su                      需要输入root密码(默认失败)
sudo su                 输入当前账号密码(当前账号属于sudo组)
sudo -i                 同上
sudo -s                 同上
su chaojun              切换到其他账号(输入目标账号密码)
sudo su chaojun         切换到其他账号(输入当前账号密码)

今天的分享就到这里了,有什么不懂的可以给我留言或者私信我哦!

相关文章

  • 第三节 用户及文件权限管理

    一、linux用户管理 linux中管理员帐户:root 超级用户 提示符号: # ...

  • 用户、用户组常用操作

    Linux用户账号的管理 原文:Linux的用户和用户组管理 一、添加用户 1、命令 useradd [com...

  • linux修改权限的相关命令

    Linux命令-用户、权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理。 ...

  • linux回顾(2)

    1.Linux命令-用户、权限管理 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理...

  • Linux 基础知识

    本文包括: 1、Linux 系统概述 2、Linux 用户和用户组管理 3、Linux 文件和目录管理 4、Lin...

  • Linux将新建用户加入到管理员

    Linux将新建用户加入到管理员 @(linux)[用户管理] [TOC] Ps: 下面操作,都是在root用户下...

  • Linux用户及用户组

    用户、组和权限管理 组 Linux用户和组管理

  • Linux / Unix用户管理教程

    Linux / Unix用户管理教程 由于Linux是一个多用户操作系统,因此管理员需要管理用户帐户,权限和整体系...

  • Linux 用户及文件权限管理

    由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看、修改彼此的文件。 一、Linux用户管理 ...

  • Linux第二天

    Linux第二天 用户和用户组管理 在Linux中通过配置文件来存储用户和用户组信息 用户管理 用户添加 : us...

网友评论

    本文标题:Linux 用户管理

    本文链接:https://www.haomeiwen.com/subject/rwtnfctx.html