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
浙公网安备 33010602011771号