Linux权限管理——umask,sudo,粘滞位

本文介绍了umask在文件和目录权限设置中的作用,sudo如何提供受控的管理权限,以及粘滞位如何确保公共目录安全。讲解了如何配置umask、添加sudo用户和设置粘滞位以控制文件操作权限。

目录

1.umask

2.sudo

3.粘滞位


1.umask

为什么一开始创建了一个文件或目录后默认权限是这个样子呢?

 首先我们引入一个umask的概念:

umask被叫做权限掩码,对于我们创建的一个目录,它的起始权限是从777(8进制),对于我们创建的一个文件,它的起始权限是从666(8进制),但是当我们以起始权限为出发点去看待创建的文件(目录)的权限时会发现是存在差异的,产生这样的情况原因是因为:

我们创建了一个内容后,显示的权限其实是最终权限,

而 最终权限 = 起始权限& ~umask,我们举一个例子:

补充:(关于更改umask的值)

umask 4位的8进制
(这4位的8进制是你想设置的umask的值)

可是为什么要有umask呢?

通过自己去设置一个合理的 umask值,来确保你创建的文件(目录)具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限,可以更好的保护创建的文件(目录)的安全

2.sudo

sudo的作用是什么?

sudo 命令提供了一种机制,它可以在不用分享 root 用户的密码的前提下,为信任的用户提供系统的管理权限

如何把一个用户给添加到信任列表?

默认已经安装了sudo

第一步:

假如普通用户在命令行使用了sudo命令后弹出了

等提示,说明这个HM用户没有被添加到信任列表

此时还可以在命令行输入

sudo -l

它可以查看哪些用户可以使用sudo权限

第二步:

 这是在/etc路径下的sudoers文件,此时这个文件,假如此时你通过

vim /etc/sudoers

 去打开,然后想去编辑里面的内容,你要给sudoers给赋予写权限,即:
 

chmod u+w /etc/sudoers

此时才可以去编辑其中的内容

不修改权限,直接使用

visudo /etc/sudoers

去打开,此时进入后就可以直接去编辑内容

第三步:

当把sudoers用vim编辑器打开后

按照上面的格式去输入你想添加进信任列表的用户,然后保存退出

此时你想添加进信任列表的用户已经被添加进信任列表了,此时就可以在这个Chen的用户下去使用sudo这个命令了

3.粘滞位

假如other对应的u(文件所有者的权限)中没有w(写)权限,此时当你以文件所有者的身份进入这个other目录后想去删除这个other下的文件权限是不够的

在这个other的目录下以目录的所有者去访问这个文件的内容,此时我去删除这个other目录下其他用户创建的文件,此时是可以删除的,因为一个文件可以被删除根本不是这个文件本身的属性,而是与这个文件所在的目录该用户是否具有写权限,即删除一个文件是由这个文件所属的这个目录说的算的

要知道在实际的工作中我们会面临一个场景:
假如我们和其他的用户要在同一个目录下去完成某个项目,这个公共的目录对所有人都具有rwx权限,如果此时我不想让别人看我写的文件的内容此时是可以设置权限的,但是假如别人想删除我写的文件时,我是无法阻止别人去删除的,因为删除一个文件是由这个文件所属的目录说的算的,假如我想在保证所有人对这个公共目录都具有rwx权限的同时又可以使这个公共目录下的文件无法被非文件的拥有者删除,此时就可以给这个目录添加粘滞位

(这个other此时就是一个公共的目录,对所有人都具有rwx权限)

通过root用户(普通用户)去使用命令

chmod +t 目录名

此时就给这个目录添加了粘滞位。

当一个目录被设置为“粘滞位”,则该目录下的文件只能由:
一   超级管理员删除

二   该目录的所有者删除

三   该文件的所有者删除 

注意:

1.粘滞位只可以给目录设置

2.想删除粘滞位时只能是谁添加的谁才可以删除,对于root用户可以无视这一点,root用户可以直接去删除而不用管到底是谁设置的粘滞位(对于这种多人工作的公共目录,一般由root用户去设置粘滞位)

