权限的作用:通过不同的权限的添加实现对同一个文件或目录不同的用户有着不同的操作权限
一般来说任何用户都有着可读、可写、可执行的访问权限,分别是r、w、x 用数字表示为4、2、1
归属:对于一个目录或文件分别拥有这个文件或目录的拥有者(u)、所属组(g)、和其他用户(o)的归属关系,统称用a表示
默认创建文件的最大权限为:644 最大为666
默认创建目录的组大权限为:755 最大为777
权限位 硬链接数 属主 属组 大小 最后修改时间 文件/目录名称
案例:
公司技术部有一台Linux开发服务器,根据部门内项目组的构成情况,需要建立相应的用户账号,并对开发数据相关目录配置访问权限。
1.文件夹/tech/nsdhome、/tech/jsdhome,分别归属于nsd组、jsd组,禁止其他用户进入。
2.创建部门公共目录/public,技术部的所有员工(tech组)对其拥有可读、可写、可执行,其他用户禁止访问此目录。
3、为了防止员工对公共目录的恶意删除破坏,对公共目录设置t位权限,该目录下的文件或子目录只有root与文件所有者拥有能够删除权限,其他人只有可读的权限。(创建用户haha、xixi添加到tech组)
4、ACL权限设置创建账户:mike john kaka 创建文件:/data/file1.txt
mike对文件有读写权限,john只有读权限。其他用户没有任何权限,kaka具有与john相同权限,创建lily,lily对file1.txt具有读执行权限,其他用户没有任何权限。
1、
[[email protected] ~]# mkdir -p /tech/{nsdhome,jsdhome} ##创建目录
[[email protected] ~]# ls /tech/
jsdhome nsdhome
[[email protected] ~]# groupadd nsd ##创建用户组
[[email protected] ~]# groupadd jsd
[[email protected] ~]# ll /tech/
总用量 8
drwxr-xr-x. 2 root root 4096 11月 8 02:23 jsdhome
drwxr-xr-x. 2 root root 4096 11月 8 02:23 nsdhome
[[email protected] ~]# chown :nsd /tech/nsdhome/ ##将目录nsdhome的所属组改为nsd
[[email protected] ~]# chown :jsd /tech/jsdhome/
[[email protected] ~]# ll /tech/
总用量 8
drwxr-xr-x. 2 root jsd 4096 11月 8 02:23 jsdhome
drwxr-xr-x. 2 root nsd 4096 11月 8 02:23 nsdhome
[[email protected] ~]# chmod g+w,o=- /tech/{jsdhome,nsdhome} ##将目录jsdhome、nsdhome的权限修改为770
[[email protected] ~]# ll /tech/
总用量 8
drwxrwx---. 2 root jsd 4096 11月 8 02:23 jsdhome
drwxrwx---. 2 root nsd 4096 11月 8 02:23 nsdhome
2、
[[email protected] ~]# mkdir /public
[[email protected] ~]# ls -ld /public/
drwxr-xr-x. 2 root root 4096 11月 8 02:30 /public/
[[email protected] ~]# groupadd tech
[[email protected] ~]# chown :tech /public
[[email protected] ~]# ls -ld /public/
drwxr-xr-x. 2 root tech 4096 11月 8 02:30 /public/
[[email protected] ~]# chmod g+w,o=- /public
[[email protected] ~]# ls -ld /public/
drwxrwx---. 2 root tech 4096 11月 8 02:30 /public/
3 、
[[email protected] ~]# useradd -G tech haha ##创建用户的同时给用户添加附加组(还可用usermod -G修改用户的附加组)
[[email protected] ~]# useradd -G tech xixi
[[email protected] ~]# id haha ##显示用户haha真实和有效的UID和GID
uid=500(haha) gid=503(haha) 组=503(haha),502(tech)
[[email protected] ~]# id xixi
uid=501(xixi) gid=504(xixi) 组=504(xixi),502(tech)
[[email protected] ~]# passwd haha ##修改密码
更改用户 haha 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化 ##一般来说用户的密码应满足复杂性即数字、字母大小写、特殊符号其中的三种
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[[email protected] ~]# passwd xixi
更改用户 xixi 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[[email protected] ~]# ls -ld /public
drwxrwx---. 2 root tech 4096 11月 8 02:30 /public
[[email protected] ~]# su - haha ##通过su命令登陆haha用户
[[email protected] ~]$ cd /public/
[[email protected] public]$ ls
[[email protected] public]$ touch haha.txt ##进入公共文件夹创建一个文件
[[email protected] public]$ ls
haha.txt
[[email protected] public]$ exit
logout
[[email protected] ~]# su - xixi ##登陆xixi用户
[[email protected] ~]$ cd /public/
[[email protected] public]$ ls
haha.txt
[[email protected] public]$ rm -rf haha.txt/ ##删除其他用户在公共文件夹所创建的文件
[[email protected] public]$ ls
[[email protected] public]$ exit
[[email protected] ~]# su - haha
[[email protected] ~]$ cd /public/
[[email protected] public]$ ls ##再次登陆haha用户,查看自己在公共文件夹所创建的文件
[[email protected] public]$ exit
logout
[[email protected] ~]# chmod o+t /public ##通过给其他用户权限添加粘贴位的方式,禁止他人修改或删除非本人在公共文件夹所创建的文件或目录
[[email protected] ~]# ls -ld /public
drwxrwx--T. 2 root tech 4096 11月 8 02:56 /public
[[email protected] ~]# su - haha
[[email protected] ~]$ cd /public/
[[email protected] public]$ ls
[[email protected] public]$ vim haha.txt ##重新登录haha用户编辑一个文件
[[email protected] public]$ cat haha.txt
hahahahahahahahaha
[[email protected] public]$ exit
logout
[[email protected] ~]# su - xixi
[[email protected] ~]$ cd /public/
[[email protected] public]$ ls
haha.txt
[[email protected] public]$ rm -rf haha.txt ##登陆xixi用户,在公共文件夹删除其他人创建的文件
rm: 无法删除"haha.txt": 不允许的操作 ##粘贴位生效!非本人无法修改在公共文件夹下的文件或目录
[[email protected] public]$ cat haha.txt ##只有查看的权限
hahahahahahahahaha
4、
[[email protected] ~]# useradd mike
[[email protected] ~]# useradd john
[[email protected] ~]# useradd kaka ##创建用户
[[email protected] ~]# mkdir /data
[[email protected] ~]# vim /data/fil1.txt
[[email protected] ~]# cat /data/fil1.txt ##编辑一个文件放在/data下,内容如下
123456789
[[email protected] ~]# ls -ld /data/fil1.txt ##查看文件的权限位
-rw-r--r--. 1 root root 10 11月 8 03:10 /data/fil1.txt
[[email protected] ~]# chown mike:john /data/fil1.txt ##将fill.txt文件的拥有者改为mike,所属组改为john
[[email protected] ~]# ls -ld /data/fil1.txt ##再次查看文件的权限位
-rw-r--r--. 1 mike john 10 11月 8 03:10 /data/fil1.txt
[[email protected] ~]# chmod u=rw,g=r,o=- /data/fil1.txt ##将文件的拥有者权限修改为可读、可写,所属组修改为只读,其他用户没有任何权限
[[email protected] ~]# ls -ld /data/fil1.txt
-rw-r-----. 1 mike john 10 11月 8 03:10 /data/fil1.txt
[[email protected] ~]# gpasswd -M kaka john ##通过组成员管理(gpasswd -M)将用户添加到组
[[email protected] ~]# id kaka
uid=504(kaka) gid=507(kaka) 组=507(kaka),506(john)
[[email protected] ~]# setfacl -m u:lily:rx /data/fil1.txt ##给文件fil1.txt定义一条关于用户Lily可读、可写的ACL的策略
[[email protected] ~]# getfacl /data/fil1.txt ##查看定义的ACL策略
getfacl: Removing leading ‘/‘ from absolute path names
# file: data/fil1.txt ##绝对文件来源路径
# owner: mike ##拥有者
# group: john ##所有组
user::rw- ##所有者的权限
user:lily:r-x ##通过ACL添加的权限
group::r-- ##所有组的权限
mask::r-x
other::--- ##其他用户的权限