linuxuser⽤户管理
对于我们⾃⽤的系统,默认有⼀个超级⽤户 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
chaojun x10011001/home/chaojun/bin/sh
elliot x10001000elliot,,,/home/elliot/bin/bash
有⼈可能会问,不是只⽤ root、elliot、chaojun 三个⽤户吗?我怎么看到不⽌三⾏内容。其实是因为 Linux 的⼀些服务运⾏需要不同的权
限,为了安全,在服务安装的时候会⾃动给不同的服务创建⽤户来获得不同的权限。
还有⼀个⽤户数据库⽂件是 /etc/shadow,我们在终端输⼊命令:sudo cat /etc/shadow 即可看到其中的内容。
linux创建新用户和密码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:99
可以看到,每⼀⾏代表⼀个⽤户,每个⽤户的描述⽤ 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
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        切换到其他账号(输⼊当前账号密码)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。