老男人百科 > 百科 > 正文

windows无法访问指定设备路径或文件你可能没有适当的权限(共享文件夹无法访问没有权限)

2023-05-14 08:04:28 阅读( 3400)

今天一直在弄Samba服务的配置,深深的感受到权限控制的困难,文件权限的机制是Linux系统中的一大特色,除了我们现在所熟知的读(r)、写(w)、执行(x)权限外,还有三个比较特殊的权限,分别为:setuid、setgid和stickbit(粘滞位)。

今天一直在做Samba服务的配置,深感权限控制的难度。文件许可机制是Linux系统的一大特色。除了我们现在熟悉的read (R)、write (W)和execute (X)权限之外,还有三种特殊的权限。

它们是setuid、setgid和stick bit。

1、setuid与setgid讲解

以/etc/passwd和/usr/bin/passwd为例,看看它在系统中的使用位置:

[plain] view plaincopy

[root@Salve1 school]# ll /etc/passwd /usr/bin/passwd

-rw-r--r-- 1 root root 2005 Apr 23 01:25 /etc/passwd

-rwsr-xr-x 1 root root 23420 Aug 11 2010 /usr/bin/passwd

[root@Salve1 school]#

通过分析,/etc/passwd的权限是-rw-r-r-即文件的所有者拥有读写权限,而用户组成员和其他成员只有查看权限。我们知道,在系统中,我们必须更改用户的密码。

root用户和普通用户都可以使用/usr/bin/passwd someuser命令修改这个文件/etc/passwd,root用户对/etc/passwd有写权限。

没有错;普通用户呢?此处使用setuid。setuid的作用是“让执行命令的用户以命令所有者的权限执行”,即普通用户在执行passwd时会拥有root权限。

因此您可以修改文件/etc/passwd。它的logo是:S,会出现在X的地方,比如:-RWSR-XR-X . setgid的意思和它一样,就是让执行文件的用户在文件所属组的权限下执行。

2、stick bit(粘滞位)

看看它在系统中用的地方,以/tmp为例:

[plain] view plaincopy

[root@Salve1 /]# ll -d /tmp

drwxrwxrwt 13 root root 4096 Apr 23 02:06 /tmp

[root@Salve1 /]#

我们知道/tmp是系统的临时文件目录,所有用户拥有该目录下的所有权限,也就是说可以在该目录下随意创建、修改、删除文件。如果用户A在这个目录中创建了一个文件,用户B会删除它。

我们不能允许这样的情况。为了实现这一目标,出现了棒形钻头的概念。这是目录。如果该目录设置了stick位,

那么这个目录中的文件除了文件的创建者和可以删除和修改/tmp目录中东西的root用户之外,其他用户是不能碰的。这就是粘位的作用。

3、如何设置上述特殊权限

Chmod USA xxx # Set setuid permissions

chmod g s xxx #设置setgid权限

Chmod o txxxx #为目录设置棒位权限。

chmod 4775 xxx #设置setuid权限

chmod 2775 xxx #设置setgid权限

Chmod 1775 xxx #为目录设置棒位权限。

4.注意:有时候你设置了S或者T的权限,会发现变成了S或者T,这是因为你没有在那个位置给它X(可执行)的权限,所以这个设置不会生效。可以先给它X的权限,再给它S或者t的权限。

专题页