Linux用户与文件权限学习

Linux是一个多用户操作系统,允许多个用户同时登录和使用系统资源,在Linux中,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。Linux的多用户管理也可以通过组的概念来简化,一个用户可以属于多个组,一个组可以有多个用户,用户和组是多对多的关系。Linux的多用户多分组管理系统都是针对文件来说的,每个文件都有所属的用户和所属的分组。

总的来说Linux系统允许多个用户同时登录系统,要先创建用户,将用户分配到不同的组进行目录和文件权限的划分。因此这次主要学习用户和文件权限的概念。

一、用户与组管理

用户与组会应用在所有文件与目录上体现,用户就是通过管理员手工创建的一个用户账号,在/home/下有一个自己用户名的目录,那里就是用户的家目录,登录后默认在家目录。

[root@localhost keli]# pwd
/home/keli

用户组的概念类似于windows的部门共享文件夹,表示相同部门的用户能够进行查询、编辑与执行的权限。 Linux用户与文件权限学习_第1张图片 在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两个组

相关命令:

  • useradd username
  • passwd username
  • groupadd groupname
  • usermod -aG 组名 用户

修改用户信息:使用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 多平台发布

你可能感兴趣的:(程序人生)