linux user 用户管理

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

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

 

1. useradd 命令

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

  • -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 就可以看到其中包含的文件,如下图:

 

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
chaojunx10011001 /home/chaojun/bin/sh
elliotx10001000elliot,,,/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         切换到其他账号(输入当前账号密码)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值