Linux之操作系统用户和组的概念
Posted 锦衣admin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之操作系统用户和组的概念相关的知识,希望对你有一定的参考价值。
操作系统用户和组的概念
用户的基本类别:
-
① root超级管理员,在Linux系统中拥有至高无上的权力。
-
② 系统用户,CentOS6=> 1 ~ 499,CentOS7=> 1 ~ 999,系统账号默认不允许登录。
-
③ 普通用户,大部分是由root管理员创建的,UID的取值范围:CentOS6=> 500 ~ 60000,CentOS7=> 1000 ~ 60000,对系统进行有限的管理维护操作。
用户组
原理:针对不同用户分配不同权限,集中管理
理论上Linux系统中的每个用户在创建时都应该有一个对应的用户组,这个组就称之为用户的主组。同时,有些情况下,某个用户需要临时使用某个组的权限,那这个组就称之为这个用户的附属组或附加组(主组唯一,附加组可以有多个)。
/etc/group文件解析(管理用户组信息文件)
# cat /etc/group
mail:x:12:postfix
第1列:用户组的"组名称"
第2列:用户组的"组密码",使用一个x占位符
第3列:用户组的"组ID编号"
第4列:用户组内的用户信息(如果一个用户的"附属组或附加组"为这个组,则用户名会显示在此位置)
1-999代表系统用户组的组编号,1000以后的代表自定义组的组编号
CentOS6 => 1-499,500...
CentOS7 => 1-999,1000...
添加用户组:groupadd
# l用户组的添加
# groupadd [选项] 用户组的组名称
选项说明:
-g :代表用户组的组ID编号,自定义组必须从1000开始,不能重复
# groupadd hr
主要功能:在系统中添加一个hr的用户组
# groupadd -g 1100 test
主要功能:在系统中添加一个test的用户组并指定主组编号1100
用户组的修改:groupmod
# groupmod [选项 选项的值] 原来组的组名称
选项说明:
-g :gid缩写,设置一个自定义的用户组ID数字,1000以后
-n :name缩写,设置新的用户组的名称
# groupmod -n 新用户组名称 旧用户组名称
# groupmod -n szhr hr
主要功能:把hr用户组更名为szhr
# groupmod -g 1003 test
主要功能:把test用户组的组编号由1100更改为1003
# group -g 1004 -n admin linux
主要功能:把linux的组名称改为admin,且组编号改为1004
用户组的删除:groupdel
# groupdel 用户组名称
# groupdel test
主要功能:删除test用户组
注意:在Linux操作系统中。如果想删除某个用户组,必须保证这个组不是某个用户的主组。
附属组管理
对附属组添加修改删除用户
# gpasswd [选项 选项的值] 用户组的名称
选项说明:
-a :添加用户到组,append追加
-d :从组中删除成员,delete移除
-A :指定管理员,Admin管理员 (gpasswd -A 用户名称 组名称)
-M :指定组成员,可以批量添加用户到组中
# l问题解析:-a与-M到底有啥区别?
-a 一次只能追加一个用户到附属组中(-a,append,追加的形式,原有用户不覆盖)
-M 一次可以追加多个用户到附属组中(覆盖追加,先把原有用户删除,然后添加我们的用户)
扩展:组密码管理
# gpasswd 用户组名称 => 给组添加密码
# gpasswd -r admin组名称 => 代表移除组密码
案例:创建3个用户user01~user03,将user01添加到sysadmin组里(附属组)
# useradd user01
# useradd user02
# useradd user03
# groupadd sysadmin
① 方案1
# usermod -G sysadmin user01 (追加)
② 方案2
# gpasswd -a user01 sysadmin (追加且一次追加一个)
案例:把user02、user03添加到sysadmin组中
① 方案1
# gpasswd -a user02 sysadmin
# gpasswd -a user03 sysadmin
② 方案2
# gpasswd -M user02,user03 sysadmin (-M 可以一次增加多个用户,但是会删除组原有用户即为覆盖)
案例:从附属组中移除某个账号
# gpasswd -d 移除的用户名称 附属组名称
# gpasswd -d user03 sysadmin
Removing user user03 from group sysadmin
用户
创建的账号必须密码才能登陆且要有/bin/base权限才可以登录系统。
在创建账号时,需要指定shell类型,默认为/bin/bash(拥有大部分权限)还可以是/sbin/nologin,代表账号创建成功,但是不能用于登录操作系统。
/etc/passwd文件(管理用户信息文件)
# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
由上可知,一共拥有7列
第1列:"用户名称"
第2列:"用户的密码",使用一个x占位符,真实密码存储在/etc/shadow
第3列:数字,"用户的ID编号",0,1-999,1000 ~ 60000
第4列:数字,"用户的主组GID编号"
第5列:代表注释信息,useradd -c "备注信息" 用户名称 useradd -c "mysql" mysql
第6列:"用户的家目录",默认在/home/用户名称
第7列:用户可以使用的"Shell类型",useradd -s /bin/bash或/sbin/nologin 用户名称
用户的添加:useradd
# useradd [选项 选项的值] 用户名称
选项说明:
-g :代表添加用户时指定用户所属组的主组,唯一的组信息(重要)
-s :代表指定用户可以使用的Shell类型,/bin/bash或/sbin/nologin
/bin/bash => 给人使用的(运维工程师)
/sbin/nologin => 给软件使用的
-r 指定用户为"系统用户",如创建一个系统账号mysql
-G :代表添加用户时指定用户所属组的"附属组或附加组",可以指定多个,用逗号隔开即可(了解)
-u :代表添加用户时指定的"用户ID编号",CentOS6从500开始,CentOS7中从1000开始(了解)
-c :代表用户的"备注信息",LB:123456:(李白的账号)
-d :指定"用户的家目录",默认为/home/用户名称。可以使用-d进行更改
-n :取消建立以用户名称为名的群组(不指定组一般会新建以用户为名称的用户组)
案例:
① 在系统中新建一个linuxuser用户(且默认建立了一个linuxuser用户组)
② 指定组编号(假设1000的编号为linux,则账号添加到inux用户组中),指定使用的shell类型
# useradd linuxuser
# useradd -g 1000 -s /sbin/nologin lisi
案例:在系统中创建一个wangwu用户,指定主组为wangwu(因为没有-n),附属组为linux
# useradd -G linux wangwu (-G后面可以接组ID或组名)
案例:在Linux系统中创建一个账号lisi,指定用户的家目录为/rhome/lisi
# mkdir /rhome
# useradd -d /rhome/lisi lisi
案例:
① 在Linux系统中创建一个mysql账号,要求真实存在的,但是其不允许登录操作系统
② 在Linux系统中创建一个mysql系统账号,要求真实存在,但是不允许登录操作系统
# useradd -s /sbin/nologin mysql
# userdel -r mysql
# useradd -r -s /sbin/nologin mysql
用户的修改:usermod
# usermod [选项 选项的值] 用户名称
选项说明:
-g :修改用户所属的主组的编号
-l :login name修改用户的名称
-s :修改用户可以使用的Shell类型,如/bin/bash => /sbin/nologin
扩展:
-L:锁定用户,锁定后用户无法登陆系统lock
-U:解锁用户unlock
了解:
-G :修改用户附属组的编号信息,可同时修改多个附属组信息,如:"-G 组,组"
-m :move,迁移家目录时,把"家具"一起迁移到新的家目录
-d :修改用户的家目录
-c :修改用户的备注信息
案例:
① 修改用户名称,zhangsan更名为zs
② 更改用户wangwu的主组编号为1000
# usermod -l zs zhangsan
# usermod -g 1000 wangwu
案例:创建一个itcast组,在创建一个wangwu的账号,修改wangwu的附加组为itcast与itheima
# groupadd itcast
# useradd wangwu
# usermod -G itcast,itheima wangwu
案例:更改linuxuser的shell,禁止其登陆操作系统
# usermod -s /sbin/nologin linuxuser
案例:修改用户zhangsan的家目录为/rhome/zhangsan(默认/home/zhangsan)
注:要求/rhome/zhangsan必须是已经创建好的目录!
# mkdir /rhome/zhangsan
# usermod -d /rhome/zhangsan zhangsan
# su - zhangsan
-bash-4.2$
出现以上问题的主要原因在于:我们迁移用户的家目录时,没有迁移家目录中的配置文件"家具"
解决方案:
一、 "家目录已经迁移",我们把/etc/skel中的文件,copy到新家中
# cp -a /etc/skel/. /rhome/zhangsan/
选项说明:
-a :all所有,复制时,保留文件的原有属性
二、 "家目录还没有迁移",准备迁移时,使用"usermod -md /rhome/zhangsan 用户名"
-m :move,迁移家目录时,把"家具"一起迁移到新的家目录
# usermod -md /rhome/zhangsan zhangsan
案例:锁定与解锁账号
# usermod -L linux => 锁定linux账号,禁止linux账号登陆操作系统
# usermod -U linux => 解锁linux账号
# l扩展:
问题:账号已经解锁,但是无法登录
① 当前账号没有设置密码,因为Linux操作系统不允许没有密码的操作进行登录
② 当前用户的Shell类型为/sbin/nologin,所以其无法登录
用户的删除:userdel
# userdel [选项] 用户名称
选项说明:
-r :删除用户的同时,删除用户的家(默认不删除)
删除账号流程:① 删除账号 ② 确认是否删除用户家 ③ 删除用户主组(没有其他用户)
-f :强制删除用户(即使用户处于登录状态)
案例:
① 删除用户但不删除用户的家目录
② 删除用户且删除用户的家目录
# userdel zs
# userdel -r zs
扩展:当我们想要删除某个账号时,系统提示当前账号正在被某个进程所使用
# ps -ef |grep zs(找到当前账号正在使用的进程)
# kill [-9] 进程号 (强制结束进程)
案例:删除某个正在使用的账号(强制删除)
# userdel -f zhangsan
用户密码
passwd命令
# passwd [用户名称]
说明:
# passwd 用户名称 => 管理员root可以给任何用户修改密码
# passwd => 普通用户可以自己设置密码,但密码复杂度要符合规范
–stdin 修改用户密码
–stdin:标准输入
# echo 密码 | passwd --stdin 用户名称
# history -c
注意:--stdin 标准输入修改密码,历史记录会存档,建议清除历史记录
用户信息查询
# id 用户名称
# id linuxuser
uid=1002(linuxuser) gid=1005(linuxuser) groups=1005(linuxuser)
uid:用户编号
gid:用户所属的主组的编号
groups:用户的主组以及附属组信息,第一个是主组,后面的都是附属组或附加组信息
wheel组
Linux系统中,理论上只有在wheel组中的普通用户,才可以通过su命令切换到root账户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效
以上是关于Linux之操作系统用户和组的概念的主要内容,如果未能解决你的问题,请参考以下文章