linux权限简单应用级用户属性改变

linux下的权限分为一般权限属性和特殊属性
一、一般属性:rwx分别为读写执行
1.在文件时候rwx分别是读取、写入/修改/删除、执行操作(多为脚本)
2.在目录的时候rwx分别是读取、目录下的文件/目录创建/删除/修改、进入目录
修改文件或者目录的权限是chmod命令:命令用法为
chmod u+rwx g+rwx o+rwx 文件/目录
chmod a+rwx 文件/目录(chmod 777 文件/目录)
u表示属住、g表示属组、o表示除去属主与属组的其他用户、a代表所有用户,rwx的另一种简易表达式是数字421,权限代表的421就是r(4)w(2)x(1)、以上面的u+rwx可以写成u+7,但是命令里面就直接写成7数字就可以了,比如:chmod 777 文件/目录 表示这个文件u、g、o都是7权限,也就是rwx。如果是chmod 775 文件/目录就是表示文件/目录权限是u+rwx g+rwx o+rx

注:目录中能否删除、修改文件看改目录的权限,与目录下的文件的权限无关。


二、修改用户属性和文件属性
1.增加、删除用户
useradd -m user1 增加用户(带创建宿主目录)

userdel -r user1 删除用户(同时删除宿主目录)


2.创建用户组
groupadd users 创建users组

groupdel users 删除users组


3.修改用户的组
usermod -g users user1 将用户user1的组改为users组
usermod -A users user1 将用户额外添加到组users

usermod -R users user1 将用户从users组删除(可能user1同时属于users和aaa组)


4.修改文件/目录的属主、属组
chown file1 user1 把file1文件的属主改为user1用户
chown user1:users file1 把file1文件的属主和属组改为user1和users
chown -R user1:users data 递归,把data目录及其下级目录和文件的属主、属组改为user1和users
chgrp users file1 把file1文件的属组改为users
 
三、linux的特殊属性
1.suid  用户类(只针对于用户),权限的uid是s
在一个可执行文件上应用了suid权限,那么其他用户执行该文件的时候将临时得到root的权限,创建和修改的文件也是属于root的,典型文件:/etc/passwd、/etc/shawod,当用户修改自己的密码时候暂时得到root权限去修改/etc/passwd、/etc/shawod文件
s代表有x权限,S代表没有x权限(s权限将挡住x权限,所以以大小写区别是否有x权限)
exp: useradd user1 -p 123456     创建一个用户user1,密码123456
      su - user1      切换到用户user1
      cd /
      mkdir /user1 这会应该没有权限去创建
      logout       切换回root
      chmod u+s /bin/mkdir   改变/bin/mkdir脚本为其他用户执行的时候临时以root身份执行
      ls -ld /bin/mkdir      可看到-rws-r-xr-x root root 说明已经为文件添加了suid权限
      su - user1
      cd /
      mkdir /user1           创建的时候会临时变为root身份
      ls -ld /user1          查看user1的属主和属组就可以验证,都是root

2.gid   用户组类
如果在一个目录上用了sgid,那么任何人在该目录中创建的文件/目录都会自动继承该目录本身的组的权限。通俗讲就是启用了gid的目录的组为user1,那么任何用户在目录中创建的文件/目录都继承了该目录的属组所拥有的权限,用于多人同项目场景。
exp:三个用户同时做一个项目,这个项目有一个专门的目录存放项目的资料,要求这些资料三个用户都有rwx的权限。但是管理员又不能一个一个的更改三个用户在该项目目录下创建的文件。加入项目目录叫project,三个用户分别为it1、it2、it3
首先:mkdir /project
      groupadd it
      chgrp it /project   将project目录的属组改为it组
      chmod 775 /project  修改属组为rwx权限
      useradd it1-3 -g it 创建it1-3用户加入同一个组it
      chmod g+s /project  给project目录加上gid权限
      su - it1
      cd /project
      touch it1           创建it1文件
      su - it2
      cd /project
      echo hello world >> it1
      cat it1             可以看到hello world的字样证明了,目录中的it1创建的文件it2也有权限
 
3.sticky  其他用户类 
如果在一个目录上用了sticky权限,简称t权限,那么只有root和文件的拥有者才能删除该目录下的(自己的)文件,哪怕这个目录是chmod 777的权限,在加了t权限后都只能删除用户自创建的文件,而不能产出其他用户创建的文件。
典型案例:QQ群共享
exp:mkdir /sticky
     chmod 777 sticky
     chmod o+t sticky
 
     useradd user1
     useradd user2
 
     su -user1
     cd /sticky
     touch user1
 
     su - user2
     cd /sticky
     touch user2
    
     su - user1
     cd /sticky
     rm -rf user2         系统提示没有权限
     rm -rf user1         可以删除自己的
user2同样只能删除user2不能删除user1文件
sticky的快速权限设置法:chmod 1777 目录(1代表sticky,是特殊权限的位置)
 
四、文件系统的ACL
getfacle file1  查看file1的文件acl
setfacl -m u:user1:rwx /file1   在不改变文件/目录属性的前提下让user1用户有rwx的权限,即使这个文件/目录的权限是不开放的
exp:touch file1   此文件是root创建,其他用户无权限读取
     setfacl -m u:user1:rwx /file1 现在user1可以对文件进行读取了(开后门)
setfacle -m u:user1:rwx /data  data是目录则user1对于这个目录有了rwx的权限,但在/data目录下的文件和目录user1并没有rwx的权限,如果加上d(default)参数就有了递归的权限
setfacle -d u:user1:rwx /data
以上两条命令后,user1用户对于/data目录及其子目录、文件都拥有了rwx的权限
验证方法:ls -ld /data 有acl的文件权限的末尾会有+的字样:drwxr-xr-x+ root root
 
五、linux的文件隐藏权限
1.chattr 命令设置文件的隐藏属性
主要用于系统文件的安全场景
chattr +a file1 这个文件file1将只能增加数据而不能删除数据,去掉a属性为-a
chattr +i file1 这个file1将不能被删除、更改、设置连接、写入,去掉i属性为-i
登陆文件需要+a参数,不然用户将无法登陆。重要的非登陆、非驱动的系统文件可以+i属性提高安全性。
2.lsattr 查看文件的隐藏属性

lsattr -a -R data 显示data目录的隐藏属性,连同其子目录的数据


你可能感兴趣的:(Linux/Unix系统)