linux中执行权限是什么

说到真相管理,我很理解。
记得有一年我在公司的时候,公司里有一台服务器,服务器上有一个脚本文件,是自动备份的重要脚本。
那天我突然发现这个脚本无法运行。
我当时就觉得出了什么问题。

当时检查了权限,发现是因为我给脚本文件添加了x权限,但是后来公司新同事不小心删除了。
结果,我的脚本文件变得“不可见”。
即使有,也无法使用。
我当时心情好着急,赶紧给它添加了x权限,然后它就恢复正常运行了。

我们来谈谈目录权限。
有一次我接了一个项目,需要在服务器上创建一个新目录并上传一些数据。
本来以为很简单,但是当我用cd命令进入这个新目录时,却进不去,显示“权限被拒绝”。
我检查了权限,发现忘记给目录添加x权限了。

还有一次,公司要清理服务器上的旧文件,我负责删除文件夹中的文件。
删除了半天,发现文件夹里的文件无法删除。
查看权限后发现是目录权限有问题。
当时我以为我没有足够的许可。
然后仔细一看,原来是少了w目录权限。
虽然我对该文件有写权限,但没有写权限则无法删除该目录。

所以,正确的实施非常关键。
可能就像当时的我一样,搞了很久还是不知道是哪个环节出了问题。
所以,从事Linux工作的人一定要懂权限管理,避免像我现在这样每次都和权限“打架”。

关于Linux系统权限的问题

说白了,Linux权限只意味着三件事:谁可以做什么,他们可以做什么,以及他们如何做。
这个问题比较复杂,因为不同的用户组有不同的权限,数字和字符的两种表示方式很容易混淆,但用多了就容易了。

我们先来说说最重要的事情。
当涉及到数字权限时,请记住 4 2 1 规则。
比如我们去年运行那个项目的时候,给脚本文件设置了7 5 0的权限,所有所有者都启用,在组内读取和执行,只有外人可见。
字符方式比较直观,如rwxr--rw-,但用命令改变时很容易丢失字符。
例如,您忘记将 -o 添加到 chmod u+x file.txt。

还有一点就是权限的继承。
新文件默认具有父目录的权限。
去年,我犯了一个错误,将6 6 6 设置为空目录。
结果在其上创建的文件全部为6 6 6 ,导致系统文件被修改。
说实话,当时挺尴尬的。
还有另一个重要的细节。
检查权限时,不要忽略特殊权限,例如 suid 位。
去年我们运维差点就放过了一个提权漏洞。

一开始我以为权限就这么简单,后来发现不对。
SELinux 和容器技术又增加了一层复杂性。
例如,Docker容器挂载卷时,权限必须一致,否则启动失败。
等等,还有一件事,运行脚本时必须使用 shebang,否则 chmod +x 将毫无用处。

建议使用getfacl定期检查权限链,不要等到出了问题才后悔。

Linux如何限制用户执行特定命令

老实说,在Linux中控制用户最直接的方法就是使用sudo+visudo。
这个东西可以精确控制谁应该使用哪个命令。
但这还不够,你还必须考虑其他技巧。

1 .使用 sudo 来玩权限控制 主要工具是Visudo。
该命令专门用于修改/etc/sudoers文件。
您可以使用此工具将其列入白名单、定义别名以及查看谁使用了哪个命令。
另外,它还具有语法检查功能,因此不会弄乱系统并使系统崩溃。

1 .打开白名单,以便可以使用指定的命令 例如,如果您想允许 devuser 在没有密码的情况下重新启动 nginx,请执行以下操作: 首先用 sudo visudo 打开配置文件 添加此行: devuserALL=(root)NOPASSWD:/usr/bin/systemctl restart nginx 这样设备用户就可以重启nginx了,但是其他命令还是无法使用。

2 下达禁令时要小心 您想禁用 rm 命令吗?这可以写成: devuserALL=(root)!/usr/bin/rm,ALL=(root)ALL 但要注意顺序。
拒绝的命令必须出现在接受的命令之前,否则将毫无用处。

2 其他技巧 1 .更改用户的shell环境 你可以在.bashrc中添加alias rm='echo rm命令被禁用且不正确',这样使用rm就变成了打字游戏。
但缺点是用户可以删除这个别名。

2 更改命令文件权限 要阻止某个命令直接运行,请使用 sudo chmod -x /usr/bin/some_command。
但请注意,这可能会影响其他用户。

3 使用受限外壳 将用户 shell 更改为 rbash,这样它甚至无法更改 PATH。
或者使用 rssh 并仅使用 SFTP。

4 苹果系统 SELinux或AppArmor可以更仔细地管理事情,但它们的配置很麻烦,通常只有较大的制造商使用。

3 防止用户操纵 1 . 路径绕过 在sudoers中使用完整路径,不要写rm。
受限制的 shell 也需要修复 PATH。

2 间接订单执行 寻找刽子手以及像他这样能够以各种方式执行命令的人,并判处他们死刑。

3 脚本绕过 不允许用户按照自己的意愿运行 Python,或者只允许他们运行您批准的脚本。

4 符号链接 sudo 将看到命令的实际路径,但可能会绕过文件权限。

4 多重保护 不要指望只用一种技巧就能完成它,尝试你发现的任何技巧。
关键是读取sudo日志和系统日志并处理发现的异常。
您应该经常检查权限配置以确保它没有过期。

5 为什么要限制订单? 主要原因是用户不敢用rm删除系统或者用kill停止服务。
另外,一些标准如ISO2 7 001 也有要求。
职责明确,问题易于排查。

简而言之,除非用户保持灵活性,尝试各种技巧,不要只依赖一种方法。