Linux group与user基础概念

  • 概念
    • user 用户
    • group 用户组
  • Linux 命令使用
    • user 用户
      • useradd 添加用户
      • userdel 删除用户
      • usermod 修改账号
      • passwd 用户口令管理
    • group 用户组
      • groupadd 添加用户组
      • groups 命令
      • groupdel 删除用户组
      • groupmod 修改用户组
      • newgrp 用户组切换

概念

原文摘自(防链接失效):Linux用户user,组group详解

user 用户

Linux用户分为管理员和普通用户,普通用户又分为系统用户和自定义用户。可以查看/etc/passwd来查看。如下所示:(部分)

root:x:0:0:root:/root:/bin/bash
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
lilei:x:500:500::/home/lilei:/bin/bash
wangcai:x:502:503::/home/wangcai:/bin/bash

1、系统管理员:即root帐户,UID号为0,拥有所有系统权限,它类似于Windows系统中的administrator帐户,是整个系统的所有者。

2、系统用户:linux为满足自身系统管理所内建的账号,通常在安装过程中自动创建,不能用于登录操作系统。UID在1-499之间(centos7为1-999之间)。像上面的sshd、pulse等等用户即是此类用户。它类似于Windows中的system帐户,当然权限远没有system帐户高。

3、自定义用户:由root管理员创建供用户登录系统进行操作使用的账号,UID在500以上(centos7为1000以上)。它类似于Windows系统中users用户组中的帐户 。

而在该文件中,每一行用户记录的各个数据段用“:”分隔,分别定义了用户的各方面属性。各个字段的顺序和含义如下:

我们以这个wangcai普通用户为例

wangcai: x :502:503::/home/wangcai:/bin/bash

注册名:口令:用户标识号(uid):组标识号(gid):注释性描述:用户主目录:用户登陆的shell类型

(1)注册名(login_name):用于区分不同的用户。在同一系统中注册名是惟一的。在很多系统上,该字段被限制在8个字符的长度之内;并且要注意,通常在Linux系统中对字母大小写是敏感的,登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。这与MSDOS/Windows是不一样的。

(2)口令(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。超级用户root可以使用系统命令passwd来更改系统中所有用户的口令,普通用户也可以在登录系统后使用passwd命令来更改自己的口令

(3)用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

(4)组标识号(GID):这是当前用户的工作组标识。具有相似属性的多个用户可以被分配到同一个组内,每个组都有自己的组名,且以自己的组标 识号相区分。像UID一样,用户的组标识号也存放在passwd文件中。在现代的Unix/Linux中,每个用户可以同时属于多个组。除了在 passwd文件中指定其归属的基本组之外,还在/etc/group文件中指明一个组所包含用户。

(5)注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

(6)用户主目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称默认就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

(7)登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。而当用户shell类型为/sbin/nologin,则是该用户无法登陆系统。

用户的登录Shell可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

group 用户组

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。同样用户组的信息我们可以在/etc/group中查看。如下所示(部分)

root:x:0:
bin:x:1:bin,daemon
stapdev:x:158:
tcpdump:x:72:
screen:x:84:
lilei:x:500:
admins:x:502:
wangcai:x:503:
sysadmins:x:504

这里我同样只展示出了一部分,它们各个数据间同样用:分隔,每个数据代表的意义也各有不同

我们同样用bin组为例

bin:x:1:bin,daemon

组名:组密码:组标识号(GID):附加组成员

linux组的类别:

  • 用户的主要组(primary group):用户必须属于一个且只有一个组

  • 用户的附加组(supplementary group):一个用户可以属于一个或者零个附加组

而文件一般分为

  • 所有者

  • 所在组

  • 其它组

所有者

一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

用ls ‐ahl命令可以看到文件的所有者

也可以使用chown 用户名 文件名来修改文件的所有者

文件所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

用ls ‐ahl命令可以看到文件的所有组

也可以使用chgrp 组名 文件名来修改文件所在的组

其它组

除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。

Linux用户和组的主要配置文件:

  • /etc/passwd:用户机器属性信息(名称、UID、主组ID等)

  • /etc/group:组及其属性信息

  • /etc/shadow:用户密码及其相关信息

  • /etc/gshadow:组密码及其相关信息

前两个配置文件我们已经介绍过了,这里我们讲一下/etc/shadow文件,/etc/shadow 是/etc/passwd的密码映射过去产生的文件,因为/etc/passwd为所有用户都可读的文件所以会导致用户密码不安全,而/etc/shadow文件只有root能看,其他用户不能访问。

pwconv 将passwd当中的密码映射到了/etc/shadow

pwunconv 取消映射,密码仍然放在/etc/passwd当中

/etc/shadow里的文件如下所示(部分)

postfix:!!:17539::::::
gdm:!!:17539::::::
pulse:!!:17539::::::
sshd:!!:17539::::::
tcpdump:!!:17539::::::
lilei:$6$uPmj3VzY$xXEir7SSxj9R.sjbki3PfqDjNmdjavplQ5HXZjcGtULLiyenLv1VLHe.6cdidI1wQNjEkijiDfbfXWQc0Plss0:17544:0:99999:7:::
wangcai:!!:17547:0:99999:7:::

这里同样以:为分隔符,隔个字段含义如下

登陆用户名:

用户密码(!!表示没有设置密码):

从1970年1月1日起到密码最近一次被更改的时间:

密码再过几天可以被更改(0表示可以随时被修改):

密码再过几天必须被更改(99999表示99999天后过期,也就相当于永不过期):

密码过期前几天系统提醒用户(默认为一周):

密码过期几天后账号会被锁定:

从1970年1月1日算起,多少天后账号失效:

/etc/gshdow文件同样是/etc/group文件里的密码映射文件

grpconv 将组密码映射到了/etc/gshadow

grpunconv 取消组密码的映射

/etc/gshadow里的文件如下所示:(部分)

stapdev:!::
tcpdump:!::
screen:!::
lilei:!::
admins:!::
wangcai:!::
sysadmins:!::

组名:组密码:组管理员列表:以当前组为附加组的用户列表(分隔符为逗号)

Linux 命令使用

user 用户

useradd 添加用户

Linux useradd 命令用于建立用户帐号。

useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。

语法

useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号]

useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]

参数说明:
-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录>  指定用户登入时的起始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组。
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s   指定用户登入后所使用的shell。
-u  指定用户ID。

实例
添加一般用户

useradd tt

为添加的用户指定相应的用户组

useradd -g root tt

创建一个系统用户

useradd -r tt

为新添加的用户指定home目录

useradd -d /home/myd tt

建立用户且制定ID

useradd caojh -u 544

创建安装用户dmdba(达梦数据库中,创建dmdba用户实例)

useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

userdel 删除用户

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel命令,其格式如下:

userdel 选项 用户名

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

例如:

userdel -r sam

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

usermod 修改账号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,其格式如下:

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:-l 新用户名

这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

例如:

usermod -s /bin/ksh -d /home/z –g developer sam

此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

passwd 用户口令管理

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

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

passwd 选项 用户名

可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。

如果默认用户名,则修改当前用户的口令。

例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:

$ passwd
Old password:******
New password:*******
Re-enter new password:*******

如果是超级用户,可以用下列形式指定任何用户的口令:

# passwd sam
New password:*******
Re-enter new password:*******

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。

为用户指定空口令时,执行下列形式的命令:

passwd -d sam

此命令将用户 sam 的口令删除,这样用户 sam 下一次登录时,系统就不再允许该用户登录了。

passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:

passwd -l sam

group 用户组

groupadd 添加用户组

groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

相关文件:

  • /etc/group 组账户信息。
  • /etc/gshadow 安全组账户信息。
  • /etc/login.defs Shadow密码套件配置。

语法
groupadd 命令 语法格式如下:

groupadd [-g gid [-o]] [-r] [-f] group

参数说明:
-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组 ID 小于 500;
-K:覆盖配置文件 /etc/login.defs;
-o:允许添加组 ID 号不唯一的工作组。
-f,–force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的 GID_MIN 已经存在时,选择另一个唯一的 GID(即 -g 关闭)。

实例
创建一个新的组,并添加组 ID。

#groupadd -g 344 runoob

groups 命令

groups 用于打印user所在组

groups [OPTION]… [USERNAME]…

# 查询username root 所属分组(打印每个USERNAME的组成员关系)
[root@iZbp10sz66ubwocy0uxhauZ home]# groups root
root : root# 如果没有指定USERNAME,打印当前进程的组成员关系(如果组数据库发生了变化,可能会有所不同)。
[root@iZbp10sz66ubwocy0uxhauZ home]# groups
root

groupdel 删除用户组

groupdel 用户组
例如:

groupdel group1

此命令从系统中删除组group1

groupmod 修改用户组

groupmod 选项 用户组

常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
实例1:

groupmod -g 102 group2

此命令将组group2的组标识号修改为102。

实例2:

groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3。

newgrp 用户组切换

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

newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

