Linux中的用户和用户组

在Linux中,有三种用户:

  • Root 用户:也称为超级用户,对系统拥有完全的控制权限。超级用户可以不受限制的运行任何命令。Root 用户可以看做是系统管理员。
  • 系统用户:系统用户是Linux运行某些程序所必须的用户,例如 mail 用户、sshd 用户等。系统用户通常为系统功能所必须的,不建议修改这些用户。
  • 普通用户:一般用户都是普通用户,这些用户对系统文件的访问受限,不能执行全部Linux命令。

Linux支持用户组,用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组在Linux中扮演着重要的角色,方便管理员对用户进行集中管理。当一个用户同时是多个组中的成员时,在 /etc/passwd 文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

根目录下的\etc文件夹主要包含系统配置文件和用户、用户组配置文件,我们可以在这里查看用户和用户组的详细信息。

与用户和组有关的系统文件: 

系统文件
说明

/etc/passwd 保存用户名和密码等信息,Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行。这个文件对所有用户都是可读的。
/etc/shadow /etc/shadow中的记录行和/etc/passwd中的相对应,他由pwconv命令根据/etc/passwd中的数据自动产生,它的格式和/etc/passwd类似,只是对密码进行了加密。并不是所有的系统都支持这个文件。
/etc/group 以记录行的形式保存了用户组的所有信息。

来看一下/etc/passwd文件的结构:

$cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh

可以看到,/etc/passwd文件中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段,其格式和具体含义如下图所示: 对每个字段的说明:

字段 说明
用户名 用户名是惟一的,长度根据不同的linux系统而定,一般是8位。
密码 由于系统中还有一个/etc/shadow文件用于存放加密后的口令,所以在这里这一项是“x”来表示,如果用户没有设置口令,则该项为空。如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。
用户ID 系统内部根据用户ID而不是用户名来识别不同的用户,用户ID有以下几种:

  • 0代表系统管理员,如果你想建立一个系统管理员的话,可以建立一个普通帐户,然后将该账户的用户ID改为0即可。
  • 1~500系统预留的ID。
  • 500以上是普通用户使用。
组ID 其实这个和用户ID差不多,用来管理群组,与/etc/group文件相关。
描述信息 这个字段几乎没有什么用,只是用来解释这个账号的意义。在不同的Linux系统中,这个字段的 格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
用户主目录 用户登录系统的起始目录。用户登录系统后将首先进入该目录。root用户默认是/,普通用户是/home/username。
用户Shell 用户登录系统时使用的Shell。

/etc/shadow文件的结构:

/etc$ sudo cat shadow
[sudo] password for test:
root:$6$W2kscbFB$RpaAn0nY..gG5.9L8lEcz7CW5j.v1RyLTjaZPHH/5zwskRibSeVUHSSkWxNcWLLFsV0K1gmap90Dzf6V894FJ1:16958:0:99999:7:::
daemon:*:16911:0:99999:7:::
bin:*:16911:0:99999:7:::
sys:*:16911:0:99999:7:::
sync:*:16911:0:99999:7:::
games:*:16911:0:99999:7:::
man:*:16911:0:99999:7:::
lp:*:16911:0:99999:7:::
mail:*:16911:0:99999:7:::

格式--用户名:密码:最近更改密码的日期:不可更改密码的天数:密码需要重新更改的天数:密码更改期限前的警告日期:密码过期的宽限时间:账号失效时间:保留字段

字段 说明
用户名 用户名是惟一的,长度根据不同的linux系统而定,一般是8位。
密码 经过加密的密码。如果字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。
最近更改密码的日期
16911这种数字是因为是以1970年1月1日做为第1天,然后++得到的。

不可更改密码的天数 指定天数内用户无法修改密码
密码需要重新更改的天数 指定天数后必须更改密码
密码更改期限前的警告日期 用户登录系统的起始目录。用户登录系统后将首先进入该目录。root用户默认是/,普通用户是/home/username。
密码过期的宽限时间 账号过期后指定时间内还能接着使用
账号失效时间 超过指定时间账号自动被停用
保留字段 目前无意义,可能留着以后扩展用

/etc/group 结构:

/etc$ sudo cat group
[sudo] password for test:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,test
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:

格式--组名称:密码:组id:成员

