本文仅作为学习,如果有错误欢迎指正,有雷同算我抄他,我认错
如果涉及侵权立马删除
全文近4000字
在Linux系统中,用户分为两种主要类型
root
用户登录时,命令行的提示符通常是 #
,表示你有超级用户权限。$
。su
(Switch User):用于切换用户。
普通用户切换到 root
:
su -
要输入root的密码
切换到普通用户:
root
su - xxx
不需要输入密码
sudo
:以超级用户权限执行命令而无需切换到 root:
sudo command
执行命令,会提示输入当前用户的密码,而不是 root
密码
配置 sudo
权限:可以将普通用户添加到 sudoers
文件中,让其具备 sudo
权限。
sudo visudo //编辑 sudoers
在文件中添加:
xxx ALL=(ALL:ALL) ALL
在Linux系统中,每个文件和目录都有权限和所有者信息。权限管理分为三类:
文件权限的意义:文件的执行权限意味着该文件可以被当作可执行程序运行(例如脚本、二进制文件等)。目录的执行权限意味着用户可以进入该目录,如果没有执行权限,即使有读权限,用户也无法列出该目录的内容
以 ls -l
命令显示文件时,权限会以如下形式展示
drwxrwxrwx 3 root root 4096 Oct 1 07:26 nfs_rootfs/
d
:表示文件类型rwxrwxrwx
:表示文件权限,分为三组,分别为用户(owner)、组(group)和其他人(others)的权限,每组三个字符。rwx
):用户(owner)权限rwx
):组(group)权限rwx
):其他人(others)权限下面来讲讲文件的类型:
-
:普通文件(regular file)d
:文件夹(directory)l
:符号链接(symbolic link)c
:字符设备文件(character device file)b
:块设备文件(block device file)s
:套接字文件(socket)p
:命名管道(FIFO, named pipe)r
:读取权限(read),表示可以读取文件内容或列出目录。w
:写入权限(write),表示可以修改文件内容或在目录中创建、删除文件。x
:执行权限(execute),表示可以执行文件或进入目录。注意:rwx的顺序固定,只能是这样子的
所以就导致:在后面的权限掩码里 r相对于4 w相对于2 x相对于1(这里是八进制噢)
命令1:chmod:
功能:更改文件或目录的权限,只有文件的所有者或者 root
用户可以更改权限
一般就是用户表示符 “加减等于” 权限字符
符号模式:
用户表示符:u
(所有者),g
(所属组),o
(其他人)。
权限字符:r
(读),w
(写),x
(执行)。
举个例子:
chmod u+x /xxx/a.txt
这个命令的意思就是:对于a.txt文件,用户增加执行权限
当然,也可以只用八进制的方式,权限是由三位八进制数字组成的
这里说过“所以就导致:在后面的权限掩码里 r相对于4 w相对于2 x相对于1(这里是八进制噢)”
举例:7 就是可读 可写 可执行 ,5就是 可读 不可写 可执行
举例:
chmod 754 /xxx/a.txt
解释:
7
:所有者可以读、写、执行(rwx
)。5
:组可以读和执行,但不能写(r-x
)。4
:其他人只能读取(r--
)。递归设置权限:可以用 -R
选项递归更改文件和目录的权限。
举个例子:
递归更改目录 dir1
及其所有子文件的权限为 755
:
chmod -R 755 /xxx/dir1
命令2:chown:
功能:更改文件的所有者
举个例子:
将文件 a.txt
的所有者更改为 user1
chown user1 /xxx/a.txt
命令3:chgrp:
功能:更改文件的所属组
举个例子:
将文件 a.txt
的所属组更改为 group1
chgrp group1 /xxx/a.txt
命令4:umask:
功能:查看或设置文件的默认权限掩码。
解释:当新文件创建时,权限会基于系统默认的权限减去 umask
掩码
默认设置:文件默认权限是 666
,目录默认权限是 777
,然后通过 umask
掩码减去对应的值。
举例:
umask //查看
umask 055 //设置 新的文件将拥有 611 权限,新的目录将拥有 722 权限
命令5:file:
功能:判断文件类型
举个例子:
检查文件类型:
file /xxx/a.txt
粘滞位(Sticky bit):chmod +t
功能:防止目录下的文件被其他用户删除。即使其他用户有写入权限,也只能删除自己创建的文件。
常见应用:比如 /tmp
目录,所有用户都有写权限,但每个用户只能删除自己创建的文件。
举个例子:
对目录 dir1
启用粘滞位
chmod +t /xxx/dir1
粘滞位(chmod+t):为了防止我的文件被别人删掉
但是能被root、目录所有者,文件所有者删除
--------------------------------------------分割线-----------------------------------------------
下面来补充一点,以便于更加深入的掌握权限管理的知识,有兴趣的可以看看吖
su
和 sudo
部分:su
切换用户并登录到该用户的会话环境,尤其适合在长时间维护任务中使用。sudo
是以当前用户身份暂时提升权限执行某个特定命令,不用完全切换到 root
,也更安全。(也就是我们常说的提权)使用 sudo
还能防止用户一直处于 root
权限下进行危险操作chmod
部分:
符号模式 中 a
代表 “所有用户”
例子:
chmod a+r file.txt # 所有用户添加读取权限
补充一些常见的八进制权限表示组合:
chown
和 chgrp
命令:
补充一个递归修改所有者和组的示例:
chown -R user1:group1 /xxx/dir1 # 递归更改目录及其内容的所有者和所属组
-v
选项可以显示更改的详细信息:
chmod -v 754 /xxx/a.txt # 显示文件权限修改信息
umask
命令:
解释为什么减去 umask
掩码:umask命令通过设置一个权限掩码,来限制新创建的文件或目录的默认权限。这个掩码决定了哪些权限将被取消或保留。当新文件或目录被创建时,其权限将基于默认权限减去umask掩码后的结果来确定。如果 umask
是 022
,新创建文件的默认权限为 644
(即 666 - 022
)新创建目录的权限为 755
(即 777 - 022
)。
粘滞位(Sticky bit)
:
补充一下如何查看某个目录是否启用了粘滞位:
ls -ld /xxx/dir1
如果启用了粘滞位,权限位的最后一组会显示为 t
,例如:
drwxrwxrwt 2 root root 4096 Mar 1 08:56 /tmp
权限类型解释:
补充一些权限对于 目录 和 文件 的区别:
文件的执行权限:文件可以作为程序运行。
目录的执行权限:用户可以进入该目录(即 cd
命令生效)。
目录的读取权限:用户可以查看该目录下的文件列表。
目录的写入权限:用户可以在该目录中创建或删除文件
符号链接的补充(l
):(符号链接 可以理解为文件的快捷方式,链接目标文件或目录。)
补充一下如何创建和查看符号链接:
ln -s target_file link_name
例如,如果你有一个文件 /home/user/documents/report.txt
,并且你想要在桌面创建一个指向这个文件的符号链接,你可以使用以下命令:
ln -s /home/user/documents/report.txt /home/user/Desktop/report_link.txt
执行这个命令后,你会在桌面上看到一个名为 report_link.txt
的文件。这个文件实际上是一个指向 /home/user/documents/report.txt
的符号链接。当你打开 report_link.txt
时,你实际上是在查看和编辑 /home/user/documents/report.txt
文件。
--------------------------------------------分割线-------------------------------------------------
这里更难了噢,当了解就可以啦,算是高阶的权限操作概念啦
SGID 和 SUID:
SUID:对于二进制可执行文件,如果设置了 SUID 位,任何用户执行该文件时,都会以文件所有者的权限执行,而不是以执行用户的权限,示例:
chmod u+s /usr/bin/passwd # 设置 passwd 程序为 SUID
SGID:对于目录,如果设置了 SGID 位,那么在该目录中创建的文件将自动继承目录的组权限,而不是当前用户的组,示例:
chmod g+s /path/to/directory
默认文件权限的解释:
当使用 touch
命令创建文件时,新文件的默认权限是 666
(即没有执行权限),但实际权限会受 umask
影响
如何查看权限:
使用 stat
命令查看文件的详细权限和时间戳:
stat -c "%n: %A %U %G" /xxx/a.txt # 显示文件名、权限、用户和组
使用alias
简化权限管理:
通过 alias
来简化一些权限操作,避免每次都输入完整命令:
alias ll='ls -l'
alias la='ls -la'