Linux组成员共享目录
背景
在实际工作中常常会遇到这样的问题:一台服务器上的多个用户需要合作完成一个项目,他们都有自己的home目录和初始私有组,而他们需要同时再同一个目录下做开发。
这时就会用到组成员共享目录,下面介绍如何让组成员再同一目录协同工作
以下操作默认用root用户进行
准备
假设需要合作的三个用户分别为U1、U2和U3,其中U1 为项目的管理员。
- 首先新建这三个用户(包括设置初始密码):
useradd U1
passwd U1
同样的方法操作三次,依次新建这三个用户。
- 新建介绍之后可以通过查看home目录下的文件夹来判断是否成功以及当前系统内的用户数。
ll /home
- 还可以通过查看以下两个文件获得用户信息,以U1为例
# /etc/group 下存的是用户信息
# /etc/shadow 下存的是用户密码
grep U1 /etc/passwd /etc/shadow
- 然后要新建一个组(包括设置初始密码):
groupadd pro1
gpasswd pro1
- 可以用类似查看用户的方法查看组信息
grep pro1 /etc/gpasswd /etc/gshadow
- 然后新建需要共享的目录(/project/pro1):
# 采用以下方式分步创建
cd /
mkdir project
cd project
mkdir pro1
# 也可以采用以下一句命令直接创建
mkdir -P /project/pro1
- 创建结束可在project文件夹下运行
ls -l
命令查看文件夹信息
开始
- 先把U1设置为管理员
gpasswd -A U1 pro1
# 注意这一句只把U1设置为管理员并没有将其加入对应的组
- 再把三个用户加入组pro1
gpasswd -a U1 pro1
gpasswd -a U2 pro1
gpasswd -a U3 pro1
- 把要共享的目录和组关联起来
chgrp pro1 /project/pro1
chmod 2770 /project/pro1 # 这一句使得组外除root的所有用户对pro1文件夹没有任何权限
- 再次在project文件夹下运行
ls -l
命令查看文件夹信息,对比验证操作是否成功
验证
-
新建用户U4
-
切换到U1用户,在组内新建一个文件a.txt
-
切换到U2 ,打开项目文件夹,发现可以打开并修改a.txt
-
切换到U4,发现无法进入pro1文件夹,
删除
通过以上操作,已经将新建的三个用户加入组pro1,并且关联了工作目录/project/pro1,该文件夹组外用户无法访问,现在介绍删除所有用户和组的方法。
- 利用命令userdel即可删除用户,但是这样并不能将所有文件删除干净
- 利用以下两条命令查找用户的所有文件(以U1为例)
updatedb #更新索引文件
locate U1
- 根据反馈结果,利用rm命令彻底删除所有文件
rm -rf /home/U1
rm -rf /var/spool/mail/U1
-
再次更新数据库然后查找即可发现所有文件均已被删除。
-
依次通过上述方法删除所有用户,然后利用
groupdel
命令删除组即可