用户及用户组管理

发布于 2020-07-15  809 次阅读


内容纲要

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

用户管理

为什么需要有用户?

  1. linux是一个多用户系统
  2. 权限管理(权限最小化)


用户和用户组

  • 用户:存在的目录是为了对系统中的资源做归属
    密码:存在的目的是为了对用户做身份认证

  • 用户组,在用户组中可以包含一个或者多个用户,方便对多个用户进行授权操作

用户管理相关文件

/etc/passwd:用户基本信息
/etc/shadow:用户密码信息、过期时间等
/etc/group:用户组信息
/etc/gshadow:用户组密码
/etc/default/useradd:创建用户的默认配置信息
/etc/skel:用户家目录模板
/etc/login.defs:全局用户设定信息
/etc/passwd:每行是一个用户,用来记录用户的基本信息,每行的格式:

account:password:UID:GID:GECOS:directory:shell

accout:用户名
password:用户密码,密码位置默认是x
UID:用户身份id,用来唯一的标识一个用户
GID:用户组id,用来在系统中唯一的标识一个用户组(这里指的是其基本组的组ID)
GECOS:用户描述信息,可以空白,也可以随意写(useradd -c )
directory:用户家目录
shell:用户所使用的shell类型
/bin/bash-->可以登录系统
/sbin/nologin-->该用户一定无法登录系统
比如:

 root   :   x   :    0    :       0       :   newuser  :  /root  :  /bin/bash
用户名    密 码    用户id     用户所在组的id    描述信息     家目录   shell类型  

/etc/group:用户组信息
在Linux中,创建用户的时候,会自动创建一个组,组名和组ID都和所创建的用户相同,而且,该用户会自动加入到这个组中
c:x:1007:

组成:groupname:password:GID: [user1, user2.....]
groupname:组名
password:组密码
GID:组id
[user1, user2.....]:改组中的用户列表

概念:
用户的基本组(主组):当前用户具有哪个组的权限
用户的附加组:用户额外属于的组

zx
主组:gp02
附加组:gp01、gp03
/etc/default/useradd:定义创建用户默认选项的文件
#useradd defaults file:useradd默认文件
GROUP=100:表示可创建普通组
HOME=/home:用户的家目录建在/home中,用户的家目录默认创建地
INACTIVE=-1:是否启用账号过期停权,-1表示不启用;宽限天数,0及以下数字皆为无效数字
EXPIRE=:账号终止日期,不设置表示不启用,账号失效日期(如:20200715)
SHELL=/bin/bash:所有SHELL的类型,登录后执行的程序
SKEL=/etc/skel:用户家目录中的环境文件,默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的
CREATE_MALL_SPOOL=yes:是否创建用户邮箱缓冲,yes表示创建

Linux中的用户类别

可以登录系统的用户:
管理员用户:UID为0的用户
普通用户:就是可以登录系统,但是没有管理员权限的用户

不能登录系统的用户:
系统用户:用来运行一个程序,而不是用来登录系统(一般不用来登录系统,不是不能登录)

各类用户的ID
管理员用户:0
系统用户:1-999
普通用户:1000-60000(自定义UID最大4294967294)

系统用户的特点:

  • 因为不需要登录,所以shell类型通常为/sbin/nologin
  • 系统用户没有家目录
  • 系统用户ID通常小于1000

useradd命令

useradd [options] username
options:
-d, --home HOME_DIR:指定用户家目录
-c, --comment COMMENT:用户说明信息
-e, --expiredate EXPIRE_DATE:指的账号的过期时间,时间格式 YYYY/MM/DD
-g, --gid GROUP:指的用户的基本组的组id
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指的用户的附加组列表
-u,--uid UID:指的用户的uid
-m, --create-home:创建用户的时候自动创建用户家目录(默认就已经使用)

-M:不自动创建用户家目录
-o, --non-unique:通常和-u一起使用,用来让两个用使用相同的uid
-r, --system:创建一个系统用户
-s, --shell SHELL:在创建用户的时候,指定用户的shell类型
(/bin/bash/,/sbin/nlogin)

创建一个系统用户
useradd -s /sbin/nologin -M -r Jony

passwd命令

passwd [options] username]
(如果不指定用户名,那么就是修改当前用户的密码)
options:
--stdin
-l:锁定用户
-u:解锁用户
-d:删除用户密码
-e:让用户密码过期
echo "123" | passwd --stdin Jony
表示给Jony用户设置密码123 (Jony用户必须存在)