应该不需要解释了,只要注意"x"代表密码,具体密码存在shadow里即可。

时间: 2024-10-09 07:32:15

Linux中的用户和用户组的相关文章

Linux学习8---(用户和用户组管理)

1.用户和用户组     用户和用户组概念        用户:使用操作系统的人(Linux支持多个用户在同一时间登陆同一个操作系统)        用户组:具有相同权限的一组用户(Linux系统中可以存在多个用户组)     相关的配置文件        /etc/group:储存当前系统中所有用户组信息            Group:        x        :    123        :    abx,def,xyz            组名称:    组密码占位符:  

【收藏】Linux添加/删除用户和用户组

1.建用户:adduser phpq                             //新建phpq用户passwd phpq                               //给phpq用户设置密码 2.建工作组groupadd test                          //新建test工作组 3.新建用户同时增加工作组useradd -g test phpq                      //新建phpq用户并增加到test工作组 注::

linux下查看用户及用户组的方法

whois 功能说明:查找并显示用户信息. 语 法:whois [帐号名称] 补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions 的WHOIS数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别.    whois功能说明:查找并显示用户信息.语 法:whois [帐号名称]补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions 的WHOIS数据库去查找,所以该帐号名

Linux中添加用户、删除用户时新手可能遇到的问题

Linux中添加用户.删除用户时新手可能遇到的问题  1.创建新用户后切换到新用户:No directory, logging in with HOME=/     添加用户     #sudo useradd -m -s /bin/bash -g group loginname     -m 创建home目录 (不加这个要手动添加目录,不然会出现No directory,Logging in with HOME=/ )     -s /bin/bash 使用bash( 默认为 /bin/sh

Linux-(10)Linux中的用户和组

和Windows一样,当我们使用Linux时,也需要以一个用户的身份登录,一个进程也需要以一个用户的身份运行,用户限制使用者或进程可以使用,不可以使用哪些资源. 在我们使用Linux时,都是用一个用户名来进入系统的,而实际上在Linux中,每一个用户都拥有一个UserID,操作系统实际使用的是用户的ID来区分用户,而不是我们登录系统用的用户名. 在Linux中,每个用户都属于一个主组,属于一个或多个附属组.主组默认是和用户名相同的,也就是说创建用户的时候会默认创建一个同名的组. 同用户一样,每个

Linux中的用户和组

Linux中,用户可大致分为两类:管理员 和 普通用户. 普通用户又可以细分为 系统用户 和 登录用户. 我们知道Linux中默认的管理员用户名叫 root,那么操作系统是怎样识别一个用户是 管理员用户 还是 普通用户呢,是跟我们想象的一样,通过用户名去识别吗?并不是,操作系统是通过UID去识别用户是否为管理员的,这里说到的UID是一个数字,它标识了用户的身份,管理员用户的uid为0,所以操作系统判断一个用户是否为管理员,就是去判断这个用户的UID是否为0,跟用户名没有任何关系. 管理员的UID

Linux中切换用户变成-bash4.1-$的解决方法【转】

转自 Linux中切换用户变成-bash4.1-$的解决方法 - xia_xia的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/xia_xia0919/article/details/50588985 在linux中切换用户时变成-bash4.1-$,发现有两个情况可能会出现这种现象. 场景一:1.在根目录下创建目录dir 2.useradd -d /dir tom 创建用户tom,指定其家目录为/dir,而不是其默认家目录下(/home/tom) 3.su

linux中的用户、群组和权限

linux中的用户.群组和权限 新建用户natasha,uid为1000,gid为555,备注信息为"master" groupadd -g 555 natasha useradd -u 1000 -g 555 -c master natasha id natasha uid=1000(natasha) gid=555(natasha) groups=555(natasha) tail -1 /etc(用户配置信息)/passwd (密码)natasha:x:1000:555:mast

Linux中root用户找不到JAVA_HOME

Linux中root用户找不到JAVA_HOME 在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用于Ubuntu默认是不以root用户登录的,这时echo $PATH可以看到JAVA_HOME已经被设置好了,java命令也可以执行.接下来su root,再输入java命令提示找不到java命令,$PATH中也找不到JAVA_HOME这个路径了.查了很久的资料也没有找到原因,后来偶然切换用户的时候用了su - r