Bash 脚本 – 文件权限
在本文中,我们将讨论 Bash 脚本中的文件权限
为了理解这个场景,让我们举个例子。假设有一位 XYZ 公司的系统管理员 A,他设计了一个脚本,用户在每天晚上 8:00 执行该脚本以发送报告。他设计了脚本,但忘记授予用户执行脚本的权限。每当用户尝试执行脚本时,他都会收到错误,您无权执行此操作,为什么会发生这种情况?
在上面的例子中,我们看到系统管理员创建了一个脚本,但他没有授予用户权限,因为他无法执行它,所以深入了解这个让我们解释一下如何设置文件权限以及如何检查它们.
解决方案:现在对于上面的示例,系统管理员只需授予或设置用户文件执行权限,以便他可以执行该文件
那么什么是文件权限呢?
文件权限可以描述为可以对文件或目录执行的人员、内容和活动。
- 谁指的是用户、组或其他人
- 添加、删除和设置是什么意思
- 这意味着读、写和执行
文件及其权限的基本列表视图
我们使用的命令是 ls -l 向我们显示当前文件夹中的文件/目录列表。此屏幕截图是显示权限的常见示例(使用普通 centos7 )
从上面的截图中,让我们取一个文件,比如说 luser_t04.sh,看看它的文件权限
-rwx rwx rwx 1 root root 0 Feb 27 17:35 luser_t04.sh
1 2 3
(r = 读取,w= 写入,x = 执行)
- 1代表用户的权限,他们拥有读取、写入和执行文件的全部3个权限
- 2 代表文件关联的组,它也拥有所有权限
- 3 代表其他也包含所有 3 个权限
管理文件权限
为了管理文件权限,我们有一个名为 chmod 的命令,我们可以使用它来更改文件和目录的权限。
使用 chmod 命令的方法
命令的使用方法有2种
- 符号法
- 数值方法
符号方法
句法:
chmod whowhatwhich 文件|目录
- 谁是 u(user) , g(group) , o(other)
- 什么是 +(add) ,-(remove) ,+(set)
- 即 r(读取)、w(写入)、x(执行)
让我们看一个例子:-
假设你想从文件中删除组和其他人的读写权限
chmod go-rw (can be any file name)
例子:
chmod go-rw luser_t04.sh。新的权限会是这样的
-rwx–x–x 1 root root 0 Feb 22 02:28 luser_t04.sh
数值方法
句法:
chmod ### file|directory
#:每个数字代表用户、组和其他人的权限。
4 =read 2=write 1 = execute
让我们看看上面的例子:
-rwx–x–x 1 root root 0 Feb 22 02:38 luser_t04.sh
- 用户权限已由 rwx (4+2+1=7) 表示
- 组权限已被描述为 –x (0+0+1 =1)
- 其他权限被描述为 –x ( 0+0+1=1)
让我们再举一个文件的例子
具有640权限的文件在数字方法中的含义
-rw- r– — 1 root root 0 Feb 22 02:36 file1.txt
- 用户拥有由 rw- (4+2+0=6) 表示的 read(4) 和 write(2) 权限
- 该组具有由 r- 表示的 read(4) 权限- (4+0+0=4)
- 其他没有权限(0),用-(0+0+0=0)表示
在此示例中为文件设置文件权限(示例: FILE )
我们希望用户能够读取、写入和执行文件,但我们不希望组写入和执行文件而其他人只能执行文件,所以我们应该使用什么命令和语法
解决方案:
chmod 741 FILE1 (can be any file name)
新的权限集将是 rwx r– –x for FILE
-rwx r– –x 1 root root 0 Feb 22 02:28 file.txt
文件权限脚本
我们可以通过创建一个简单的脚本来解释文件的权限,在了解文件权限之后执行和更改文件的权限。
脚本中的分步命令:
第 1 步。首先,我们创建一个文件或检查屏幕截图中是否存在现有文件。如果文件不存在,那么我们执行命令
touch
步骤 2. 我们的目标是删除其他人和组的写入权限,如屏幕截图中所述,我们将执行脚本中的命令
chmod 744
步骤 3. 最后检查权限是否被更改,我们将使用
ls -l
剧本
#!/bin/bash
# script to change permission of file
# File variable to store file.txt location
FILE="file.txt"
# to check the file we want to change
# exists or not
if [[ ! -e "${FILE}" ]]
then
echo "creating ${FILE} file"
touch file.txt
fi
# to remove write permission of other and group of file
chmod 744 "${FILE}"
#to check if the permission are removed
ls -l "${FILE}"
现在我们将执行这个脚本并检查它是否有效
./file_perm.sh
输出
注意:在编写脚本和执行时,务必在创建脚本 ls -l 命令后检查权限