Linux系统下关于用户和用户组的常用操作

在服务器搭建及日常使用中,鉴于权限的配置,经常会对用户及用户组进行设置,因此,将关于用户的常用操作总结如下。

一、创建新用户useradd

1、命令参数

用法:useradd [选项] 登录
useradd -D
useradd -D [选项]

选项:
-b, –base-dir BASE_DIR 新账户的主目录的基目录
-c, –comment COMMENT 新账户的 GECOS 字段
-d, –home-dir HOME_DIR 新账户的主目录
-D, –defaults 显示或更改默认的 useradd 配置
-e, –expiredate EXPIRE_DATE 新账户的过期日期
-f, –inactive INACTIVE 新账户的密码不活动期
-g, –gid GROUP 新账户主组的名称或 ID
-G, –groups GROUPS 新账户的附加组列表
-h, –help 显示此帮助信息并推出
-k, –skel SKEL_DIR 使用此目录作为骨架目录
-K, –key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, –no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, –create-home 创建用户的主目录
-M, –no-create-home 不创建用户的主目录
-N, –no-user-group 不创建同名的组
-o, –non-unique 允许使用重复的 UID 创建用户
-p, –password PASSWORD 加密后的新账户密码
-r, –system 创建一个系统账户
-R, –root CHROOT_DIR chroot 到的目录
-s, –shell SHELL 新账户的登录 shell
-u, –uid UID 新账户的用户 ID
-U, –user-group 创建与用户同名的组
-Z, –selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
–extrausers Use the extra users database

2、实例演示

2-1、添加用户xjl,并指定用户ID:1001

robin@robin-Lenovo:~$ useradd -u 1001 xjl

注意,这里的userID最好取500以上,否则和系统虚拟用户ID相冲突。如果加上-M参数,则不为该用户创建用户目录,如 /home/xjl 。

2-1、添加用户xjl,不创建用户目录,并设置该用户不能登录系统

robin@robin-Lenovo:~$ useradd -M -s /sbin/nologin xjl

2-3、添加用户xjl,并指定用户组为www

robin@robin-Lenovo:~$ usradd -g www xjl

3、设置用户密码 passwd username

  • 创建用户和修改密码等操作需要用到管理员权限,ubuntu下在命令前加sudo临时提权执行任务。
  • 设置密码时,需要输入两次,以确保输入正确。

二、查看系统内所有已存在的用户

系统用户保存在/etc/passwd文件中,查看用户时只需要打开passwd文件即可,可以通过vim或cat命令来实现

robin@robin-Lenovo:~$ vim /etc/passwd
  • 可以看到我们刚才创建的xjl用户的一些基本信息

三、删除用户 userdel

1、命令参数

用法:userdel [选项] 登录

选项:
-f, –force 即使不属于此用户,也强制删除文件
-h, –help 显示此帮助信息并推出
-r, –remove 删除主目录和邮件池
-R, –root CHROOT_DIR chroot 到的目录
-Z, –selinux-user 为用户删除所有的 SELinux 用户映射

  • 默认情况下,userdel命令只会删除/etc/passwd文件中的信息,而不会删除系统中属于该账户的任何文件。
  • 如果加上-r,userdel会删除用户的HOME目录以及mail目录。然后,系统上仍可能存有归已删除用户所有的其他文件。这在有些环境中会造成问题。
  • 使用-r参数时要特别小心。你永远不知道用户是否在他的HOME目录下存放了其他用户或其他程序要使用的重要文件。记住在删除用户的HOME之前一定要检查清楚!

2、实例演示

2-1、删除一个用户,并删除其主目录

robin@robin-Lenovo:/home$ sudo userdel -r xjl
  • 这里的-r 是连同user一道,将 /home/xjl/ 目录也删除;
  • 如果不加 -r,就只删除用户 xjl,而不删除目录 /home/xjl/
  • 因为我们创建用户xjl时没有创建主目录,所以提示『未找到 xjl 的主目录“/home/xjl”』

四、创建用户组 groupadd

1、命令参数

用法:groupadd [选项] 组

选项:
-f, –force 如果组已经存在则成功退出
并且如果 GID 已经存在则取消 -g
-g, –gid GID 为新组使用 GID
-h, –help 显示此帮助信息并推出
-K, –key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, –non-unique 允许创建有重复 GID 的组
-p, –password PASSWORD 为新组使用此加密过的密码
-r, –system 创建一个系统账户
-R, –root CHROOT_DIR chroot 到的目录
–extrausers Use the extra users database

2、实例

2-1添加一个group,并指定group id:

robin@robin-Lenovo:/home$ sudo groupadd -g 501 www
  • groupID最好取500以上,否则和系统虚拟用户组ID相冲突。

2-2查看当前有哪些group:

robin@robin-Lenovo:/home$ cat /etc/group
  • 最后一行:www:x:501:就是我们刚刚创建的用户组
  • 这里的x表示有密码,只是个占位符,真正有没有密码还有看其他文件
  • cat /etc/shadow 会看到所有用户的MD5加密后的密码

五、删除用户组 groupdel

1、命令参数

用法:groupdel [选项] 组

选项:
-h, –help 显示此帮助信息并推出
-R, –root CHROOT_DIR chroot 到的目录
-f, –force 删除组,即使它是用户的主要组

2、实例

2-1、删除一个group

robin@robin-Lenovo:/home$ sudo groupdel www
  • 如果要删除的group中还有成员user,该操作会失败。解决办法:先删除group下的所有user,然后再删group;或者,将group下的所有user放到其他group下,再删当前group。

六、向组中添加、删除用户 gpasswd

1、命令参数

用法:gpasswd [选项] 组

选项:
-a, –add USER 向组 GROUP 中添加用户 USER
-d, –delete USER 从组 GROUP 中添加或删除用户
-h, –help 显示此帮助信息并推出
-Q, –root CHROOT_DIR 要 chroot 进的目录
-r, –remove-password 移除组 GROUP 的密码
-R, –restrict 向其成员限制访问组 GROUP
-M, –members USER,… 设置组 GROUP 的成员列表
-A, –administrators ADMIN,… 设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。

2、实例

2-1、添加一个user到一个group

robin@robin-Lenovo:~$ gpasswd -a user2 group2

结果显示 Adding user user2 to group group2,并且在cat /etc/group 时,会看到有 group2:x:2000:user2,说明 user2 在group2 下面了。

注意:cat /etc/group 的结果中,一个group的行中不会出现这样的user,即该user的主group就是该group。

2-2、将一个user从一个group中删除:

robin@robin-Lenovo:~$ gpasswd -d username groupname

作者: 洛水之滨

天行健,君子以自强不息; 地势坤,君子以厚德载物。