Linux用户和文件权限管理实验

实验环境

       公司的Linux主机即将提供给技术部作为开发服务器使用,根据部门内项目组的构成情况,首先需要建立相应的组账号、用户账号,并未相关目录设置权限,还需要设置一个共用的数据存储目录,便于同时之间数据交换。

需求如下:

1、建立用户目录

创建目录 /tech/it 和 /tech/development,分别用于存放各组项目组中用户账号的宿主目录。

[root@localhost ~]# mkdir /tech
[root@localhost ~]# mkdir /tech/it
[root@localhost ~]# mkdir /tech/development

2、添加组账号

为两个项目组添加组账号 it,development,GID分别设置为1101,1102;为技术部添加组账号 tech,GID设置为1100。

[root@localhost ~]# groupadd -g 1101 it
[root@localhost ~]# groupadd -g 1102 development
[root@localhost ~]# groupadd -g 1100 tech

3、添加用户账号

it 组包括三个用户:jack,rose,tom,宿主目录均使用 /tech/it 目录中与账号同名的文件夹;

[root@localhost ~]# useradd -d /tech/it/rose -g it rose
[root@localhost ~]# useradd -d /tech/it/jack -g it jack
[root@localhost ~]# useradd -d /tech/it/tom -g it tom

其中jack用户账号设置为2021年10月1日失效;

[root@localhost ~]# chage -E 2021-10-1 jack
[root@localhost ~]# chage -l jack
Last password change : Oct 28, 2020
Password expires : never
Password inactive : never
Account expires : Oct 01, 2021

development组中包括两个用户,分别是 zhangsan 和 lisi 宿主目录均使用 /tech/development目录中与账号同名的文件夹;其中 zhangsan 用户的登录shell 设置为/bin/sh。

[root@localhost ~]# useradd -d /tech/development/zhangsan -g development zhangsan
[root@localhost ~]# useradd -d /tech/development/lisi -g development lisi

[root@localhost ~]# usermod -s /bin/sh zhangsan

上述所有的用户账号均要求加入到 tech 组内。

[root@localhost ~]# gpasswd -a jack tech
Adding user jack to group tech
[root@localhost ~]# gpasswd -a rose tech
Adding user rose to group tech
[root@localhost ~]# gpasswd -a zhangsan tech
Adding user zhangsan to group tech
[root@localhost ~]# gpasswd -a lisi tech
Adding user lisi to group tech
[root@localhost ~]# gpasswd -a tom tech
Adding user tom to group tech

在测试阶段仅为 jack, rose, zhangsan 这三个用户账号设置初始密码 “123456” ,其它用户暂时先不设置密码。

[root@localhost ~]# passwd jack
[root@localhost ~]# passwd rose
[root@localhost ~]# passwd zhangsan

4、设置目录权限和归属
将 /tech 目录的属组设置为 tech ,去除其它用户的所有权限
[root@localhost ~]# chown :tech /tech
[root@localhost ~]# chmod 750 /tech
[root@localhost ~]# ll -d /tech
drwxr-x---. 4 root tech 35 Oct 28 14:14 /tech

将 /tech/it 目录的属组设置为 it ,去除其它用户的所有权限
[root@localhost ~]# chown :it /tech/it/
[root@localhost ~]# chmod 750 /tech/it/
[root@localhost ~]# ll -d /tech/it/
drwxr-x---. 5 root it 41 Oct 28 14:28 /tech/it/

将 /tech/development 目录的属组设置为 development ,去除其它用户的所有权限
[root@localhost ~]# chown :development /tech/development/
[root@localhost ~]# chmod 750 /tech/development/
[root@localhost ~]# ll -d /tech/development/
drwxr-x---. 4 root development 34 Oct 28 14:31 /tech/development/

5、建立公共数据存储目录
创建 /public 目录,允许所有技术组内的用户读取,写入,执行文件,非技术组的用户禁止访问此目录。

[root@localhost ~]# mkdir /public
[root@localhost ~]# chmod 770 /public/
[root@localhost ~]# ll -d /public/
drwxrwx---. 2 root tech 6 Oct 28 15:00 /public/

测试
[root@localhost ~]# su - rose
[rose@localhost ~]$ ll /public
total 0
[rose@localhost ~]$ cd /public/
[rose@localhost public]$ echo ddddd > a.txt
[rose@localhost public]$ ll
total 4
-rw-r--r--. 1 rose it 6 Oct 28 15:13 a.txt

且 /public 目录仅允许 root 用户删除
[root@localhost ~]# chmod a+t /public/
[root@localhost ~]# ll -d /public/
drwxrwx--T. 2 root tech 6 Oct 28 15:00 /public/


6、在 /public 目录内创建文件 attendance ,仅允许在此文件中追加内容,不允许覆盖/删除内容。
[root@localhost ~]# cd /public/
[root@localhost public]# touch attendance
[root@localhost public]# chattr +a attendance
[root@localhost public]# lsattr attendance
-----a---------- attendance

测试
[root@localhost ~]# rm /public/attendance
rm: remove regular empty file ‘/public/attendance’? y
rm: cannot remove ‘/public/attendance’: Operation not permitted
可以追加,不可以覆盖
[root@localhost public]# echo 123 >> attendance
[root@localhost public]# echo 44466 > attendance
bash: attendance: Operation not permitted
[root@localhost public]# echo 44466 >> attendance
[root@localhost public]# cat attendance
123
44466

7、创建目录 /finance ,允许root 用户具有读写权限,其它人没有任何权限。
[root@localhost ~]# mkdir /finance
[root@localhost ~]# chmod 600 /finance/
[root@localhost ~]# ll -d /finance/
drw-------. 2 root root 6 Oct 28 15:27 /finance/

特别允许用户 caiwu 对此目录具有全部权限。
[root@localhost ~]# useradd caiwu
[root@localhost ~]# setfacl -m u:caiwu:rwx /finance/
[root@localhost ~]# getfacl /finance/
getfacl: Removing leading '/' from absolute path names
# file: finance/
# owner: root
# group: root
user::rw-
user:caiwu:rwx
group::---
mask::rwx
other::---

上一篇:互联网时代背景下“众筹模式”发展文献综述


下一篇:【W-3】WARNING: This is a development server. Do not use it in a production deployment.