三、用户账号和权限管理

1、用户账号和组账号概述

1.1 用户账号

超级用户:即root用户,类似于Windows系统中的Administrator用户,非执行管理任务时不建议使用root用户登录系统

普通用户:普通用户帐号一般只在用户自己的宿主目录中有完全权限

程序用户:用于维持系统或某个程序的正常运行,一般不允许登录到系统。例如:bin、daemon、ftp、mail等

1.2组账号

基本组、附加组

UID:用户标识号

GID:组标识号

root用户的UID的固定值为0、root组帐号的GID号为固定值0

1~1000的UID、GID默认保留给程序用户使用,普通用户/组使用的UID、GID号在1000+之间

1.3用户账号文件
1.3.1 /etc/passwd

保持用户名称、宿主目录、登录S核力量等基本信息

root:x:0:0:root:root:/bin/bash
root:x:0:0:root:root:/sbin/nologin

所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改

字段1:用户帐号的名称 字段2:用户密码字串或者密码占位符“x” 字段3:用户帐号的UID号 字段4:所属基本组帐号的GID号 字段5:用户全名 字段6:宿主目录 字段7:登录Shell信息

1.3.2 /etc/shadow

保存用户的密码、账号有效期等信息

[root@localhost ~]# head -2 /etc/shadow
root:$1$55HB4pbx$acHqk4lZiHTZ9cw0ZJe8f0:14374:0:99999:7:::
bin:*:14374:0:99999:7:::
[root@localhost ~]# tail -1 /etc/shadow
teacher:$1$BT7teaYX$s2sr6uFUwKhtU.8/8VpzB1:14374:0:99999:7:::

字段1:用户帐号的名称

字段2:加密的密码字串信息(*或!表示没设密码)

字段3:上次修改密码的时间

字段4:密码的最短有效天数,默认值为0

字段5:密码的最长有效天数,默认值为99999

字段6:提前多少天警告用户口令将过期,默认值为7

字段7:在密码过期之后多少天禁用此用户

字段8:帐号失效时间,默认值为空

字段9:保留字段(未使用)

1.3.3组账号文件

/etc/group:保存组账号基本信息

/etc/gshadow:保存组账号的密码信息

cat /etc/group
root(组账号名):x:0:
bin:x:1:
mail:x:12:postfix(组成员名)

group文件内的最后一个字段中列出属于该组的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号“,”分隔。

1.4 用户账号的初始配置文件

文件来源:useradd 命令添加一个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件。 这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件。

例如:

~/.bash_profile ~/.bashrc ~/.bash_logout

1.5文件/目录的权限和归属

访问权限

读取 r:允许查看文件内容、显示目录列表 写入 w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录 可执行 x:允许运行程序、切换目录

归属(所有权) 属主:拥有该文件或目录的用户帐号 属组:拥有该文件或目录的组帐号

1.6查看文件/目录的权限和归属

-rw-r-xr-- 1 root root 34298 04-02 00:23 install.log
第一个-:文件类型(d是目录,-是普通文件,l是软链接等)
rw-r--r--:表示文件或目录权限
rw-:属主权限
r-x:属组权限
r--:其他用户权限
r:可读
w:允许修改
x:可直接执行

rwx可以用数字表示

r:4

w:2

x:1

rwx:7

注:root创建一个目录后,如果修改了目录的权限x,其他用户无法直接进入目录。

2、相关指令

2.1添加用户账号useradd
useradd[选项] 用户名

选项:

M:是否创建家目录

s:指定用户是否允许登入到系统中(允许/bin/bash;不允许/sbin/nolognin)

注:默认不写选项的情况下为允许建立家目录和允许登入到系统中

不允许张三登入系统
useradd -s /sbin/nolognin zhangsan
李四不允许登入系统,也不创建家目录
useradd -M -s /sbin/nolognin lisi