Linux中设置文件或目录的权限主要通过 `chmod`(修改权限)和 `chown`(修改所有者/组)命令实现。以下是详细指南: --- ### **一、权限基础概念** 1. **权限类型**: - **用户(Owner)**:文件所有者。 - **组(Group)**:文件所属组。 - **其他(Others)**:其他用户。 2. **权限符号**: - `r`(读,4)、`w`(写,2)、`x`(执行,1)。 - 特殊权限:`setuid`(4)、`setgid`(2)、`sticky bit`(1)。 --- ### **二、常用命令** #### **1. 修改权限:`chmod`** - **数字模式**(绝对模式): ```bash chmod 755 filename # 所有者:rwx,组和其他:r-x chmod 644 filename # 所有者:rw-,组和其他:r-- ``` - **符号模式**(相对模式): ```bash chmod u+x filename # 给所有者添加执行权限 chmod go-w filename # 移除组和其他用户的写权限 chmod a=rw filename # 所有用户设为读写权限 ``` #### **2. 修改所有者/组:`chown`** ```bash sudo chown user:group filename # 修改所有者和组 sudo chown user filename # 仅修改所有者 sudo chown :group filename # 仅修改组 ``` #### **3. 修改组:`chgrp`** ```bash sudo chgrp groupname filename # 仅修改组 ``` --- ### **三、权限场景示例** #### **1. Web服务器文件权限** ```bash # 设置Web目录权限(如Nginx的www-data用户) sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html # 目录755,文件644 ``` #### **2. 用户目录隔离** ```bash # 用户home目录仅允许所有者访问 chmod 700 /home/username ``` #### **3. 共享目录** ```bash # 组内用户可读写,其他用户无权限 sudo mkdir /shared sudo chown :developers /shared sudo chmod 770 /shared ``` #### **4. 可执行脚本** ```bash chmod +x script.sh # 添加执行权限 ``` #### **5. 敏感文件保护** ```bash chmod 600 .env # 仅所有者可读写 ``` --- ### **四、高级权限** #### **1. 设置粘滞(Sticky Bit)** - 目录权限:仅文件所有者可删除自己的文件(如`/tmp`)。 ```bash chmod +t /tmp chmod 1777 /tmp # 数字模式(1表示粘滞) ``` #### **2. SetGID** - 目录权限:新文件继承目录的组。 ```bash chmod g+s /shared chmod 2775 /shared # 数字模式(2表示SetGID) ``` #### **3. SetUID** - 文件权限:以所有者身份执行(慎用)。 ```bash chmod u+s /usr/bin/sudo chmod 4755 /usr/bin/sudo # 数字模式(4表示SetUID) ``` --- ### **五、权限查看与调试** #### **1. 查看权限** ```bash ls -l filename # 显示详细权限 stat filename # 显示完整权限和属性 ``` #### **2. 权限故障排查** - **403错误**:检查目录是否有`x`权限(`ls -ld /path`)。 - **文件无法写入**:检查父目录的`w`权限。 - **SELinux问题**: ```bash ls -Z filename # 查看安全上下文 sudo restorecon -v filename # 恢复默认上下文 ``` --- ### **六、默认权限控制** #### **1. `umask`** - 设置新建文件的默认权限掩码(如`umask 022`表示新建文件权限为`644`)。 ```bash umask # 查看当前值 umask 027 # 临时设置(组无写权限,其他用户无权限) ``` #### **2. ACL(精细权限控制)** ```bash sudo apt install acl # Debian/Ubuntu sudo setfacl -m u:username:rwx /path # 给用户添加ACL权限 sudo getfacl /path # 查看ACL权限 ``` --- ### **七、安全建议** 1. **最小权限原则**:避免使用`777`。 2. **禁用危险权限**:慎用`SetUID`和`SetGID`。 3. **定期审计**: ```bash find / -type d -perm -002 -exec ls -ld {} \; # 查找世界可写目录 ``` 4. **使用`sudo`**:普通用户操作需提权时,通过`sudo`而非直接赋予`root`权限。 --- ### **八、完整示例流程** ```bash # 1. 创建目录并设置权限 sudo mkdir /opt/myapp sudo chown user:developers /opt/myapp sudo chmod 775 /opt/myapp # 2. 设置ACL允许特定用户访问 sudo setfacl -m u:alice:rwx /opt/myapp # 3. 验证权限 ls -ld /opt/myapp getfacl /opt/myapp ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值