Linux 用户文件的群组设置及权限管理

发布于:2025-06-09 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、用户分类

Uid,User ID,用户标识

管理员uid = 0、系统用户uid = 1~499、普通用户 uid > 1000

Linux用户分类

二、用户配置文件:

Linux 用户群组的配置文件

1. 查询用户信息

用户的基本信息存储在 "/etc/passwd"

执行如下命令,可以列出所有的用户信息,最上方是root用户,最下方是新增用户。

cat /etc/passwd
passwd 用户字段解读

用户信息的构成:用户名,密码占位符x,uid,gid,用户家目录,shell指令

如不指定用户主组,新建用户会默认生成同名group。

useradd指令与参数说明

2. 查询用户密码

用户密码存储在"/etc/shadow"

执行如下指令,可以查看用户密码,*和!表示该用户无法通过密码登录,比如系统用户。

文件信息由用户名+密码散列(哈希算法SHA512计算获得)

cat /etc/shadow

3. 查询群组信息

用户组信息存储在"etc/group"

执行如下指令,可以查看群组信息

cat /etc/group

用户组信息存放在/etc/group文件下

文件信息由群组名称:群组密码(x占位):群组ID:群组列表,构成

4. 用户、群组的增删

useradd 用户名,新增用户,同时自动创建同名群组

注:useradd指令太老旧,采用默认方式新增的用户,会出现一系列问题,通常需要附加参数,例如:useradd -m -g groupname -s /bin/bash newuser,参数m表示在/home下新建家目录

groupadd -g 新增group并指定gid

passwd创建密码

userdel,删除用户

groupdel,删除组

su 用户名,切换用户

whoami 查询当前用户名

exit 退出当前用户回到上一个用户

参考链接:Ubuntu中用useradd创建用户后无法用su切换过去_ubuntu切换不了用户-CSDN博客

三、文件管理

1. 文件标识

文件标识

b块设备,和存储设备有关,可以随机读写

c字符设备,和键盘有关,先进先出

p管道设备,由于linux进程间通信

2. 文件详情字段说明

ls -l

ll
ls -l 字段说明

3. 文件基本操作指令(围绕增删查改)

ls 查看当前目录下的文件信息,查看详细信息需要“-l”参数或直接使用ll

cd 切换目录

pwd 列出从根目录到当前目录的绝对路径

mkdir 创建目录

touch new.txt 创建新文件

mv new.txt 1.txt 文件重命名

mv 1.txt ../ 路径移动

cp 1.txt 2.txt 文件复制

cp -r old new 目录的复制 

rm 2.txt 删除文件

rm -f 2.txt  暴力删除文件

rm -r 删除目录

ln 1.txt 2.txt 给1.txt创建名为2.txt的硬链接

ln -s 1.txt 2.txt 给1.txt创建名为2.txt的软链接

四、Linux权限管理(ugo和acl权限)

1. ugo权限的设置

文件在被创建的同时,文件所有者默认拥有读写执行的权限,(4读,2写,1执行)可以组合成所有权限,

chmod u + r 

u 当前用户,g 当前群组,o 其他用户,a 所有用户

可执行的权限赋予遵循最小化原则,只给必要用户赋予执行的权限

ugo权限说明
文件目录的读r写w执行x权限
r对应4,w对应2,x对应1

2. acl权限的设置

 acl权限设置相比于ugo权限设置,可以实现对群组内指定用户的权限设置,

获取文件目录的acl权限:getfacl

设置acl的权限:setfacl -m u:username:rwx 文件/目录

3. 文件目录的用户及主族变更:

chown 将指定文件变更到不同的用户和用户组下

chown :group1 file1把file1的主组变更为group1

chown user1:  file1把file1的用户变更为user1

chown 修改文件/目录的所属用户组别


五、文件及用户管理综合实战:

项目示意图

1. 项目目标:

1. /home家目录下新建三个部门文件目录:研发部rddata、产品部pmdata、人事部hrdata

2. 部门内部成员可以查看文件,例如,rd1和rd2可以查看研发部的文件

3. 跨部门不可以查看文件,研发部不能查看人事部的文件

4. 研发部可以查看产品部门prd的文件内容

2. 终端代码:

终端逐行输入代码,即可实现上述项目目标。

注意,为了减少bug出现,用户、用户组的新增及权限设置都需要在root用户的权限下操作,如果切换用户后,不能访问对应群组的目录与文件,大概是父目录的权限没有变更,这时需要切回root并对父目录做群组和权限的设置。

# 切换到root用户,进入home目录
su root
cd /home

# 为三个部门建立各自的群组
groupadd grouprd
groupadd grouppm
groupadd grouphr

# 在文档最下方查看是否新建成功
cat /etc/group

# 每个部门新增两名用户
useradd -m -g grouprd -s /bin/bash rd1
useradd -m -g grouprd -s /bin/bash rd2
useradd -m -g grouppm -s /bin/bash pm1
useradd -m -g grouppm -s /bin/bash pm2
useradd -m -g grouphr -s /bin/bash hr1
useradd -m -g grouphr -s /bin/bash hr2

# 查看用户是否新建成功, passwd文档最下方有新建用户
cat /etc/passwd
# home目录下有用户同名的家目录
cd /home

# 为用户新增密码
passwd rd1
passwd rd2
passwd pm1
passwd pm2
passwd hr1
passwd hr2

# 以root用户在home目录下新建部门数据文件夹
mkdir rddata 
mkdir pmdata 
mkdir hrdata 

# 查看新建数据目录的权限
ll |grep data

# 修改数据文件夹的权限,目标(root rwx,对应群组 rwx,其他群组---)
chmod 770 rddata
chmod 770 pmdata
chmod 770 hrdata

# 查看新建数据目录的权限是否改变
ll |grep data

# 修改数据文件夹所属群组
chown :grouprd rddata
chown :grouppm pmdata
chown :grouphr hrdata

# 查看新建数据群组是否改变
ll |grep data

# 切换rd1,进入rddata并创建文档,设置文件权限750
su rd1
cd ./rddata
touch rd1file.txt
chmod 750 rd1file.txt

# rd1返回上一级home家目录,尝试进入pmdata和hrdata显示无权限
cd ..
cd ./pmdata
cd ./hrdata

# 切换pm1用户,可以在pmdata下新建文档并设置权限750
su pm1
cd ./pmdata
vim pm1file.txt
chmod 750 pm1file.txt

# pm1返回上一级home家目录,尝试进入rddata和hrdata显示无权限
cd ..
cd ./rddata
cd ./hrdata

# 切换root用户并在pmdata中新建prd共享目录,设置主族为grouppm,权限770
su root
cd ./pmdata
mkdir prd
chown -R :grouppm prd
chmod 770 prd
# 给prd设置acl权限,使得groupprd组可以对目录下文件进行查看和修改
setfacl -m g:grouprd:rwx prd
getfacl prd

六、结语

用户及文件管理的命令不多也不难,但是配置文件中各字段含义的理解比较费时间,实战过程中需要频繁切换用户和目录,比较容易把人搞晕,最后只要能否实现项目目标,基本就可以理解和构建多用户的文件管理系统了。

用户增减(useradd,userdel)

群组增减(groupadd, groupdel)

ugo权限变更chmod

acl权限获取及变更(getfacl, setfacl)