一、管理用户账户
1.查看用户账户
Linux没有直接查看用户列表的命令,但是可以查看用户配置文件/etc/passwd用文本编辑器打开去搜索或者管道操作grep命令查找。
Linux用户账户及其相关信息除了密码均放在/etc/passwd配置文件中,因为所有用户都对这个文件有读取权限,所以密码在这里是不可见的(保存在/etc/shadow文件中)。(很有趣,文件名叫passwd偏偏没有passwd)
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/noloqin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
zxp:x:1000:1000:zxp,,,:/home/zxp:/bin/bash
guest-mCF3IT:x:116:126.Guest,,,:/tmp/guest-mCF3IT:/bin/bash
zhang:x:1001:1001 :zhang,,,:/home/ zhang:/bin/bash
该文件中一行定义一个用户账户, 每行均由7个字段构成,各字段值之间用冒号分隔,每个字段均标识该账户某方面的信息,基本格式如下:
账户名:密码:UID:GID:注释:主目录:Shell
各字段说明如下:
●账户名是用户名,又称登录名。最长不超过32个字符,可使用下画线和连字符。
●密码使用x表示,因为passwd文件不保存密码信息。
●UID是用户账户的编号。用户账户唯一标识,root的UID为0,系统账户UID为1~499还包括65534。
●GID用于标识用户所属的默认组。组账户唯一标识,超级组名root的GID0。系统组由Linux系统本身或应用程序使用GID范围为1~499。
●注释可以是用户全名或其他说明信息(如电话)。
●主目录是用户登录后首次进入的目录,这里必须使用绝对路径。
●Shell 是用户登录后所使用的一个命令行界面。Ubuntu默认使用的是/bin/bash如果该字段的值为空,则表示使用bin/bash。如果要禁止用户账户登录Linux只描将该段设置为/sbin/nologin即可。如,对于系统账户ftp来说,般只允许它登陆和访问FTP服务器,并不允许它登录Linux操作系统。如果临时用某个账户,可以在passwd文件中该账户记录行前加星号(*)。
例如:zxp@Linux:~$ cat /etc/passwd | grep zhang
结果为:zhang:x:1001:1001 :zhang,,,:/home/ zhang:/bin/bash
2.添加用户账户
在Ubuntu中添加用户可使用Linux通用命令useradd,其基本用法如下:
useradd [选项] <用户名>
该命令的选项较多例如:
- -d用于指定用户主目录
- -g用于指定该用户所属主要组(名称或ID均可)
- -G用于指定用户所属其他组列表,各组之间用逗号分隔
- -r指定创建一个系统账户,建立系统账户时不会建立主目录,其UID也会有限制
- -s指定用户登录时所使用的Shell默认为/bin/bash
- -u 指定新用户的UID。
对于没有指定上述选项的情况,系统将根据etc/default/useradd配置文件中的定义为新建用户账户提供默认值,如是否创建用户私有目录等。Linux还利用/etc/skel/目录为新用户初始化主目录。/etc/skel目录一般是存放用户启动文件的目录,这个目录由root权限控制,当管理员添加用户时,这个目录下的文件自动复制到新添加的用户的家目录下; /etc/skel 目录下的文件都是隐藏文件,也就是类似.file 格式的;可通过修改、添加、删除/ete/skel 目录下的文件,来为用户提供一个统一、标准的、默认的用户环境。
下面是一个创建用户账户的简单例子,在创建一个名为wang的用户账户的同时,创建并指定主目录home/wang,创建私有用户组wang,将登录Shell指定为/bin/bash,自动赋予一个UID。
zxp@LinuxPC1:~$ sudo useradd wang
[sudo] password for zxp:
zxp@LinuxPC1:~$ cat /etc/passwd | grep wang
wang:x:1004:1004::/home/ wang:
默认情况下创建用户账户的同时也会建立一个与用户名同名的组账户,该组作为用户的主组(祖祖,哈哈哈)(默认组)。
useradd -D
用于显示或默认的useradd配置,也就是etc/default/useradd文件中的设置参数。下面的例子中添加了:
zxp@LinuxPC1:~$ useradd -D
GROUP=100
HOME= /home //把用户的主目录建在/home中
INACTIVE=-1 //是否启用账户过期停权,-1表示不启用
EXPIRE= //账户终止日期,不设置表示不启用
SHELL=/bin/sh //所用SHELL的类型
SKEL=/etc/skel //默认添加用户的目录默认文件存放位置,添加用户时用户主目录下的文件都是从该目录中复制过去的
CREATE MAIL SPOOL=no
Ubuntu还特别提供个adduser
命令用于创建用户账户,是以交互对话的方式执行的命令,创建出来的是完整的可登录的。
adduser与useradd的区别
3.管理用户账户密码
创建的用户如果没有设置密码,其将处于锁定状态不能登录系统。在/etc/shadow文件中查看到的密码部分为!(shadow文件也是每行定义和保存一-个账户的相关信息。每行均由9个字段构成,基本格式如下:
账户名:密码:最近一次修改:最短有效期:最长有效期:过期前警告期:过期日期:禁用:保留用于未来扩展
)可以使用passwd 选项 用户名
为用户设置密码zxp@Linux:~$ sudo passwd wang
passwd -l 用户名
可以锁定用户,使其不能登录系统
passwd -u 用户名
可以解除锁定
passwd -d 用户名
可以删除密码。删除后当然就不能登陆啦,除非重新设置一个。
passwd -S 用户名
可以查看某个账户的当前状态
4.修改用户账户
usermod 选项 用户名
大部分和useradd命令一样用法一样。
有几个不一样的:
useradd -l 新用户名 原用户名
。
useradd -L 用户名
,锁定账户,临时禁止改用户登录,-U解除锁定
chfn 选项 用户名
更改用户个人信息,-f全名,-h家庭电话,-o办公地址
5.删除用户账户
userdel -r 用户名
如果使用选项-r,则在删除该账户的同时,一并删除该账户对应的主目录和邮件目录。注意userdel不允许删除正在使用(已经登录)的用户账户。
另一个用户删除命令deluser
在Ubuntu中使用较多。其中选项-remove-home
表示同时删除用户的主目录和邮箱; -remove-all-files
表示删除用户拥有的所有文件; -backup
表示删除前将文件备份,-backup-to 目录
指定备份的目标目录(默认是当前目录); -system
表示只有当该用户是系统用户时才删除。
二、管理组账户
1.创建组账户
groupadd [选项] 组名
-g可自行指定组的GID。
-r则创建系统组,其GID值小于500;若不带此选项,则创建普通组。
当然这个也能倒过来addgroup
命令用于创建组账户,该命令执行过程中可提供交互对话。添加一个普通用户组的语法格式如下:
addgroup -gid ID 组名
添加一个管理员用户组的语法格式如下:
addgroup -system -gid 组ID 组名
2.修改组账户
groupmod -g GID -n 新组名 组名
3.删除组账户
groupdel 组名
要删除的组不能是某个用户账户的主组,否则将无法删除;若要删除,则应先删除
该组的成员账户,然后再删除组。
另一个组删除命令delgroup
在Ubuntu中使用较多。其中选项-system
表示只有当该
组是系统用户组时才删除,-only-if-empty
表示只有当该用户组中无成员时才删除。
4.管理组成员
groups命令用于显示某用户所属的全部组,如果没有指定用户名则默认为当前登录用
例如:
~$ groups
ZXP adm cdrom sudo dip plugdev lpadmin sambashare
~$ groups wang
wang : wang
要查看某个组有哪些组成员,需要查看/etc/group配置文件,其每个条目的最后字是组成员用户列表。
可以使用命令gpasswd将用户添加到指定的组,使其成为该组的成员gpasswd --a 用户名 组名
将某用户从组中删除gpasswd --d 用户名 组名
将若干用户置为组成员(添加到组中)gpasswd --M 用户名,用户名... 组名
另外,用户添加到组中从组中删除:adduser 用户名 组名
deluser 用户名 组名
参考书目《Ubuntu Linux 操作系统》