1.chmod命令
chmod命令用于更改文件或目录的权限。
chmod permissions file: 将文件或目录的权限更改为指定的权限。
chmod -R permissions directory: 递归地将目录及其子目录中所有文件的 权限更改为指定的权限。
参数含义:
-R(递归):将操作应用于目录下的所有文件和子目录。
permissions:权限表示为数字或符号模式的形式,用于指定对文件的读取、 写入和执行权限。
使用数字赋权的命令格式如下:
chmod abc filename
其中的abc 分别代表3个数字,并且分别对应问个不同的属组。 即:
数字a对应第2到4位,表示拥有者的权限。
数字b对应第5到7位,表示同组用户的权限。
数字c对应第8到10位,表示其他组的权限。
在数字模式中,每个权限位的可用值为:
4:读取权限(r)
2:写入权限(w)
1:执行权限(x)
通过相加不同权限值得到所需的权限。例如,7表示读取、写入和执行 权限 (rwx)。
示例:
chmod 777 file1 <==> chmod a=rwx file
chmod 771 file <==> chmod ug=rwx,o=x file
在符号模式中,可以使用以下符号组合来设置权限:
u:文件属主权限
g:同组用户权限
o:其他用户
a:所有用户
+:添加权限
-:移除权限
+:添加权限
-:移除权限
=:设置权限
小实验
# 小实验:只给其他用户赋予可执行权限,属主用户用户能执行吗
chmod 001 multi.sh
查看权限
此时multi.sh的属主和属组是xxh,那么给其他用户赋予了可执行权限,测试属主用户能否执行
测试其他用户是否能执行
发现也不行,查资料发现,给执行权限的同时也要给读权限,因为执行脚本的时候肯定要读取脚本。那刚才的属主用户是否也是因为没有该原因导致的呢,再测试下。
此时multi.sh只有其他用户拥有读取和执行权限,我们用属主用户测试下是否能执行
发现确实是不行的,然后再切换到其他用户执行脚本
发先执行成功。
此时又有疑问,如果该文件的属主用户是root呢?
我们再进行测试
此时其他用户拥有该脚本的读取和执行权限,看属主用户是否能执行
发现可以,这是因为什么呢,因为root
用户具有最高权限,即使文件权限中没有为root
用户显式设置执行权限,root
用户仍然可以执行该文件。
有一个大胆想法:刚才属主为普通用户的时候,只给其他用户赋予执行权限不赋予读取权限,其他用户是执行不了的,那么root用户能执行吗?有问题就实操!
那如果该脚本的权限是000呢?
发现脚本执行失败,O(∩_∩)O哈哈~看来root用户也不是万能的!
那004?
发现不可以!
2.chown命令:
使用chown命令的基本语法如下:
chown [选项] 用户名:组名 文件/目录
其中,参数含义如下:
[选项]:可选参数,用于指定操作的选项。
用户名:要设置为文件或目录所有者的用户名。
组名:要设置为文件或目录所属组的组名。
文件/目录:要更改所有者的文件或目录的路径。
常见的选项包括:
-R或--recursive:递归地将操作应用于目录下的所有文件和子目录。
-v或--verbose:显示详细的操作信息。
例如,如果要将文件 example.txt 的所有者更改为 user1,则可以运行以 下命令:
chown user1 example.txt
如果要将目录 mydir 及其子目录下的所有文件的所有者更改为 user2,可 以使用 -R 选项进行递归操作:
chown -R user2 mydir
请注意,在执行chown命令时,您需要具有足够的权限来更改文件或目录的 所有者。
3.给其他用户授予root权限
修改/etc/sudoers文件
使用root用户身份执行以下命令打开sudoers文件:
visudo
在文件中找到root行,在root下面添加一行,如下所示:root ALL=(ALL) ALL <用户名> ALL=(ALL) NOPASSWD:ALL(执行时不需要密码)
在命令中,将<用户名>
替换为要授权的用户名。