linux[第四部分:权限管理,安全至上]

[第四部分:权限管理,安全至上]

41.chmod:修改文件或目录的权限

权限只对普通用户有效,对root无效。

格式: chmod 权限 [选项] 文件

选项:-R :递归设置,将目录内的文件全部设置成一样的权限

#查看权限
ls -l
-rw-r--r--  1 root root   65 7月  10 15:53 1.txt

第一个字符:文件类型:-普通文件,d目录文件,c字符串文件,b块文件,l链接文件
2~10字符:属主 属组 其他用户 (3个一组)

#stat 查看用户权限
stat 1.txt
权限 数字 含义
--- 0 没权限
--x 1 执行权限
-w- 2 写权限
-wx 3 写执行权限
r-- 4 读权限
r-x 5 读执行权限
rw- 6 读写权限
rwx 7 读写执行权限
t 防止其他用户删除非自己的文件

用法:chmod [选项] 权限 文件

  • 修改文件或目录的权限,适用于设置读取、写入、执行权限。

有数字表示法

  • 字母修改法

  • u(user) g(group) o(other) a(all)

  • chmod +x a.sh

  • chmod u=rwx,g=rx,o=r a.sh

    字母表示法

  • 数字修改法

  • chmod 666 a.sh

  • 0000 ~ 7777

  • 特殊权限:1--t 2--sgid 3--同时加t和sgit 4--suid

常用操作

#常用权限组合:
777:共享目录
666:共享文件
755:允许其他用户读的目录
644:允许其他用户读的文件
700:自己的私有目录
600:自己的私有文件
711:可执行文件
#默认权限:
umask #修改默认权限
0022
目录=0777-0022=0755
文件=0666-0022=0644
--------------------
# 1. 将文件设为所有人可读(r),所有者可写(w),所有人可执行(x)
chmod 755 script.sh

# 2. 只允许所有者读写,其他人无权限
chmod 600 secret.txt

# 3. 为目录添加执行权限(递归应用到子目录和文件)
chmod -R +x /path/to/directory

# 4. 使用符号模式添加权限:为文件添加所有用户的执行权限
chmod +x script.sh

# 5. 移除权限:移除文件的写权限
chmod -w readonly.txt

# 6. 为用户组添加写权限
chmod g+w shared_file.txt

# 7. 设置文件的详细权限:为不同用户分配精确权限
chmod u=rwx,g=rx,o= script.sh

# 7说明:
# u=rwx:文件所有者 (u) 有读 (r)、写 (w)、执行 (x) 权限。
# g=rx:文件所在的用户组 (g) 有读 (r)、执行 (x) 权限,没有写权限。
# o=:其他用户 (o) 无任何权限。
# 适用场景:
# 1. 让文件所有者可以完全操作文件。
# 2. 组用户只能查看和运行文件。
# 3. 防止其他用户访问文件内容。

小总结:

  • 数字模式: 快速设置权限,比如 chmod 755
  • 符号模式: 灵活添加或移除权限,比如 chmod +x
  • 递归操作:-R 修改目录及其子目录权限。
  • 权限拆解:4,写 2,执行 1,组合成总权限。

chmod 是管理文件权限的必备工具,轻松保护文件安全!

