用linux的shell脚本在主目录下建立20个目录即user01~user20,并设置每个目录的权限有:所有者和所属组为读写执行权限,其他用户为只读权限。要求:目录数在1~9时,目录名设为user01~user09。
时间: 2024-03-23 17:43:20 浏览: 35
可以使用以下的脚本来实现:
```
#!/bin/bash
# 创建目录
for i in {1..20}
do
if [ $i -lt 10 ]; then
mkdir ~/user0$i
else
mkdir ~/user$i
fi
done
# 设置权限
for i in {1..20}
do
if [ $i -lt 10 ]; then
chmod 744 ~/user0$i
else
chmod 744 ~/user$i
fi
done
```
这个脚本先使用循环创建了20个目录,如果目录数在1-9之间,使用user0开头的目录名,否则使用user开头的目录名。然后,使用循环设置每个目录的权限,所有者和所属组有读写执行权限,其他用户只有读权限。在这个脚本中,我们使用了chmod命令来设置权限。其中,数字744表示rwxr--r--,即所有者和所属组有读写执行权限,其他用户只有读权限。
相关问题
Linux编写脚本实现:在主目录下建立20个目录即user01~user20.并设置每个目 录的权限有:所有者和所属组为读写执行权限,其他用户为只读权限·要求:目 录数在1~9时,目录名设为user01-user09,由运行参数给出指定目录,执行格式为:程序名【目录名】,若执行时位置参数没有给出目录名,则默认当前目录。
好的,这是一个简单的Shell脚本,可以实现您的需求。以下是脚本的具体实现:
```
#!/bin/bash
if [ $# -eq 0 ]; then
dir="."
else
dir="$1"
fi
if ! [ -d "$dir" ]; then
echo "Directory $dir does not exist!"
exit 1
fi
cd "$dir"
for i in {1..20}; do
if [ $i -lt 10 ]; then
dirname="user0$i"
else
dirname="user$i"
fi
if ! [ -d "$dirname" ]; then
mkdir "$dirname"
fi
chmod 755 "$dirname"
done
```
这个脚本首先会检查运行参数,如果没有给出目录名,则默认为当前目录。然后,它会检查目录是否存在。如果目录不存在,则会输出一条错误信息并退出。接着,脚本会进入指定的目录,使用循环创建20个目录。当目录数小于10时,目录名为user01-user09;否则,目录名为user10-user20。每个目录都会使用chmod命令设置权限为755,即所有者和所属组有读写执行权限,其他用户只有读权限。
您可以将这个脚本保存为一个文件(比如create_dirs.sh),然后使用chmod命令添加执行权限(比如chmod +x create_dirs.sh),最后通过运行./create_dirs.sh [目录名]来执行脚本。如果没有给出目录名,则默认为当前目录。
在1中定义的逻辑卷是/dev/sdd2、/dev/sdd3、/dev/sdd4,主分区是/dev/sdd1。每项目组内,各设置5个用户,其用户名格式为:组名_user_n,其中n为1~5,其家目录都在/home目录下。具体设置如下: (1)每个组的每个用户都有自己的私有目录(来自1中定义的逻辑卷); (2)每个组都各自拥有一个公共目录(来自1中定义的主分区); (3)每个用户的私有目录仅允许自己有全部权限,组内用户有访问权限,其他用户没有任何权限; (4)每个组的公共目录仅允许root用户有访问权限,组内用户有全部权限,其他用户均无任何权限; (5)建立用户和组的过程,请使用shell脚本实现。 (6)提供shell脚本文件源码。
以下是实现上述要求的shell脚本文件源码:
```
#!/bin/bash
# 创建组
groupadd group1
groupadd group2
groupadd group3
# 创建用户
for i in {1..5}
do
useradd -G group1 -m -d /home/group1_user_$i group1_user_$i
useradd -G group2 -m -d /home/group2_user_$i group2_user_$i
useradd -G group3 -m -d /home/group3_user_$i group3_user_$i
done
# 挂载逻辑卷
mkdir /mnt/private
mkdir /mnt/private/group1
mkdir /mnt/private/group2
mkdir /mnt/private/group3
mkdir /mnt/public
mount /dev/sdd2 /mnt/private/group1
mount /dev/sdd3 /mnt/private/group2
mount /dev/sdd4 /mnt/private/group3
mount /dev/sdd1 /mnt/public
# 设置权限
for i in {1..5}
do
# 私有目录
chown group1_user_$i:group1 /mnt/private/group1/group1_user_$i
chmod 700 /mnt/private/group1/group1_user_$i
setfacl -m u:group1_user_$i:rwx /mnt/private/group1/group1_user_$i
setfacl -m g:group1:r-x /mnt/private/group1/group1_user_$i
setfacl -m o::--- /mnt/private/group1/group1_user_$i
chown group2_user_$i:group2 /mnt/private/group2/group2_user_$i
chmod 700 /mnt/private/group2/group2_user_$i
setfacl -m u:group2_user_$i:rwx /mnt/private/group2/group2_user_$i
setfacl -m g:group2:r-x /mnt/private/group2/group2_user_$i
setfacl -m o::--- /mnt/private/group2/group2_user_$i
chown group3_user_$i:group3 /mnt/private/group3/group3_user_$i
chmod 700 /mnt/private/group3/group3_user_$i
setfacl -m u:group3_user_$i:rwx /mnt/private/group3/group3_user_$i
setfacl -m g:group3:r-x /mnt/private/group3/group3_user_$i
setfacl -m o::--- /mnt/private/group3/group3_user_$i
# 公共目录
chmod 770 /mnt/public/group1
chown root:group1 /mnt/public/group1
chmod 770 /mnt/public/group2
chown root:group2 /mnt/public/group2
chmod 770 /mnt/public/group3
chown root:group3 /mnt/public/group3
done
```
请注意,运行该脚本文件需要root权限。脚本中的实现方式可能不是最优解,但可以满足要求。建议在实际使用前进行测试,并根据实际情况进行必要的修改。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)