2022-07-17 Linux group与user基础概念相关推荐

  1. 2022/07/17 软件设计师错题日志 Day 1

    本次记录中题目来自希赛网2022/01/01软件设计师每日一练 错题1: 10个成员组成的开发小组,若任意两人之间都有沟通路径,则一共有()条沟通路径. A:100  B:90  C:50  D:45 ...

  2. 2022/07/17、18 day10/11:Stream流、方法引用

    文章目录 1. Stream流 1.1 引言 1.2 流式思想概述 1.3 获取流 1.4 常用方法 1.5 练习:集合元素处理(传统方式) 1.6 练习:集合元素处理(Stream方式) 2. 方法 ...

  3. 2022 07 17 第九组 韩文清 职业人生规划

    职业规划 首先找到实习工作,期望薪资在7000左右,在外地奋斗3年以后再回家,或者直接回家在家乡工作 1.如果在外地工作,希望有能力养活自己,并且在养活自己的路上活得越来越好,我自己多努力一些,父母以 ...

  4. Linux中shell变量基础概念笔记

    1.变量的概念 其实shell中的变量是指向系统中一块存储数据的内存空间.变量的形式有局部变量和环境变量两种.并且shell变量属于弱类型的变量,可以不指定变量的类型就可以使用. 2.局部变量 局部变 ...

  5. XUPT Linux Group 2020 2021 2022 note

    2020 1. 请试着解释其输出. int main(int argc , char *argv[]) {unsigned char a = 255;char ch = 128;a -= ch; pr ...

  6. gnome桌面打造日常使用操作系统(支持Arch Linux、Fedora、Ubuntu)(2022.04.17更新)

    更新日志 日期 内容 2022.04.03 完成初稿 2022.04.05 更新sublime和imwheel 2022.04.06 添加所有软件在Feroda的安装方法 2022.04.07 添加所 ...

  7. Xiyou Linux Group 2021

    西邮Linux兴趣小组2021纳新面试题题解 感谢 Zhilu 重新录入题目原件.好人一生平安. 注: 本题目仅作西邮Linux兴趣小组2021纳新面试题的有限参考. 为节省版面本试题的程序源码中省略 ...

  8. Linux运维 第二阶段 (一)linux基础概念及常用命令

    一.基础概念: 1.CPU(slice):运算器(线路复用).控制器(芯片针脚有电没电).寄存器(保存现场): interrupt(中断,硬件通知机制),FSB(frontside bus前端总线), ...

  9. Linux技术研究-基础篇(raid与LVM,配额)

    Linux技术研究-基础篇(raid与LVM,配额) 创建RAID-5 若想建立新的md1设备 只在/dev下建立还不够 重启后会消失 固化的方法是 为了使udev自动产生/dev/md1, /dev ...

最新文章

  1. 使用python3 实现将网页或者文件导出至pdf 文件
  2. OpenCV 4.5.4 刚刚发布!新增SoftNMS、DNN模型8位量化等功能
  3. java 日志 生成器_自动生成 java 测试 mock 对象框架 DataFactory-01-入门使用教程
  4. matlab decomposition filters,MATLAB小波去噪求助(附算法和显示图片)!不知自己哪个地方出了问题,求指点! - 信息科学 - 小木虫 - 学术 科研 互动社区...
  5. OUYA游戏开发核心技术剖析大学霸内部资料
  6. Oracle传输表空间
  7. 操作系统:哲学家进餐问题
  8. CreateThread和CreateRemoteThread
  9. idea 打开html有错误,Intellij IDEA + Tomcat 出现 HTTP status 404错误的解决办法
  10. JavaFX UI控件教程(二十一)之Tooltip
  11. matlab求阶乘函数的代码,matlab阶乘
  12. Android实现选择题答题(包括单选、多选和答题卡)
  13. 安溪八中高考2021成绩查询,2020福建省地区高考成绩排名查询
  14. xshell 基本操作
  15. 电脑系统更新后桌面的文件全部不见了怎么恢复?
  16. 想要学计算机最好是哪所大学,盘点丨计算机专业最好的7所大学
  17. 学习VTK9笔记(三)打开stl文件
  18. 2022-2028全球COB摄影灯行业调研及趋势分析报告
  19. 汉字 Unicode 编码范围
  20. pacemaker+corosync的一些总结

热门文章

  1. 【数仓】数据仓库高频面试题题英文版(1)
  2. 给客户寄样品谁付快递费?寄样品的运费太多了怎么管理?
  3. .计算机软件系统包括,计算机软件系统包括什么
  4. JavaScript实现动态写入表格
  5. spring cache相关注解介绍 @Cacheable、@CachePut、@CacheEvict
  6. 什么是前台、中台、和后台?
  7. vue中父传子和子传父,传值方法
  8. JS 区分+0和-0
  9. mathematica使用笔记
  10. Mac port 安装postgres92 + postgres92-server