首页 > 系统相关 >linux用户管理学习感悟与笔记

linux用户管理学习感悟与笔记

时间:2023-10-31 12:44:06浏览次数:31  
标签:感悟 文件 密码 passwd 用户组 用户 笔记 etc linux

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的密码。

用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。

用户组是具有相同特征用户的逻辑集合。将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组简化对用户的管理工作。

UID和GID(用户ID和组ID)

登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字)。Linux 系统将所有用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中。

Linux 系统中,每个用户的 ID 细分为 2 种,分别是用户 ID(User ID,简称 UID)和组 ID(Group ID,简称 GID),这与文件有拥有者和拥有群组两种属性相对应。

每个文件都有自己的拥有者 ID 和群组 ID,当显示文件属性时,系统会根据 /etc/passwd 和 /etc/group 文件中的内容,分别找到 UID 和 GID 对应的用户名和群组名,然后显示出来,找不到则显式对应ID。

初始组(主组)和附加组

创建新用户时,若未明确指定该用户所属的初始组,会默认创建一个同用户名相同的群组,作为该用户的初始组(主组)。

附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。

展示当前用户所属的全部群组:

$ groups

用户账号的管理

添加新的用户账号

# useradd [<选项>] <用户名>

选项:

  • -c <用户说明>: [comment] 注释,指定一段注释性描述。
  • -d <主目录>: [directory] 目录,指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  • -g <组名>: [group] 用户组,指定用户所属的用户组。
  • -G <组名>: [Group] 用户组,指定用户所属的附加组。
  • -s <shell>: [sheel] Shell文件,指定用户的登录Shell。
  • -u <UID> : [user ID] 用户号,指定用户的用户号,如果同时有 -o 选项,则可以重复使用其他用户的标识号。
  • -o: 允许创建的用户的 UID 相同。例如,执行 "useradd -u 0 -o usertest" 命令建立用户 usertest,它的 UID 和 root 用户的 UID 相同,都是 0;
  • -e <曰期>:[expired] ,指定用户的失效曰期,格式为 "YYYY-MM-DD"。也就是 /etc/shadow 文件的第八个字段;
  • -m: 建立用户时强制建立用户的家目录。在建立系统用户时,该选项是默认的;
  • -r: 创建系统用户,也就是 UID 在 1~499 之间,供系统程序使用的用户。由于系统用户主要用于运行系统所需服务的权限配置,因此系统用户的创建默认不会创建主目录。

例子:

# useradd –d  /home/test1 -m test1

删除帐号

# userdel [<选项>] <用户名>

常用的选项是-r,它的作用是把用户的主目录一起删除。

例如:

# userdel -r test1

此命令删除用户 test1 在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

修改帐号

# usermod [<选项>] <用户名>

选项:

  • -c 用户说明:修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第 5 个字段;
  • -d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第 6 个字段,需要注意的是,主目录必须写绝对路径;
  • -e 日期:修改用户的失效曰期,格式为 "YYYY-MM-DD",即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段;
  • -g 组名:修改用户的初始组,即修改 /etc/passwd 文件目标用户信息的第 4 个字段(GID);
  • -u UID:修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第 3 个字段(UID);
  • -G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件;
  • -l 用户名:修改用户名称;

如果你仔细观察会发现,其实 usermod 命令提供的选项和 useradd 命令的选项相似,因为 usermod 命令就是用来调整使用 useradd 命令添加的用户信息的。

不过,相比 useradd 命令,usermod 命令还多出了几个选项,即 -L 和 -U,作用分别与 passwd 命令的 -l 和-u 相同。需要注意的是,并不是所有的 Linux 发行版都包含这个命令,因此,使用前可以使用 man usermod 命令确定系统是否支持。

此命令对用户的临时锁定,同 passwd 命令一样,都是在 /etc/passwd 文件目标用户的加密密码字段前添加 "!",使密码失效;反之,解锁用户就是将添加的 "!" 去掉。

修改用户密码

用户管理的一项重要内容是用户口密码的管理。用户账号刚创建时没有密码,但是被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。

指定和修改用户密码的Shell命令是passwd。超级用户可以为自己和其他用户指定密码,普通用户只能用它修改自己的密码。命令的格式为:

$ passwd [<选项>] [<用户名>]

可使用的选项:

  • -l : [lock] 锁定密码,即禁用账号。
  • -u : [unlock] 密码解锁。
  • -d : [delete] 使账号无密码。
  • -f : [force] 强迫用户下次登录时修改密码。
  • -S:[Search] 查询用户密码的状态,也就是 /etc/shadow 文件中此用户密码的内容。仅 root 用户可用;
  • --stdin : 可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用;
  • -n <天数>:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
  • -x <天数>:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
  • -w <天数>:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
  • -i <日期>:设置用户密码失效日期,对应 /etc/shadow 文件中各行密码的第 7 个字段。

如果不指定用户名,则修改当前用户的密码。

查看用户的UID和GID

# id [<用户名>]

用户间切换

su 是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。

普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密码,直接可切换成功。

# su [<选项>] <用户名>

选项:

  • -:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
  • -l:同 - 的使用类似,也就是在切换用户身份的同时,完整切换工作环境,但后面需要添加欲切换的使用者账号。
  • -p:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)。
  • -m:和 -p 一样;
  • -c <命令>:仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。

用户组的管理

增加一个新的用户组

# groupadd [<选项>] <用户组>

可以使用的选项有:

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与 -g 选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
  • -r:创建系统群组。

删除一个已有的用户组

# groupdel <用户组>

