Linux是一个多用户操作系统,允许多个用户同时登录和使用系统资源,在Linux中,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。Linux的多用户管理也可以通过组的概念来简化,一个用户可以属于多个组,一个组可以有多个用户,用户和组是多对多的关系。Linux的多用户多分组管理系统都是针对文件来说的,每个文件都有所属的用户和所属的分组。
总的来说Linux系统允许多个用户同时登录系统,要先创建用户,将用户分配到不同的组进行目录和文件权限的划分。因此这次主要学习用户和文件权限的概念。
用户与组会应用在所有文件与目录上体现,用户就是通过管理员手工创建的一个用户账号,在/home/下有一个自己用户名的目录,那里就是用户的家目录,登录后默认在家目录。
[root@localhost keli]# pwd
/home/keli
用户组的概念类似于windows的部门共享文件夹,表示相同部门的用户能够进行查询、编辑与执行的权限。 在Linux上还有一个others(其他人的概念),用户代表一个用户,组代表属于一个特定特点的用户集合,而其他人就是除了上述两个集合的其他用户。举例:
以公司组织架构为例,你是IT部的一个管理员,然后你部门还有一个上级领导属于IT部这个组,那其他的部门行政部、业务部都属于其他人,Linux中这些概念是相对概念。
默认系统有一个超级管理员root,如果在安装系统时选择了创建普通用户会在/home下有一个用户的家目录。
可以通过命令进行创建用户和组,以及设置默认Shell.
# 需要管理员root有权限创建新用户
# 创建用户chuck
[root@localhost home]# useradd chuck
# 设置chuck用户密码
[root@localhost home]# passwd chuck
更改用户 chuck 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# 注意:默认创建用户时会分配一个唯一的UID,然后会自动创建一个与用户名相同的组,一个用户可以属于多个用户组,需要先创建用户组才能添加
# 创建组
[root@localhost home]# groupadd it-group
# 将用户加入组,usermod -aG 组名 用户,上述具体命令选项可以参照之前的命令行基础查询用法
[root@localhost home]# usermod -aG it-group chuck
用户与组相关目录:
/etc/passwd
/etc/group
/etc/shadow
# 查询用户信息
[root@localhost home]# cat /etc/passwd
chuck:x:1001:1001::/home/chuck:/bin/bash
keli: 这是用户名,即该用户在系统上的唯一标识。
x: 这表示密码的字段。在早期的 UNIX 系统中,密码是直接存储在 /etc/passwd 文件中的,但由于安全原因,现代的 UNIX 和 Linux 系统将密码存储在 /etc/shadow 文件中,而 /etc/passwd 文件中的密码字段用 x 表示。
1000: 这是用户 ID (UID)。每个用户都有一个唯一的 UID。
1000: 这是组 ID (GID)。这表示该用户所属的默认组也有相同的 GID。
keli: 这可能是用户的全名或描述,具体取决于系统配置。
/home/keli: 这是用户的家目录。每个用户都有自己的家目录,通常用于存储个人文件。
/bin/bash: 这是用户的默认 shell。shell 是用户与操作系统交互的界面。
简而言之,这一行描述了一个名为 keli 的用户,其 UID 和 GID 都是 1000,属于同一个组,家目录在 /home/keli,并使用 /bin/bash 作为其默认的 shell。
# 查询组信息,显示组名称和GID
[root@localhost home]# cat /etc/group | grep chuck
chuck:x:1001:
it-group:x:1002:chuck
[root@localhost home]# cat /etc/group | grep it-group
it-group:x:1002:chuck
# 查询用户密码信息,默认是已经加密存储
[root@localhost home]# cat /etc/shadow | grep chuck
chuck:$6$fo8v6VfIh9KXUgyp$BurSGV7/rxmSjq/.g8KLKwrq1PUBQUNFDR13NEWvSo3vDXoOVfYgFIexuOEdWR09yNy0smt1RKoalyMsmt0mN/:19712:0:99999:7:::
查看用户所属的所有组:
# 可以通过groups或者id命令查询用户所属用户组信息
[root@localhost home]# groups chuck
chuck : chuck it-group
[root@localhost home]# id chuck
uid=1001(chuck) gid=1001(chuck) 组=1001(chuck),1002(it-group)
# 表示chuck用户属于chuck和it-group两个组
相关命令:
修改用户信息:使用usermod
[root@localhost home]# usermod --help
用法:usermod [选项] 登录
选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-v, --add-subuids FIRST-LAST add range of subordinate uids
-V, --del-subuids FIRST-LAST remove range of subordinate uids
-w, --add-subgids FIRST-LAST add range of subordinate gids
-W, --del-subgids FIRST-LAST remove range of subordinate gids
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射
本文由 mdnice 多平台发布