LINUX权限和归属

。_饼干妹妹 提交于 2020-03-10 05:27:27

权限和归属

基本权限
• 访问方式(权限)
– 读取:允许查看内容-read r
– 写入:允许修改内容-write w
– 可执行:允许运行和切换-execute x

对于文本文件:
r: cat head less
w: vim > >>
x: Shell脚本

• 权限适用对象(归属)
– 所有者:拥有此文件/目录的用户-user u
– 所属组:拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o

• 使用 ls -l 命令
– ls -ld 文件或目录…

以-开头:文本文件 以d开头:目录 以l开头:快捷方式

[root@server0 ~]# ls -ld  /etc/
[root@server0 ~]# ls -l   /etc/passwd
[root@server0 ~]# ls -l   /etc/shadow
[root@server0 ~]# ls -ld  /tmp

Permission denied :权限不足

• 使用 chmod 命令
– chmod [-R] 归属关系±=权限类别 文档…
[-R]:递归设置权限

[root@server0 ~]# mkdir /test01
[root@server0 ~]# ls -ld /test01

[root@server0 ~]# chmod u-w /test01
[root@server0 ~]# ls -ld /test01

[root@server0 ~]# chmod g+w /test01
[root@server0 ~]# ls -ld /test01

[root@server0 ~]# chmod o=--- /test01
[root@server0 ~]# ls -ld /test01
[root@server0 ~]# chmod u=rwx,g=rx,o=rx /test01
[root@server0 ~]# ls -ld /test01

[root@server0 ~]# chmod ugo=rwx /test01
[root@server0 ~]# ls -ld /test01

[root@server0 ~]# mkdir -p /opt/aa/bb/cc
[root@server0 ~]# ls -ld /opt/aa

[root@server0 ~]# chmod -R o=--- /opt/aa
[root@server0 ~]# ls -ld /opt/aa
[root@server0 ~]# ls -ld /opt/aa/bb/
[root@server0 ~]# ls -ld /opt/aa/bb/cc/

Linux判断用户具备的权限 匹配及停止
1.判断用户角色 顺序:所有者>所属组>其他人
2.查看相应角色权限位

目录的 r 权限:能够 ls 浏览此目录内容
目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
目录的 x 权限:能够 cd 切换到此目录

以root用户新建/testdir目录,在此目录下新建readme.txt文件
并进一步完成下列操作
1)使用户lisi能够在此目录下创建子目录 切换用户 su - lisi
chmod o+w /testdir/
2)使用户lisi不能够在此目录下创建子目录
chmod o-w /testdir/
3)使用户lisi能够修改readme.txt文件内容
chmod o+w /testdir/readme.txt
4)调整此目录的权限,使所有用户都不能cd进入此目录
chmod u-x,g-x,o-x /testdir/
5)为此目录及其下所有文档设置权限 rwxr-x—
chmod -R u=rwx,g=rx,o=— /testdir/
   -R:递归设置权限,目录下及目录下所有

• 使用 chown 命令
– chown [-R] 属主 文档…
– chown [-R] :属组 文档…
– chown [-R] 属主:属组 文档…

[root@server0 ~]# mkdir /test03
[root@server0 ~]# ls -ld /test03

[root@server0 ~]# groupadd tedu
[root@server0 ~]# chown lisi:tedu  /test03
[root@server0 ~]# ls -ld /test03

[root@server0 ~]# chown student /test03
[root@server0 ~]# ls -ld /test03

[root@server0 ~]# chown :root /test03
[root@server0 ~]# ls -ld /test03

利用root用户新建/test06目录,并进一步完成下列操作
1)将属主设为gelin01,属组设为xiaoxiao组

[root@server0 /]# useradd gelin01
[root@server0 /]# useradd gelin02
[root@server0 /]# groupadd xiaoxiao
[root@server0 /]# chown gelin01:xiaoxiao  /test06

2)使用户gelin01对此目录具有rwx权限
除属主与属组之外的人,对此目录无任何权限

[root@server0 /]# chmod o=--- /test06

3)使用户gelin02能进入、查看此目录内容

[root@server0 /]# gpasswd -a  gelin02  xiaoxiao

4)将gelin01加入xiaoxiao组, 将test06目录的权限设为rw-r-x—
再测试gelin01用户能否进入此目录

[root@server0 /]# gpasswd -a  gelin01  xiaoxiao
[root@server0 /]# chmod u=rw,g=rx /test06