设置密码的原则:

  1. 长度要够
  2. 密码复杂度(数字+字母+特殊符号)

userdel命令

功能说明:删除用户帐号。
语  法:userdel [-r][用户帐号]
补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不 删除相关文件。
参  数:
-r 删除用户登入目录以及目录中所有文件。
-f 强制删除用户(甚至当用户已经登入 Linux 系统时此选项仍旧生效)。

userdel很简单,只有一个参数可选 -r ;如果加参数-r ,表示在删除用户的同时,一并把用 户的家目录及本地邮件存储的目录或文件也一同删除;比如我们现在有个用户Jony,其家 目录位于/var目录中,现在我们来删除这个用户;

userdel Jony 注:删除用户Jony,但不删除其家目录及文件;
userdel -r Jony 注:删除用户Jony,其家目录及文件一并删除;

创建用户组groupadd

groupadd [options] groupname
options:
-g GID:指定组ID

删除用户组groupdel

groupdel groupname

shadow文件详解

zxhk:  $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 :  7  :   :   :   

第一段:用户名
第二段:加密后的密码
第三段:上次修改密码举例元年经过的天数1970年1月1日(如果该字段空,意味着该用户密码被禁用)
第四段:密码最短使用时间(0表示不限制)
第五段:密码最长有效期(99999表示不限制)(如果第5的值小于第四段,那么用户无法修改自己的密码)
第六段:密码到期前几天开始发送警告,提示密码即将过期,请立即修改
第七段:非活动期间,密码到期后的宽限时间(登录系统的时候必须先修改密码,才能登录)
第八段:密码过期时间(也是举例计算机元年经过的天数)(这里和前面的几个时间没有联系)
第九段:保留字段

usermod命令

Linux usermod命令用于修改用户帐号
usermod可用来修改用户帐号的各项设定
语法:

usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][-m<新的家目录位置>][用户帐号]

-c<备注>:修改用户账号的备注文字
-d<登入目录>:修改用户登入时的目录
-e<有效期限>:修改账号的有限期限
-f<缓存天数>:修改在密码过期后多少天即关闭改账号
-g<群组>:修改用户所属的群组
-G<群组>:修改用户所属的附加群组
-l<账号名称>:修改用户账号名称
-L:锁定用户密码,使密码无效
-s<shell>:修改用户登入后所使用的shell
-u<uid>:修改用户ID
-U:解除密码锁定
-m:移动用户家目录到新的位置

id命令

Linux id命令用于显示用户的ID,以及所属群组的ID。
id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。

作用:用来查看指定的用户信息(或者判断用户是否存在)
语法:
id [-g、-G、-n、-r、-u][--help][--version][用户名称]
参数说明:
-g或--group:显示用户所属群组的ID
-G或--groups:显示用户所属附加群组的ID
-n或--name:显示用户,所属群组或者附加群组的名称
-r或--real:显示实际ID
-u或--user:显示用户ID
-help:显示帮助信息
-version:显示版本信息

su命令(switch user)

su命令用于变更为其他使用者的身份,除root外,需要键入该使用者的密码
使用权限:所有使用者
语法:

su [-fmp][-c command][-s shell][USER[ARG]]

参数说明:
-f 或 --fast :不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment: 执行 su 时不改变环境变数
-c command: 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell: 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help: 显示说明文件
--version: 显示版本资讯
--l 或 --login: 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
USER: 欲变更的使用者帐号
ARG: 传入新的 shell 参数

实例:
变更账号为root并在执行ls指令后退出变回原使用者

su -c ls root

变更帐号为 root 并传入 -f 参数给新执行的 shell

su root -f

切换用户

hnlinux@Jony:~$ whoami //显示当前用户
hnlinux
hnlinux@Jony:~$ pwd //显示当前目录
/home/hnlinux
hnlinux@Jony:~$ su root //切换到root用户
密码: 
root@Jony:/home/hnlinux# whoami 
root
root@Jony:/home/hnlinux# pwd
/home/hnlinux

切换用户,改变环境变量

hnlinux@Jony:~$ whoami //显示当前用户
hnlinux
hnlinux@Jony:~$ pwd //显示当前目录
/home/hnlinux
hnlinux@Jony:~$ su - root //切换到root用户
密码: 
root@Jony:/home/hnlinux# whoami 
root
root@Jony:/home/hnlinux# pwd //显示当前目录
/root
  • alipay_img
  • wechat_img
届ける言葉を今は育ててる
最后更新于 2020-07-15