用户一般来说是指系统的使用者,使用者可以使用这些名称来登录使用计算机,除了使用者之外,一些系统服务也需要含有部分特权的用户账户运行;因此出于安全考虑,用户管理应运而生,它加以明确限制各个用户账户的权限,root 在计算机中用拥有至高特权,所以一般只作管理用,非特权用户可以通过SU 或 SUDO 程序来临时获得特权。
Linux 系统通过用户和用户组实现访问控制,包括对文件访问、设备使用的控制。
1 人可以拥有很多账户,只不是彼此名称不同,比如 root 名称已经占用就不能再用了,此外,任意用户可能从属某个用户组,此用户可以加入某些已经存在的组来获得该组的特权。
每 1 个文件的属性中都有一个文件拥有者和所属组。另外,还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组、而设置相应的访问权限。再次,我们可以通过 ll 或 stat 命令查询文件属主、属组和权限。
用户的分类
Linux 用户三种角色:超级用户,普通用户,虚拟用户。
超级用户:root 拥有对系统的最高的管理权限,UID=0
普通用户:系统用户 UID 范围:1-999(centos7/8 版本) 1-499(centos6 版本) 本地用户 UID 范围:1000+(centos7/8 版本) 500+(centos6 版本)
UID:即每个用户的身份标识,类似于每个人的身份证号码。
虚拟用户:伪用户 一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如:ftp。
apache用户基本信息保存位置:/etc/passwd
下图是用户和组的关系:

用户管理
用户命令命令:useradduseradd -d -u “UID” -g “初始组” -G “附加组” -s “登陆的 shell” 用户
-u:指定 uid
-d:-d 用户主目录路径, 可以指定用户家目录
-M: 不创建用户的家目录
-g:设置用户初始组的名称或数字 ID;该组必须是存在的;如果没有设置该选项,useradd 会根据/etc/login.defs 文件中的 USERGROUPS_ENAB 环境变量进行设置。默认 USERGROUPS_ENAB yes会用和用户名相同的名字创建群组.
-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。(一个用户只允许有一个主组,可以有多个附属组)
-s:用户默认登录 shell 的路径;启动过程结束后,默认启动的登录 shell 在此处设定;请确保使用的 shell 已经安装,默认是 Bash。有时候需要禁止某些用户执行登录动作,例如用来执行系统服务的用户。将 shell 设置成 /sbin/nologin 就可以禁止用户登录。
添加登录用户
例:添加一个名为 harry 的用户,并使用 bash 作为登录的 shell
[root@xuegod63 ~]# useradd harry
[root@xuegod63 ~]# tail -1 /etc/passwd
harry:x:1001:1001::/home/harry:/bin/bash
说明:此命令会自动创建 harry 组,并成为 harry 用户的默认主组,同时默认的登录 shell 是 bash
用户帐户的全部信息被保存在/etc/passwd 文件。这个文件以如下格式保存了每一个系统帐户的所有信息 (字段以“:”分割)
harry:x:1001:1001::/home/harry:/bin/bash #每行含意如下:
harry:用户名
x:密码占位符
1001:用户的 UID,使用正整数表示,范围可以是 0-65535
1001:用户所属组的 GID,它都是用数字来表示的
用户描述信息:对用户的功能或其它来进行一个简要的描述,此字段会出现在登录用户界面,可以通过点击输入对应密码进行登录,却并不能手动输入此字段代替用户名。
/home/harry:用户主目录(shell 命令提示符中用“~”表示)
/bin/bash:用户登录系统后使用的 shell
例:查看系统中,支持哪些 shell
[root@xuegod63 ~]# cat /etc/shells #查看系统中,支持哪些 shell
[root@xuegod63 ~]# yum install zsh -y [root@xuegod63 ~]# zsh [root@xuegod63]~# cd /etc/sysconfig/network-scripts [root@xuegod63]/etc/sysconfig/network-scripts
**** 注:zsh 这种 shell 会显示绝对路径
指定用户主目录
[root@xuegod63 ~]# useradd -d /opt/ftp ftp1
[root@xuegod63 ~]# ls -a /opt/ftp
[root@xuegod63 ~]# tail -1 /etc/passwd
ftp1:x:1101:1101::/opt/ftp:/bin/bash
指定用户的主组
例:
[root@xuegod63 ~]# useradd xuegod
[root@xuegod63 ~]# id xuegod
uid=1103(xuegod) gid=1103(xuegod) 组=1103(xuegod)
[root@xuegod63 ~]# useradd -g xuegod xuegod2
[root@xuegod63 ~]# id xuegod2
uid=1104(xuegod2) gid=1103(xuegod) 组=1103(xuegod)
查看用户相关命令:
#id 用户和组的信息
#whoami #查看当前有效用户名
#who #显示目前登入系统的用户信息
#w #w命令用于显示已经登陆系统的用户列表
#users #用于显示当前登录系统的所有用户的用户列表
修改用户信息
语法:usermod 【参数】用户名
常用参数:
-u UID
-d 宿主目录
-g 起始组 #只能有一个
-G 附加组 #可以有多个
-s 登录 shell
-L 锁定
例 1:修改 UID
[mk@xuegod63 ~]# id oracle
uid=1100(oracle) gid=1100(oracle) 组=1100(oracle)
[mk@xuegod63 ~]# usermod -u 1111 oracle
[mk@xuegod63 ~]# id oracle
uid=1111(oracle) gid=1100(oracle) 组=1100(oracle)
更改用户主目录
[root@Linux7 home]# usermod -m -d /opt/aaa changlin1
[root@Linux7 home]# usermod -c “hello world” changlin1
[root@Linux7 home]# grep changlin1 /etc/passwd
changlin1:x:1111:1103:hello world:/opt/aaa:/sbin/nologin
删除用户
语法:userdel [options] 用户名
选项:r 删除的时候,会同时删除用户的家目录和 /var/mail 下的目录
[root@xuegod63 ~]#userdel -r xuegod 3
转载请注明:XAMPP中文组官网 » Linux用户及用户组管理基础知识图文讲解