附加权限(特殊权限)

Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设
置与父目录相同的属组
– 让子文档自动继承父目录的所属组身份

[root@server0 ~]# mkdir /test08
[root@server0 ~]# ls -ld /test08

[root@server0 ~]# chown :tedu /test08  #修改所属组
[root@server0 ~]# ls -ld /test08

[root@server0 ~]# mkdir /test08/abc01
[root@server0 ~]# ls -ld /test08/abc01

[root@server0 ~]# chmod g+s /test08     #设置Set GID权限
[root@server0 ~]# ls -ld /test08

[root@server0 ~]# mkdir /test08/abc02
[root@server0 ~]# ls -ld /test08/abc02
[root@server0 ~]# touch /test08/1.txt
[root@server0 ~]# ls -ld /test08/1.txt

  
       /test/2018-6-5.txt       
       /test/2018-6-6.txt    
       /test/2018-6-7.txt  
       /test/2018-6-8.txt  
       /test/2018-6-9.txt 
 
[root@server0 ~]# chmod  o=---  /test
[root@server0 ~]# groupadd caiwu
[root@server0 ~]# chown :caiwu  /test
[root@server0 ~]# chmod g+s  /test

Set UID
• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限

[root@server0 ~]# /usr/bin/mkdir  /opt/haha
[root@server0 ~]# ls /opt/
[root@server0 ~]# cp /usr/bin/mkdir /usr/bin/xixidir
[root@server0 ~]# ls /usr/bin/xixidir
[root@server0 ~]# /usr/bin/xixidir  /opt/abc
[root@server0 ~]# ls /opt/
[root@server0 ~]# chmod u+s  /usr/bin/xixidir 
[root@server0 ~]# ls -l  /usr/bin/xixidir
[root@server0 ~]# su - dc
[dc@server0 ~]$ /usr/bin/mkdir   dc01
[dc@server0 ~]$ ls -l 
[dc@server0 ~]$ /usr/bin/xixidir  dc02
[dc@server0 ~]$ ls -l
[dc@server0 ~]$ exit

Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入
权限(禁止操作别人的文档)

[root@server0 ~]# mkdir /home/public
[root@server0 ~]# chmod ugo=rwx /home/public
[root@server0 ~]# ls -ld /home/public

[root@server0 ~]# chmod o+t /home/public/
[root@server0 ~]# ls -ld /home/public

acl访问控制列表
• acl访问策略
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持

[root@server0 ~]# mkdir /test09
[root@server0 ~]# ls -ld /test09

[root@server0 ~]# chmod o=--- /test09
[root@server0 ~]# ls -ld /test09

[root@server0 ~]# su - lisi
[lisi@server0 ~]$ cd /test09
-bash: cd: /test09: Permission denied
[lisi@server0 ~]$ exit

[root@server0 ~]# setfacl -m u:lisi:rx /test09  #设置ACL
[root@server0 ~]# getfacl /test09             #查看ACL权限
[root@server0 ~]# su - lisi
[lisi@server0 ~]$ cd /test09
[lisi@server0 test09]$ pwd
[lisi@server0 test09]$ exit
[root@server0 ~]# 

使用 getfacl、setfacl 命令
– getfacl 文档…
– setfacl [-R] -m u:用户名:权限类别 文档…
– setfacl [-R] -m g:组名:权限类别 文档…

– setfacl [-R] -x u:组名 文档… #删除指定ACL策略
– setfacl [-R] -b 文档… #删除所有ACL策略

[root@server0 ~]# mkdir /test11
[root@server0 ~]# setfacl -m u:lisi:rwx  /test11
[root@server0 ~]# setfacl -m u:dc:rx  /test11
[root@server0 ~]# setfacl -m u:zhangsan:rwx  /test11
[root@server0 ~]# setfacl -m u:gelin01:rwx  /test11
setfacl: Option -m: 无效的参数 near character 3
[root@server0 ~]# id gelin01
id: gelin01: no such user
[root@server0 ~]# useradd gelin01
[root@server0 ~]# setfacl -m u:gelin01:rwx /test11
[root@server0 ~]# getfacl /test11
[root@server0 ~]# setfacl -x  u:dc  /test11  #删除指定ACL
[root@server0 ~]# getfacl /test11

[root@server0 ~]# setfacl -b /test11   #删除所有ACL
[root@server0 ~]# getfacl /test11
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!