文件权限
1、权限修改 chmod
chmod
命令(change modify)
使用该命令:所有用户者
语法:
chmod [ugoa...] [[+-=][rwx]...] [,...]
- u (user)表示该文件的拥有者,g (group)表示与该文件的拥有者属于同一个群体者,o (other)表示其他以外的人,a (all)表示这三者皆是。
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
- 最后参数为需要修改权限的对象
其他参数说明:
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f : 若该文件权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
- –help : 显示辅助说明
- –version : 显示版本
示例:
-r–r--r-- file.txt
chmod u+w file.txt
// 给file1.txt的属主添加w写权限 -rw-r--r-- file.txt
chmod go+w,u-w file.txt
// 给file.txt的属主删除w写权限,属组和其他用户添加w写权限 -r--rw-rw- file.txt
-r–r--rw- file1.txt
-r–r--rw- file2.txt
chmod ug+w,o-w file1.txt file2.txt
// 给file1.txt和file2.txt的属主和属组添加w写权限,给其他用户删除w写权限
// -rw-rw-r-- file1.txt
// -rw-rw-r-- file2.txt
-rw-rw-rw- file.txt
chmod a+x,a-w file.txt
// 给file.txt的属主,属组,其他用户都增加执行权限,删除写权限 -r-xr-xr-x file.txt
…
chmod 777
# 将文件的属主,属组,陌生的权限全部改成可读可写可执行
2、修改属主属组 chown
chown
命令(change own)
使用该命令:root
语法:
chown [-cfhvR] [--help] [--version] user[:group] file...
参数:
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者组(group)
- -c : 显示更改的部分的信息
- -f : 忽略错误信息
- -h :修复符号链接
- -v : 显示详细的处理信息
- -R : 处理指定目录以及其子目录下的所有文件
- –help : 显示辅助说明
- –version : 显示版本
示例:
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
将目前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:
chown -R runoob:runoobgroup *
将文件 file1.txt 的拥有者设为 runoob:
chown runoob file1.txt
3、修改属组 chgrp
chmod 命令可修改属主和属组,chgrp 命令只能修改属组
[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chgrp -v bin log2012.log
“log2012.log” 的所属组已更改为 bin
[root@localhost test]# ll
---xrw-r-- 1 root bin 302108 11-13 06:03 log2012.log
4、特殊权限SUID、SGID、Sticky
SUID(set user ID):如果设置了suid,那么其他用户执行该文件时,会以属主的身份执行
SGID(set group ID):如果设置了sgid,那么其他用户执行该文件时,会以属组的身份执行
Sticky:如果设置了sticky,那么其他用户执行该文件时,会议陌生用户身份执行
设置特殊权限
设置SUID:执行权限以s表示
chmod u+s file.txt
// 此时file.txt就设置了SUID权限 -rwsrwxrwx file.txt
设置SGID:执行权限以s表示
chmod g+s file.txt
// 此时file.txt就设置了SUID权限 -rwxrwsrwx file.txt
设置Sticky:执行权限以t表示
chmod o+s file.txt
// 此时file.txt就设置了SUID权限 -rwxrwxrwt file.txt
特殊权限数字表示
5、umask
umask
命令指定在建立文件时预设的权限掩码。将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
通俗的讲,就是创建新文件时,生成的默认权限。特权位不参与减法运算,特权位设置什么特权就是什么。后3位由最高权限减去权限掩码得到默认权限。
最高权限为7777
第一个7:特权位,有SUID、SGID、Sticky
第二个7:拥有者权限,rwx
第三个7:所在群组权限,rwx
第四个7:默认用户权限,rwx
示例1:
设置权限掩码
umask 0002
创建一个目录
mkdir test
查询权限
ls -l
drwxrwxr-x ... test/
示例2:
设置权限掩码
umask 5002
创建一个目录
mkdir test
查询权限
ls -l
drwsrwxr-t ... test/
案例:用户创建 分组 设置权限
情景模拟:
假设某一个开发团队,有user和admin这两个用户,这两个用户创建的文件全部存放在/var/data目录下。设这个目录的属组为public。如果设置这个目录,使得user和admin创建的文件可以相互访问和修改,并且不允许其他用户的访问,且user不能删除admin用户创建的文件,admin不能删除user用户创建的文件?写出详细的步骤和并操作验证截图。
-
root用户下,创建两个用户 user 和 admin
useradd user useradd admin // 查看用户是否查看成功 cat /etc/passwd // 补充:删除用户 userdel user userdel admin // 补充:添加用户 useradd -g public admin // 在有public组的情况下,可以在创建用户时指定所属组
-
root用户下,创建 public 组群
groupadd public // 补充:删除组 groupdel public
-
root用户下,将两个用户归到public组中
usermod -g public user usermod -g public admin
-
root用户下,查看用户与用户组的情况
groups user admin // 展示结果 user : public admin : public
此时,已成功将两个用户归为一组
-
root用户下,创建 / data目录
mkdir /data
-
root用户下,查看data目录的权限情况
cd / ls -l
-
root用户下,将该目录的属组改为public
chgrp public data
-
root用户下,如果设置这个目录,使得user和admin创建的文件可以相互访问和修改,并且不允许其他用户的访问
chmod g+w,o-rx data
-
user不能删除admin用户创建的文件,admin不能删除user用户创建的文件
user用户创建一个user目录,设置权限;admin用户创建admin目录,设置权限
// user 用户下 mkdir user chmod o-rx user // admin 用户下 mkdir admin chmod o-rx admin
-
在user目录下创建了a.txt,在admin目录下创建了b.txt。验证,user用户不能删除admin用户的文件,admin用户不能删除user用户的文件