特殊权限

  • SUID:rwsrwxrwx chmod u+s filename

    • 让其他用户使用拥有SUID权限命令时,可以使用所有者的权限。

    • passwd 默认拥有SUID权限。(普通用户修改自己密码时,要有root权限)

    • # 1. 符号模式赋予 SGID 权限(SGID 让执行用户继承文件所属组身份,locate 需访问组可读写的数据库 )
      [root@localhost ~]# chmod g+s /usr/bin/locate  
      # 2. 查看权限,验证 SGID(权限位会出现 `s` 在组执行位,如 `-rwxr-sr-x` )
      [root@localhost ~]# ls -l /usr/bin/locate  
      -rwxr-sr-x. 1 root slocate 42184 8月  12 2022 /usr/bin/locate  
      # SGID 权限数字为 2(SUID 是 4,SGID 是 2,粘滞位是 1,可组合 )
      # 3. 数字模式赋予 SGID 权限(2 + 基础权限 755 → 2755 )
      [root@localhost ~]# chmod 2755 /usr/bin/locate  
      # 4. 再次查看权限,确认数字模式生效
      [root@localhost ~]# ls -l /usr/bin/locate  
      -rwxr-sr-x. 1 root slocate 42184 8月  12 2022 /usr/bin/locate  
      # s:原来有x执行权限,才会变成s为生效。否则为s:不生效
      
  • SGID:所有组的x变成s,其他人以组权限执行命令。

  • chmod g+s filename
    # SGID 权限位
    chmod 2755 filename
    # SUID+SGID
    chmod 6755 filename
    chmod U+s,u+s filename
    
  • stickybit:粘滞位

  • # 给共享目录设置为粘滞位,作用是只能删除自己的文件
    chmod o+t dir
    chmod 777 dir
    

    隐藏权限:

    可以限制root的权限操作。保护重要文件,保险作用。

    lsattr 查看隐藏权限
    chattr 修改隐藏权限
    A:文件或目录的 atime 不可被修改
    4 S:硬盘 I/O 同步选项,功能类似 sync。Linux 默认为异步 I/O。
    5 a:只能向文件中添加数据,而不能删除数据。
    6 d:文件不能成为 dump 程序的备份目标。
    7 i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。锁定文件。
    +:添加权限
    -:删除权限
    =:赋予权限
    # buff:写入缓存,存放在内存中等待写入的缓存。sync命令可以写入磁盘。
    # cache:读出缓存,从磁盘中预先加载的数据,等待被程序运行。
    
    

    ACL权限(了解):

  • 三类用户:user所有者,group同组人员,other其他人。

  • ACL(访问控制列表):单独赋予某个用户对文件的rwx相关权限。

# 获取文件的acl权限
getfacl filename
#该用户设置acl权限
setfacl -m u:tom:rw- filename
#删除用户acl权限
setfacl -x u:透明filename
#删除文件所有acl权限
setfacl -b filename
#对目录位置设置acl权限
setfacl -m d:u:tom:rwx:dir

42.chown:修改文件所有者

  • 修改文件属主、属组
    chown 属主.属组 文件
    (作用:将指定文件的所有者改为 “属主” 、所属组改为 “属组” ,比如 chown user1.group1 test.txt ,把 test.txt 的所有者设为 user1 ,所属组设为 group1
  • 递归修改目录及内部文件的属主、属组
    chown 属主.属组 -R 目录
    (作用:对指定目录进行递归操作,目录本身及目录内所有文件、子目录的所有者和所属组,都会被修改为设定的 “属主”“属组” ,例如 chown -R user2.group2 /data/data 目录及内部内容的权限归属会批量变更 )

常用操作:

创建用户
useradd tom :创建名为 tom 的用户
useradd zj :创建名为 zj 的用户
给用户设置密码
passwd tom :为 tom 用户设置密码(执行后需按提示输入密码 )
passwd zj :为 zj 用户设置密码(执行后需按提示输入密码 )
切换用户
su tom :在当前目录切换到该用户(tom ),环境变量等保持原状态
su - tom :在切换用户时,自动 cd 用户家目录,加载用户配置(针对 tom )
su root :切换到 root 用户(环境等保持原状态,若当前非 root ,执行需输入 root 密码 )
su - root :切换到 root 用户,自动进入 root 家目录、加载配置
su - :效果同 su - root ,简洁写法切换到 root
补充说明
# root用户切换到其他用户不需要密码 :说明 root 身份切换普通用户时,无需输入目标用户密码的特性
# root用户切换到其他用户不需要密码
# root可以修改所有用户的密码
# 普通用户只能修改自己的密码
# 普通用户切换到其他用户(包括root)都需要密码
# (空行,原第18行无有效内容 )
# 退出当前用户,返回之前的用户或退出登录
exit (执行退出当前用户环境操作的命令 )
#chmod: 修改文件的权限

#chown:修改文件的所有者(属主)
#root才能修改其他用户文件的属主和属组
chown zj -R /home/zj #修改文件的属主
chown zj.zj -R /home/zj #同时修改文件的属主和属组

#chgrp:只能修改文件属组

43.chgrp:修改文件属组

组(group):默认组、附加组。可以把多个用户添加到同一个小组当中,用于批量权限管理。

# chgrp 修改属组
chgrp root filename
#chmod可以改组权限
chmod g=rw filename

44.sudo:提权,让普通用户临时使用root权限执行命令

#使用root身份修改/etc/sudoers文件,将普通用户添加到该文件并进行设置。
vim /etc/sudoers
#在第101行
zj   ALL=(ALL) ALL

#切换普通用户
su - zj

#使用sudo执行命令
sudo reboot
#p
sudo passwd
posted @ 2025-07-15 08:41  秀妍泽  阅读(17)  评论(0)    收藏  举报