0%

Linux 权限设置

在linux下修改权限

1
2
3
4
5
6
7
chmod g+r path/file 加读权限 当前目录
chmod -R g+r path/file 加读权限 当前目录以及子目录
g-r 减读权限
g+w 加写权限
g-w
g+x 加执行权限
g-x

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
2
3
4
chmod 755 test
chmod u+x test
chmod u-x test
chmod g+x test

4.usrmod修改用户所属组
一般的话只是将当前用户添加到其它组中去

1
usrmod -a -G group1 user1

如果要彻底更改用户所属的组的话使用

1
usrmod -g group1 user1

使用Linux时,需要以一个用户的身份登陆,从而限制一个使用者能够访问的资源;而组则是用来方便组织管理用户。

用户与组

•每个用户拥有一个UserID
•每个用户属于一个主组,属于一个或多个附属组
•每个组拥有一个GroupID
•每个进程以一个用户身份运行,并受该用户可访问的资源限制
•每个可登陆用户有一个指定的SHELL

系统中的文件都有一个所属用户及所属组,用户、组信息保存在以下三个文件中:

1
2
3
4
5
/etc/passwd   用户信息

/etc/shadow 用户密码

/edc/group  组信息

命令id用以显示当前用户的信息,命令passwd可以修改当前用户的密码;以下命令可以显示登陆用户信息:

1
2
3
4
5
whoami   显示当前用户

who 显示当前登陆的用户信息

w 显示登陆用户的详细信息

命令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这个文件时,是不能读取的。

img

(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了。

img

除二进制程序外,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) 。

粘滞位权限是针对目录的,对文件无效

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道