在linux下修改权限
1 | chmod g+r path/file 加读权限 当前目录 |
chgrp修改文件所属组
简单使用,将文本test.txt所属组改为gourp1
1 | chgrp gourp1 test.txt |
2.chown修改文件拥有者
##将test.txt文件所属用户修改为user1
1 | chown user1 test.txt |
##同时修改test.txt的所属用户和所属组
1 | chown user1:group1 test.txt |
3.chmod修改文件属性
1 | chmod 755 test |
4.usrmod修改用户所属组
一般的话只是将当前用户添加到其它组中去
1 | usrmod -a -G group1 user1 |
如果要彻底更改用户所属的组的话使用
1 | usrmod -g group1 user1 |
使用Linux时,需要以一个用户的身份登陆,从而限制一个使用者能够访问的资源;而组则是用来方便组织管理用户。
用户与组
•每个用户拥有一个UserID
•每个用户属于一个主组,属于一个或多个附属组
•每个组拥有一个GroupID
•每个进程以一个用户身份运行,并受该用户可访问的资源限制
•每个可登陆用户有一个指定的SHELL
系统中的文件都有一个所属用户及所属组,用户、组信息保存在以下三个文件中:
1 | /etc/passwd 用户信息 |
命令id用以显示当前用户的信息,命令passwd可以修改当前用户的密码;以下命令可以显示登陆用户信息:
1 | whoami 显示当前用户 |
命令usermod修改一个用户的信息:
usermod 参数 用户名
-l 修改用户名
-u 修改uid
-g 修改用户主组
-G 修改用户附属组
-L 锁定用户
-U 解锁用户
命令userdel用户删除一个用户:
userdel 用户名
userdel -l 用户名 删除用户的同时删除该用户家目录
命令groupadd、groupmod用以创建、修改一个组:
groupadd 组名
groupmod -n 新组名 旧组名
groupmod -g 新组ID 旧组ID
例如:
userdel -r sam
此命令删除用户sam在系统文件(主要是/etc/passwd,/etc/shadow,/etc/group等)中的记录,同时删除用户的主目录。
删除一个组
同样的,我们有时会需要删除一个组,命令groupde用以删除一个组
Linux文件特殊权限:SUID、SGID和SBIT
SUID
当s这个标志出现在 文件所有者的x权限上时,例如文件权限状态“-rwsr-xr-x”,此时就称为 Set UID,简称为SUID的特殊权限。SUID有这样的限制和功能:
(1)SUID权限仅对 二进制程序有效;
(2)执行者对于该程序需要 具有x的可执行权限;
(3)本权限仅在 执行该程序的过程中有效;
(4)执行者将具有该程序所有者的权限。
举个例子,在Linux中,所有账号的密码记录在/etc/shadow这个文件中,并且只有root可以读和强制写入这个文件。那么,如果另一个账号vbird需要修改自己的密码,就需要访问/etc/shadow这个文件,但是上面明明说了只有root能访问/etc/shadow这个文件,是不是矛盾?但事实上,vbird是可以修改/etc/shadow这个文件内的密码的,这就是SUID的功能。
通过上述的功能说明,我们知道,
(1)vbird对于/usr/bin/passwd这个程序具有x权限,表明vbird可以执行passwd;
(2)passwd的所有者为root;
(3)vbird执行passwd的过程中会暂时获得root的权限;
(4)/etc/shadow因此可以被vbird所执行的passwd所修改。
但是vbird如果使用cat去读取/etc/shadow这个文件时,是不能读取的。
(SUID只能用在文件上,不能用在目录)
SGID
当s标志出现在文件所有者的x权限时称为SUID,那么s出现在用户组的x权限时称为SGID。(U表示user,G表示group)。SGID有如下功能:
(1)SGID对二进制程序有用;
(2)程序执行者对该程序需具备x权限;
(3)执行者在执行过程中会获得该程序用户组的支持。
举个例子,/usr/bin/locate这个程序可以去查询/var/lib/mlocate/mlocate.db这个文件的内容,mlocate.db的权限如下:
-rwx–s–x root slocate /usr/bin/locate
-rw-r—– root slocate /var/lib/mlocate/mlocate.db
若使用vbird这个账号执行locate时,vbird就会获得用户组slocate支持,又由于用户组slocate对mlocate.db具有r权限,所以vbird就可以读取mlocate.db了。
除二进制程序外,SGID也可以用目录上。当一个目录设置了SGID权限后,它具有如下功能:
(1)用户若对此目录具有r和x权限,该用户能够进入该目录;
(2)用户在此目录下的有效用户组将变成该目录的用户组;
(3)若用户在此目录下拥有w权限,则用户所创建的新文件的用户组与该目录的用户组相同。
SBIT
SBIT目前只对目录有效。
SBIT对目录的作用是:
(1)当用户对此目录具有w和x权限时,即具有写入权限时;
(2)当用户在该目录下创建新文件或目录时,仅有自己和root才有权力删除。
SUID\SGID\SBIT权限设置
先将其转换成数字:
SUID->4
SGID->2
SBIT->1
假设要将一个文件权限修改为“-rwsr-xr-x”,由于s在用户权限中,所以是SUID,因此,原先的755前面还要加上4,也就是4755,所以,
用命令chmod 4755 filename 设置就可以了。此外,还可能出现S和T的情况。
我们知道,s和t是替代x这个权限的,但是,如果它本身没有x这个权限,修改为s或t时就会变成大S或大T,例如:
执行chmod 7666 filename。 因为666表示“-rw-rw-rw”,均没有x权限,所以最后变成“-rwSrwSrwT”。
Linux中的特殊权限粘滞位(sticky bit)详解
在linux下每一个文件和目录都有自己的访问权限,访问权限确定了用户能否访问文件或者目录和怎样进行访问。最为我们熟知的一个文件或目录可能拥有三种权限,分别是读、写、和执行操作。我们创建一个文件后系统会默认地赋予所有者读和写权限。当然我们也可以自己修改它,添加自己需要的权限。
除了通用的这些权限,我们来说说在linux下的另一个特殊权限。首先我们来看看在根目录下的一个目录tmp,可以看到tmp目录的other权限是rwt
,那么这里的t又是什么权限呢,有什么意义。
t就是粘滞位(粘着位)
上面所说的t权限就是我们在这里要讲的粘滞位(sticky bit),我们给刚刚的cur目录采用chmod o+t的方式给other用户设置粘滞位。
可以看到此时我们是没有权限删除root用户创建的文件了,这也就是粘滞位的作用。
粘滞位权限便是针对此种情况设置,当⽬录被设置了粘滞位权限以后,即便⽤户对该⽬录有写⼊权限,也不能删除该⽬录中其他⽤户的⽂件数据,⽽是只有该⽂件的所有者和root⽤户才有权将其删除。设置了粘滞位之后,正好可以保持⼀种动态的平衡:允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。
如果去掉了other的执行权限,可以看到本来’t’的位置变成了’T’,,那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 假如本来在该位上有x, 则这些特别标志 (suid, sgid, sticky) 显示为小写字母 (s, s, t).否则, 显示为大写字母 (S, S, T) 。
粘滞位权限是针对目录的,对文件无效