小结:useradd 是 Linux 系统中创建新用户的命令,新建一个系统用户账号 自动创建用户对应的家目录(默认 /home/用户名),分配用户 UID、默认组 GID 等信息。

2.2设置/更改用户密码passwd
passwd[选项] 用户名

修改用户密码(免交互方式)

echo 密码 | passwd --stdin 用户名

--stdin:标准输入,从键盘中输入的内容

批量修改用户密码

cat << EOF | chpasswd 
​
用户名:密码
​
用户名:密码
​
用户名:密码
​
EOF

<< EOF:表示要输入一段多行文本,结束标记是EOF

cat:在这里表示输出文本内容

小结:为用户设置或修改登录密码。

2.3 修改用户账号属性usermod
usermod[选项] 用户名
2.4 删除用户账号userdel
userdel -r 用户名

r:表示连用户的宿主目录一并删除

例如:删除用户stu01,并将其宿主目录一并删除

[root@localhost ~]# userdel -r stu01
[root@localhost ~]# ls -ld /home/stu01/
ls: /home/stu01/: 没有那个文件或目录

小结:系统中的某个用户帐号已经不再需要使用时(如该员工已经从公司离职等情况),可以使用userdel命令将该用户帐号删除。

2.5. 添加组账号groupadd
groupadd [选项]组账号名

选项:

g GID:可以指定组GID

r:创建系统组

o:允许GID重复

f:组已经存在时报错,直接成功退出

创建普通组
groupadd dev
创建GID指定组
groupadd -g 1001 dev
创建系统组
groupadd -r nginx

小结:groupadd 用于 创建新用户组,需 root 权限,信息写入 /etc/group 与 /etc/gshadow。

2.6 添加删除组成员gpasswd
gpasswd 【选项】组名
gpasswd -a 用户名 组名
gpaswwd -d 用户名 组名
gpasswd -M 用户1 用户2 组名
gpasswd -A 管理员用户 组名

选项:

a:向组添加用户

d:从组里删除用户

M:限制只有指定用户才能加入该组

A:设置组管理员

小结:gpasswd 是 Linux 组管理工具,主要用来给组设密码、添加 / 移除成员、管理组管理员,日常最常用 -a 加人、-d 删人。

2.7 删除组账号groupdel
groupdel 组账号名
2.8查询账号信息
2.8.1 groups\id
groups 用户名
id 用户名

groups 用户名:只查看这个用户属于哪些组,比 id 更简洁。

id 用户名:查看该用户的 UID、GID、所属组 信息。

2.8.2finger
finger 用户名

查询用户账号的登录属性 注:需要先进行安装finger软件包

2.8.3 w\who\users
w 用户名

查询已登录(当前)到主机的用户信息

2.8.4 last
last 用户名

查看最近登录的用户信息

2.9 设置文件和目录的权限chmod
chmod [选项]【ugoa】【+—】【rwx】文件或目录
chmod nnn 文件或目录

选项:-R:递归修改指定目录下所有子项的权限

u:属主

g:属组

o:其他用户

a:所有用户

chmod +x 文件名    # 增加执行权限
chmod -w 文件名    # 去掉写权限
chmod u+rwx 文件名 # 给所有者加读写执行
chmod g+r 文件名   # 给同组用户加读
chmod o-rwx 文件名 # 其他人去掉所有权限
chmod 644 文件名  # 所有者读写,其他只读(文件默认)
chmod 755 文件名  # 所有者读写执行,其他读执行(脚本/目录)
chmod 777 文件名  # 所有人都能读写执行

小结:chmod 用于修改文件 / 目录权限,数字 755、644 最常用,+x 给脚本加执行权限。

2.10 设置文件或目录的归属chown
只修改文件所有组
chown :组名 文件名
同时修改所有者和所属组
chown 用户名:组名 文件名
递归修改目录下所有内容
chown -R 用户名:组名 目录名

R:递归修改

小结:chown 用来更改文件 / 目录的属主和属组,-R 递归修改整个文件夹,需 root 权限。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