用户组之间切换

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

$ newgrp <用户组>

与用户账号有关的系统文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

下面分别介绍这些文件的内容。

/etc/passwd

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的。

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:密码:用户标识号:组标识号:注释性描述:主目录:登录Shell
  1. "用户名"是代表用户账号的字符串。
    通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。
    为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
  2. “密码”一些系统中,存放着加密后的用户密码字。
    虽然这个字段存放的只是用户密码的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户密码字存放到/etc/shadow文件中,而在/etc/passwd文件的密码字段中只存放一个特殊的字符,例如“x”或者“*”。
  3. “用户标识号”是一个整数,系统内部用它来标识用户。
    一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的密码、不同的主目录以及不同的登录Shell等。
    通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  4. “组标识号”字段记录的是用户所属的用户组。
    它对应着/etc/group文件中的一条记录。
  5. “注释性描述”字段记录着用户的一些个人情况。
    例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
  6. “主目录”,也就是用户的起始工作目录。
    它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
  7. 用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
    Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

    系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

    用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。

    利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

伪用户

系统中有一类用户称为伪用户(pseudo users)。

这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

/etc/shadow

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的密码字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

登录名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  1. "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
  2. "密码"字段存放的是加密后的用户密码,长度为13个字符。如果为空,则对应用户没有密码,登录时不需要密码;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  3. "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改密码时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
  4. "最小时间间隔"指的是两次修改密码之间所需的最小天数。
  5. "最大时间间隔"指的是密码保持有效的最大天数。
  6. "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  7. "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  8. "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

/etc/group

用户组的所有信息都存放在/etc/group文件中。

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。

当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:密码:组标识号:组内用户列表
  1. "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  2. "密码"字段存放的是用户组加密后的密码字。一般Linux 系统的用户组都没有密码,即这个字段一般为空,或者是*。
  3. "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
  4. "组内用户列表"是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

 

标签:感悟,文件,密码,passwd,用户组,用户,笔记,etc,linux
From: https://www.cnblogs.com/zs20218539/p/17799979.html

相关文章

  • -bash: java: command not found笔记
    文章目录场景解决方案找java的方法find命令进行查找根据java进程找寻具体位置场景linux系统执行java命令时报错:-bash:java:commandnotfound。解决方案可能是没有安装java(这种情况比较少)或者安装了java但是没有设置环境变量(一般是这种情况)。找java的方法find命令进行查找......
  • spring发送邮件笔记
    文章目录引入依赖配置代码附件url地址为空会不会报错接收方邮件地址错误会不会报错引入依赖推荐用spring集成依赖,不用一个包一个包找了。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>配......
  • linux 命令行 设置分辨率
    查看特定分辨率对应的模式参数: 查看当前设置:(依次)设置参数:   (新分辨率生效) ......
  • java通过ssl连接mysql(linux)
    环境:Os:centos7mysql:5.7.29java运行客户端:windows10 1.查看服务器的证书文件mysql数据data目录下[root@localhostdata]#pwd/opt/mysql57/data[root@localhostdata]#ls-al*.pem-rw-------.1mysqlmysql1676Oct3005:22ca-key.pem-rw-r--r--.1mysqlmysq......
  • 信看课堂笔记—电路若只如初见
    本节课结合我们模块经常遇到的电子元器件和电路讲解下原理和方案选型认识电阻、电容和电感以下是电阻、电容和电感的作用的简要对比表格:作用电阻电容电感限制电流通过阻碍电流流动(欧姆定律I=U/R)阻止直流电流通过随频率增加而阻碍电流调整电路参数无法调整电路参数调整电路的频率响......
  • linux 中ldd命令
     001、Ldd:linux系统中的一个测试工具,用于查看可执行文件或者共享库文件所依赖的动态链接库. 主要用于协助分析和解决程序运行时的依赖关系。动态链接库? 002、举例ldd   003、解决依赖关系a、安装相应的软件包来获取缺失的动态链接库比如红帽系列使用yum命令、......
  • LINUX下ORACLE表空间及用户创建
    LINUX下ORACLE表空间及用户创建 记录详细过程以备使用 ConnectedtoOracleDatabase11gEnterpriseEditionRelease11.2.0.1.0Connectedassys@ip:port/sid ASSYSDBA 管理员用户登录oracle数据库 1、创建临时表空间selectnamefromv$tempfile;查出当前数......
  • Linux系统软件包管理以及配置软件源仓库
            Linux系统依据发行的公司不同,分为Redhat/Oracle系、Debian/Ubuntu系、SUSE系,其中Redhat/Oracle、SUSE系主要用于传统企业市场,Debian/Ubuntu主要用于云计算、互联网市场,不同的发行版本其本质上无区别,都是运行着相同的Linux内核。如果是运行OracleDatabase/EBS......
  • 高级数据库建模与设计笔记
    1、需求文档2、数据流图3、数据字典4、概要设计5、逻辑设计(本课程只到这一步) 数据流图:方框里是角色,圆里是动作,箭头是信息的变换,长等号上面是待修改的信息。数据字典:是个列表。它不只说明字段,而是对数据流中各个元素进行说明。 新感悟:设计表时,面对数据流图,应该先看靠近......
  • 第二章读书笔记——雷凯化
        22信计1班雷凯化学号2022310143043  03运行超市抹零行为a=float(input('扫描的第一个商品价格:'))b=float(input('扫描的第二个商品价格:'))c=float(input('扫描的第三个商品价格:'))d=a+b+cprint('总计:',int(d))print('from22信计1班雷凯化')print('......