wordpress 文章分页省略号龙岗网站 建设seo信科

web/2025/10/3 15:52:45/文章来源:
wordpress 文章分页省略号,龙岗网站 建设seo信科,网站购物分享seo,哪些网站是jsp做的四、 文件权限 1 、文件类型 Linux 广泛的被很多用户所接受#xff0c;它强大的功能受到很多人喜欢#xff0c; Linux 文件一般是用一些相关的应 用程序创建#xff0c;比如图像工具、文档工具、归档工具 ... .... 或 cp 工具等。 Linux 文件的删除方式是用 rm 命… 四、 文件权限 1 、文件类型 Linux 广泛的被很多用户所接受它强大的功能受到很多人喜欢 Linux 文件一般是用一些相关的应 用程序创建比如图像工具、文档工具、归档工具 ... .... 或 cp 工具等。 Linux 文件的删除方式是用 rm 命 令。 Linux 文件类型和 Linux 文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的 比如 file.txt 、 file.tar.gz 这些文件虽然要用不同的程序来打开但放在 Linux 文件类型中衡量的话大 多是常规文件也被称为普通文件。 Linux 文件类型常见的有普通文件、目录、字符设备文件、块设备文件、符号链接文件等现在我们 进行一个简要的说明 1 普通文件 1. [rootlocalhost ~]# ls -lh install.log 2. -rw-r--r-- 1 root root 53K 03-16 08:54 install.log 我 们用 ls -lh 来查看某个文件的属性可以看到有类似 -rw-r--r-- 值得注意的是第一个符号是 - 这样的文件在 Linux 中就是普通文件。这些文件一般是用一些相关的应用程序创建比如图像工具、文 档工具、归档工具 ... .... 或 cp 工具等。这类文件的删除方式是用 rm 命令 2 目录 1. [rootlocalhost ~]# ls -lh 2. 总计 14M 3. -rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale 4. -rw-r--r-- 1 root root 53K 03-16 08:54 install.log 5. -rw-r--r-- 1 root root 14M 03-16 07:53 kernel-6.15-1.2025_FC5.i686.rpm 6. drwxr-xr-x 2 1000 users 4.0K 04-04 23:30 mkuml-2004.07.17 7. drwxr-xr-x 2 root root 4.0K 04-19 10:53 mydir 8. drwxr-xr-x 2 root root 4.0K 03-17 04:25 Public 当 我们在某个目录下执行看到有类似 drwxr-xr-x 这样的文件就是目录目录在 Linux 是一个比较 特殊的文件。注意它的第一个字符是 d 。创建目录的命令可以用 mkdir 命令或 cp 命令 cp 可以把一 个目录复制为另一个目录。删除用 rm 或 rmdir 命令。 3 字符设备或块设备文件 如时您进入 /dev 目录列一下文件会看到类似如下的 1. [rootlocalhost ~]# ls -la /dev/tty 2. crw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/tty 3. [rootlocalhost ~]# ls -la /dev/hda1 4. brw-r----- 1 root disk 3, 1 2006-04-19 /dev/hda1 我们看到 /dev/tty 的属性是 crw-rw-rw- 注意前面第一个字符是 c 这表示字符设备文件。比如猫等 串口设备 我们看到 /dev/hda1 的属性是 brw-r----- 注意前面的第一个字符是 b 这表示块设备比如硬盘光 驱等设备 这个种类的文件是用 mknode 来创建用 rm 来删除。目前在最新的 Linux 发行版本中我们一般不 用自己来创建设备文件。因为这些文件是和内核相关联的。 4 套接口文件 当我们启动 MySQL 服务器时会产生一个 mysql.sock 的文件。 1. [rootlocalhost ~]# ls -lh /var/lib/mysql/mysql.sock 2. srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock 注意这个文件的属性的第一个字符是 s 。我们了解一下就行了。 5 符号链接文件 1. [rootlocalhost ~]# ls -lh setup.log 2. lrwxrwxrwx 1 root root 11 04-19 11:18 setup.log - install.log 当我们查看文件属性时会看到有类似 lrwxrwxrwx, 注意第一个字符是 l 这类文件是链接文件。是通过 ln -s 源文件名 新文件名。上面是一个例子表示 setup.log 是 install.log 的软链接文件。怎么理解呢 这和 Windows 操作系统中的快捷方式有点相似。 符号链接文件的创建方法举例 1. [rootlocalhost ~]# ls -lh kernel-6.15-1.2025_FC5.i686.rpm 2. -rw-r--r-- 1 root root 14M 03-16 07:53 kernel-6.15-1.2025_FC5.i686.rpm 3. [rootlocalhost ~]# ln -s kernel-6.15-1.2025_FC5.i686.rpm kernel.rpm 4. [rootlocalhost ~]# ls -lh kernel* 5. -rw-r--r-- 1 root root 14M 03-16 07:53 kernel-6.15-1.2025_FC5.i686.rpm 6. lrwxrwxrwx 1 root root 33 04-19 11:27 kernel.rpm - kernel-6.15-1.2025_FC5 2 、文件权限 Linux 系统是一个典型的多用户系统不同的用户处于不同的地位。为了保护系统的安全性 Linux 系统对不同用户访问同一文件的权限做了不同的规定。 对于一个 Linux 系统中的文件来说它的权限可以分为三种读的权限、写的权限和执行的权限 分别用 r 、 w 和 x 表示。不同的用户具有不同的读、写和执行的权限。 对于一个文件来说它都有一个特定的所有者也就是对文件具有所有权的用户。同时由于在 Linux 系统中用户是按组分类的一个用户属于一个或多个组。文件所有者以外的用户又可以分为文 件所有者的同组用户和其它用户。因此 Linux 系统按文件所有者、文件所有者同组用户和其它用户三 类规定不同的文件访问权限。 权限的概念 Linux 文件系统安全模型是通过给系统中的文件赋予两个属性来起作用的这两个赋予每个文件的 属性称为所有者 (ownership) 和访问权限 (access rights) 。 Linux 下的每一个文件必须严格地属于一个用户和 一个组。 下图是在我机器上的 /root 目录下运行 ls -l 命令的情况。 -rw-r--r-- 这些符号用来描述文件的访问权限类别也就是常说的文件权限。这些访问权限指导 Linux 根据文 件的用户和组所有权来处理所有访问文件的用户请求。总共有 10 种权限属性因此一个权限列表总是 10 个字符的长度。它的格式遵循下列规则 ◆ 第 1 个字符表示一种特殊的文件类型。其中字符可为 d( 表示该文件是一个目录 ) 、 b( 表示该文件 是一个系统设备使用块输入 / 输出与外界交互通常为一个磁盘 ) 、 c( 表示该文件是一个系统设备使 用连续的字符输入 / 输出与外界交互如串口和声音设备 ) “ . ”表示该文件是一个普通文件没有特殊 属性。 ◆ 2 4 个字符用来确定文件的用户 (user) 权限 5 7 个字符用来确定文件的组 (group) 权限 8 10 个字符用来确定文件的其它用户 (other user 既不是文件所有者也不是组成员的用户 ) 的权限。其中 2 、 5 、 8 个字符是用来控制文件的读权限的该位字符为 r 表示允许用户、组成员或其它人可从该文件 中读取数据。短线“ - ”则表示不允许该成员读取数据。与此类似 3 、 6 、 9 位的字符控制文件的写权 限该位若为 w 表示允许写若为“ - ”表示不允许写。 4 、 7 、 10 位的字符用来控制文件的制造权限 该位若为 x 表示允许执行若为“ - ”表示不允许执行。 任何列在 /etc/passwd 文件中的用户都可以是一个文件的所有者也称为该文件的用户。同样任何 列在 /etc/group 文件中的组都可以是文件组的所有者也简称为文件的组。 drwxrwxr-- 2 root root 4096 2 月 11 10:36 guo 因为 guo 的第 1 个位置的字符是 d 所以由此知道 guo 是一个目录。第 2 至 4 位置上的属性是 rwx 表示用户 root 拥有权限列表显示 guo 中所有的文件、创建新文件或者删除 guo 中现有的文件或者将 guo 作为当前工作目录。第 5 至 7 个位置上的权限是 rwx 表示 root 组的成员拥有和 root 一样的权限。 第 8 至 10 位上的权限仅是 r-- 表示不是 root 的用户及不属于 root 组的成员只有对 guo 目录列表的权 限。这些用户不能创建或者删除 guo 中的文件、执行 junk 中的可执行文件或者将 junk 作为他们的当 前工作目录。 -rwxr-xr-- 1 user admin 20480 11 月 11 09:23 Readme.txt 在该项中第 1 个位置是短线“ - ”表示该文件是一个普通文件没有特殊属性。该文件对任何人 都可读只对 user 可写 user 和 admin 的组成员可以执行该文件。 另外需要注意的是当用户访问一个文件时权限检查是从左到右的。假设上述的 readme.txt 文件 具有以下权限 -r--rw-r-- 那么即使 user 是属于 admin 组的一个成员也不能对该文件进行写操作因为已经被左边的写权 限设置拒绝了。 一般文件权限读 R 写 (W) 执行 X 权限比较简单。一般材料上面都 有介绍。这里介绍一下一些特殊的文件权限 ——SUID SGID Stick bit 。 如果你检查一下 /usr/bin/passwd 和 /tmp/ 的文件权限你就会发现和普 通的文件权限有少许不同如下图所示 这里就涉及到 SUID 和 Stick bit 。 SUID 和 SGID 我们首先来谈一下 passwd 程序特殊的地方。大家都知道 Linux 把用户的密码信息存放 在 /etc/shadow 里面该文件属性如下 可以看到 Shadow 的只有所有者可读写所有者是 root 所以该文件对普通用户是不可读写的。但是普通用户调 用 passwd 程序是可以修改自己的密码的这又是为什么呢难道普通用户可以读写 shadow 文件难道 Linux 有漏洞当然不是啦。 password 可以修改 shadow 文件的原因是他设置了 SUID 文件权限。 SUID 文件权限作用于可执行文件。一般的可执行文件在执行期的所有者是当前用户比 如当前系统用户是 simon simon 运行程序 a.out a.out 执行期的所有者应该是 simon 。但是 如果我们给可执行文件设置了 SUID 权限则该程序的执行期所有者就是该文件所有者。还 以 前面的 a.out 为例假如 a.out 设置了 SUID 并且其所有者是 root 系统当前用户是 simon 当 simon 运行 a.out 的时 候 a.out 在运行期的所有者就是 root 这时 a.out 可以存取只有 root 权限才能存取的资源比如读写 shadow 文件。当 a.out 执行结束 的时候当前用户的权限又回 到了 simon 的权限了。 passwd 就是设置了 SUID 权限并且 passwd 的所有者是 root 所以所有的用户都可以 执行他在 passwd 运行期程序获得临时的 root 权限这时其可以存取 shadow 文件。当 passwd 运行完成当前用户又回到普通权限。 同理设置程序的 SGID 可以使程序运行期可以临时获得所有者组的权限。在团队开发 的时候这个文件权限比较有用一般系统用 SUID 比较多。 SGID 可以用于目录当目录设置了 SGID 之后在该目录下面建立的所有文件和目录都 具有和该目录相同的用户组。 Stick bit( 粘贴位 ) 对程序该权限告诉系统在程序完成后在内存中保存一份运行程序的备份如该程序常 用可为系统节省点时间不用每次从磁盘加载到内存。 Linux 当前对文件没有实现这个功能 一些其他的 UNIX 系统实现了这个功能。 Stick bit 可以作用于目录在设置了粘贴位的目录下面的文件和目录只有所有者和 root 可以删除他。现在我们可以回头去看看 /tmp/ 目录的情况这个目录 设置了粘贴位。所以说 并且所有人都可以对该目录读写执行 777 这样意味着所有人都可以在 /tmp/ 下面创建临时 目录。因为设置 Stick bit 只有所有者和 root 才能删除目录。这样普通用户只能删除属于自己 的文件而不能删除其他人的文件。如下图所示 设置 SUID SGID Stick bit 前面介绍过 SUID 与 SGID 的功能那么如何打开文件使其成为具有 SUID 与 SGID 的 权限呢这就需要使用数字更改权限了。现在应该知道使用数字 更改权限的方式为 “3 个数 字 ” 的组合那么如果在这 3 个数字之前再加上一个数字最前面的数字就表示这几个属性 了注通常我们使用 chmod xyz filename 的方式来设置 filename 的属性时则是假设没有 SUID 、 SGID 及 Sticky bit 。 4 为 SUID 2 为 SGID 1 为 Sticky bit 假设要将一个文件属性改为 “-rwsr-xr-x ”由于 s 在用户权限中所以是 SUID 因此在 原先的 755 之前还要加上 4 也就是使用 “chmod 4755 filename ”来设置。 SUID 也可以用 “chmod us filename ”来设置 “chmod u-s filename ”来取消 SUID 设 置同样 SGID 可以用 “chmod gs filename ” “chmod g-s filename ”来取消 SGID 设置。 一般来说使用过 Linux 的同学都知道Linux 文件的权限有 rwx所有者、所有组、其它用户的 rwx 权限 是彼此独立的。为此经常会听到如果某个 web 文件需要被修改的话需要加上 777 的权限这就是让所有 用户可写。 但仔细一想这样的权限未免有些想得比较天真没有考滤特殊情况。例如/tmp 目录默认权限是 777 而且有些文件也是允许所有用户访问修改的那么是不 是任何一个用户都可以将这些删除呢再如 /etc/shadow 保存的是用户密码文件默认情况下它的权限是 640那么只有 shadow 的 owner(root)才能修 改它按照常规理解这是不可理解的因为每个用户都可能修改密码也就是会修改这个文件。 为了把这些情况解释清楚需要引入 Linux 特殊文件权限的概念。Linux 特殊文件权限有三个玩意 sticky bit、SGID、SUID以下一一道来。 sticky bit sticky bit 只对目录有效使目录下的文件只有文件拥有者才能删除如果他不属于 owner仅属于 group 或者 other就算他有 w 权限也不能删除文件。 加 sticky bit 的方法 chmod ot /tmp 或者 chmod 1777 /tmp 查看是否加了 sticky bit用 ls -l可以看到有类似这样的权限“-rwxrwxrwt”t 就代表已经加 上了 sticky bit而且生效了如果显示的是“-rwxrwxrwT”说明也已经加上了 sticky bit但没有生 效因为本来 other 就没有写的权限。 看看/tmp 目录的权限就是 drwxrwxrwt 吧 SGID(The Set GroupID ) 加上 SGID 的文件表示运行这个程序时是临时以这个文件的拥有组的身份运行的加上 SGID 的文件 夹表示在这个目录下创建的文件属于目录所有的组而不是创建人所在的组在这个目录下创建的目录继 承本目录的 SGID。 加 SGID 的方法 chmod gs /tmp 或 chmod 2777 /tmp 查看是否加了 SGID用 ls -l可以看到类似这样的权限“drwxrwsrwx”s 就代表已经加上了 SGID 而且生效如果显示“drwxrwSrwx”说明已经加上了 SGID但没有生效因为本来 group 就没有执行的 权限。 SUID(The Set UserID) SUID 与 SGID 是一样的惟一不同的是运行时是以这个文件的拥有者身份来运行。 加 SUID 的方法 chmod os /tmp 或 chmod 4777 /tmp 同样的加了 SUID 的文件权限有这类似这两种“drwsrwxrwx”、“drwSrwxrwx”。 看看 passwd 命令的权限ll /usr/bin/passwd是-rwsr-x-rx终于知道为什么执行 passwd 时可 以修改/etc/shadow 文件了吧 SUID置于 u 的 x 位原位置有执行权限就置为 s没有了为 S . SGID置于 g 的 x 位原位置有执行权限就置为 s没有了为 S . STICKY粘滞位置于 o 的 x 位原位置有执行权限就置为 t 否则为 T . 3 、超级权限控制 在 Linux 操作系统中 root 的权限是最高的也被称为超级权限的拥有者。普通用户无法执行的操作 root 用户都能完 成所以也被称之为超级管理用户。 在系统中每个文件、目录和进程都归属于某一个用户没有用户许可其它普通用户是无法操作的但对 root 除外。 root 用户的特权性还表现在 root 可以超越任何用户和用户组来对文件或目录进行读取、修改或删除在系统正常的许可范围内 对可执行程序的执行、终止对硬件设备的添加、创建和移除等也可以对文件和目录进行属主和权限进行修改以适合系 统管理的需要因为 root 是系统中权限最高的特权用户 3.1 、对超级用户和普通用户的理解 3.1.1 、什么是超级用户 在所有 Linux 系统中系统都是通过 UID 来区分用户权限级别的而 UID 为 0 的用户被系统约定为是具有超级权限。超级用 户具有在系统约定的最高权限满园内操作所以说超级用户可以完成系统管理的所有工具我们可以通过 /etc/passwd 来查得 UID 为 0 的用户是 root 而且只有 root 对应的 UID 为 0 从这一点来看 root 用户在系统中是无可替代的至高地位和无限制 权限。 root 用户在系统中就是超级用户 3.1.2 、理解 UID 和用户的对应关系 当系统默认安装时系统用户和 UID 是一对一的对关系也就是说一个 UID 对应一个用户。我们知道用户身份是通过 UID 来 确认的我们在 《用户 user 和用户组 group 配置文件详解》中的 UID 的解说中有谈到 “UID 是确认用户权限的标识 用户登录系统所处的角色是通过 UID 来实现的而非用户名把几个用户共用一个 UID 是危险的比如我们把普通用户的 UID 改为 0 和 root 共用一个 UID 这事实上就造成了系统管理权限的混乱。如果我们想用 root 权限可以通过 su 或 sudo 来实现切不可随意让一个用户和 root 分享同一个 UID ” 在系统中能不能让 UID 和用户是一对多的关系是可以的比如我们可以把一个 UID 为 0 这个值分配给几个用户共同使用 这就是 UID 和用户的一对多的关系。但这样做的确有点危险相同 UID 的用户具有相同的身份和权限。比如我们在系统中把 beinan 这个普通用户的 UID 改为 0 后事实上这个普通用户就具有了超级权限他的能力和权限和 root 用户一样用户 beinan 所有的操作都将被标识为 root 的操作因为 beinan 的 UID 为 0, 而 UID 为 0 的用户是 root 是不是有点扰口也可以理解为 UID 为 0 的用户就是 root root 用户的 UID 就是 0 UID 和用户的一对一的对应关系 只是要求管理员进行系统管理时所要坚守的准则因为系统安全还是第一位的。所以我 们还是把超级权限保留给 root 这唯一的用户是最好的选择 如果我们不把 UID 的 0 值的分享给其它用户使用只有 root 用户是唯一拥有 UID0 的话 root 用户就是唯一的超级权限用户 3.1.3 、普通用户和伪装用户 与超级用户相对的就是普通用户和虚拟也被称为伪装用户普通和伪装用户都是受限用户但为了完成特定的任务普 通用户和伪装用户也是必须的 Linux 是一个多用户、多任务的操作系统多用户主要体现在用户的角色的多样性不同的用 户所分配的权限也不同这也是 Linux 系统比 Windows 系统更为安全的本质所在即使是现在最新版本的 Windows 2003 也无法抹去其单用户系统的烙印 3.2. 超级用户权限在系统管理中的作用 超级权限用户 UID 为 0 的用户到底在系统管理中起什么作用呢主要表现在以下两点 3.2.1 、对任何文件、目录或进程进行操作 但值得注意的是这种操作是在系统最高许可范围内的操作有些操作就是具有超级权限的 root 也无法完成 比如 /proc 目录 /proc 是用来反应系统运行的实时状态信息的因此即便是 root 也无能为力它的权限如下 [rootlocalhost ~]# pwd /root [rootlocalhost ~]# cd / [rootlocalhost /]# ls -ld /proc/ dr-xr-xr-x 134 root root 0 2005-10-27 /proc/ 就是这个目录只能是读和执行权限但绝对没有写权限的就是我们把 /proc 目录的写权限打开给 root root 用户也是不能 进行写操作 [rootlocalhost ~]# chmod 755 /proc [rootlocalhost /]# ls -ld /proc/ drwxr-xr-x 134 root root 0 2005-10-27 /proc/ [rootlocalhost /]# cd /proc/ [rootlocalhost proc]# mkdir testdir mkdir: 无法创建目录‘testdir’: 没有那个文件或目录 3.2.2 、对于涉及系统全局的系统管理 硬件管理、文件系统理解、用户管理以及涉及到的系统全局配置等等 ...... 如果您执行某个命令或工具时提示您无权限大多 是需要超级权限来完成 比如用 adduser 来添加用户这个只能用通过超级权限的用户来完成 3.2.3 、超级权限的不可替代性 由于超级权限在系统管理中的不可缺少的重要作用为了完成系统管理任务我们必须用到超级权限在一般情况下为了 系统安全对于一般常规级别的应用不需要 root 用户来操作完成 root 用户只是被用来管理和维护系统之用比如系统日 志的查看、清理用户的添加和删除 ...... 在不涉及系统管理的工作的环境下普通用户足可以完成比如编写一个文件听听音乐用 gimp 处理一个图片等 ...... 基 于普通应用程序的调用大多普通用户就可以完成 当我们以普通权限的用户登录系统时有些系统配置及系统管理必须通过超级权限用户完成比如对系统日志的管理添加 和删除用户。而如何才能不直接以 root 登录却能从普通用户切换到 root 用户下才能进行操作系统管理需要的工作这就涉 及到超级权限管理的问题 获取超级权限的过程就是切换普通用户身份到超级用户身份的过程这个过程主要是通过 su 和 sudo 来解决 3.3 、使用 su 命令临时切换用户身份 3.3.1 、 su 的适用条件和威力 su 命令就是切换用户的工具怎么理解呢比如我们以普通用户 beinan 登录的但要添加用户任务执行 useradd beinan 用户没有这个权限而这个权限恰恰由 root 所拥有。解决办法无法有两个一是退出 beinan 用户重新以 root 用户登录 但这种办法并不是最好的二是我们没有必要退出 beinan 用户可以用 su 来切换到 root 下进行添加用户的工作等任务完 成后再退出 root 。我们可以看到当然通过 su 切换是一种比较好的办法 通过 su 可以在用户之间切换如果超级权限用户 root 向普通或虚拟用户切换不需要密码什么是权力这就是而普通用户 切换到其它任何用户都需要密码验证 3.3.2 、 su 的用法 su [OPTION 选项参数] [用户] -, -l, --login 登录并改变到所切换的用户环境 -c, --commmandCOMMAND 执行一个命令然后退出所切换到的用户环境 至于更详细的请参看 man su 3.3.3 、 su 的范例 su 在不加任何参数默认为切换到 root 用户但没有转到 root 用户家目录下也就是说这时虽然是切换为 root 用户了但 并没有改变 root 登录环境用户默认的登录环境可以在 /etc/passwd 中查得到包括家目录 SHELL 定义等 [beinanlocalhost ~]$ su Password: [rootlocalhost beinan]# pwd /home/beinan su 加参数 - 表示默认切换到 root 用户并且改变到 root 用户的环境 [beinanlocalhost ~]$ pwd /home/beinan [beinanlocalhost ~]$ su - Password: [rootlocalhost ~]# pwd /root su 参数 - 用户名 [beinanlocalhost ~]$ su - root 注这个和 su - 是一样的功能 Password: [rootlocalhost ~]# pwd /root [beinanlocalhost ~]$ su - linuxsir 注这是切换到 linuxsir 用户 Password: 注在这里输入密码 [linuxsirlocalhost ~]$ pwd 注查看用户当前所处的位置 /home/linuxsir [linuxsirlocalhost ~]$ id 注查看用户的 UID 和 GID 信息主要是看是否切换过来了 uid505(linuxsir) gid502(linuxsir) groups0(root),500(beinan),502(linuxsir) [linuxsirlocalhost ~]$ [beinanlocalhost ~]$ su - -c ls 注这是 su 的参数组合表示切换到 root 用户并且改变到 root 环境然后列出 root 家目录的文件然后退出 root 用户 Password: 注在这里输入 root 的密码 anaconda-ks.cfg Desktop install.log install.log.syslog testgroup testgroupbeinan testgrouproot [beinanlocalhost ~]$ pwd 注查看当前用户所处的位置 /home/beinan [beinanlocalhost ~]$ id 注查看当前用户信息 uid500(beinan) gid500(beinan) groups500(beinan) 3.3.4 、 su 的优缺点 su 的确为管理带来方便通过切换到 root 下能完成所有系统管理工具只要把 root 的密码交给任何一个普通用户他都 能切换到 root 来完成所有的系统管理工作 但通过 su 切换到 root 后也有不安全因素比如系统有 10 个用户而且都参与管理。如果这 10 个用户都涉及到超级权限 的运用做为管理员如果想让其它用户通过 su 来切换到超级权限的 root 必须把 root 权限密码都告诉这 10 个用户如果这 10 个用户都有 root 权限通过 root 权限可以做任何事这在一定程度上就对系统的安全造成了威协想想 Windows 吧简 直就是恶梦 “ 没有不安全的系统只有不安全的人 ” 我们绝对不能保证这 10 个用户都能按正常操作流程来管理系统其中任何一人对系 统操作的重大失误都可能导致系统崩溃或数据损失 所以 su 工具在多人参与的系统管理中并不是最好的选择 su 只适用于一两个人参与管理的系统毕竟 su 并不能让普通用 户受限的使用 超级用户 root 密码应该掌握在少数用户手中这绝对是真理所以集权而治的存在还是有一定道理的 3.4 、 sudo 授权许可使用的 su 也是受限制的 su 3.4.1. sudo 的适用条件 由于 su 对切换到超级权限用户 root 后权限的无限制性所以 su 并不能担任多个管理员所管理的系统。如果用 su 来切换 到超级用户来管理系统也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时最 好是针对每个管理员的技术特长和管理范围并且有针对性的下放给权限并且约定其使用哪些工具来完成与其相关的工作 这时我们就有必要用到 sudo 。 通过 sudo 我们能把某些超级权限有针对性的下放并且不需要普通用户知道 root 密码所以 sudo 相对于权限无限制性的 su 来说还是比较安全的所以 sudo 也能被称为受限制的 su 另外 sudo 是需要授权许可的所以也被称为授权许可的 su sudo 执行命令的流程是当前用户切换到 root 或其它指定切换到的用户然后以 root 或其它指定的切换到的用户身份 执行命令执行完成后直接退回到当前用户而这些的前提是要通过 sudo 的配置文件 /etc/sudoers 来进行授权 3.4.2 、从编写 sudo 配置文件 /etc/sudoers 开始 sudo 的配置文件是 /etc/sudoers 我们可以用他的专用编辑工具 visodu 此工具的好处是在添加规则不太准确时保存退 出时会提示给我们错误信息配置好后可以用切换到您授权的用户下通过 sudo -l 来查看哪些命令是可以执行或禁止的 /etc/sudoers 文件中每行算一个规则前面带有 # 号可以当作是说明的内容并不执行如果规则很长一行列不下时可以 用 \ 号来续行这样看来一个规则也可以拥有多个行 /etc/sudoers 的规则可分为两类一类是别名定义另一类是授权规则别名定义并不是必须的但授权规则是必须的 3.4.3 、 /etc/sudoers 配置文件中别名规则 别名规则定义格式如下 Alias_Type NAME item1, item2, ... 或 Alias_Type NAME item1, item2, item3 : NAME item4, item5 别名类型 Alias_Type 别名类型包括如下四种 Host_Alias 定义主机别名 User_Alias 用户别名别名成员可以是用户用户组前面要加 % 号 Runas_Alias 用来定义 runas 别名这个别名指定的是 “ 目的用户 ” 即 sudo 允许切换至的用户 Cmnd_Alias 定义命令别名 NAME 就是别名了 NMAE 的命名是包含大写字母、下划线以及数字但必须以一个大写字母开头比如 SYNADM 、 SYN_ADM 或 SYNAD0 是合法的 sYNAMDA 或 1SYNAD 是不合法的 item 按中文翻译是项目在这里我们可以译成成员如果一个别名下有多个成员成员与成员之间通过半角 , 号分隔成员 在必须是有效并事实存在的。什么是有效的呢比如主机名可以通过 w 查看用户的主机名或 ip 地址如果您只是本地 机操作只通过 hostname 命令就能查看用户名当然是在系统中存在的在 /etc/paswd 中必须存在对于定义命令别名 成员也必须在系统中事实存在的文件名需要绝对路径 item 成员受别名类型 Host_Alias 、 User_Alias 、 Runas_Alias 、 Cmnd_Alias 制约定义什么类型的别名就要有什么类型的 成员相配。我们用 Host_Alias 定义主机别名时成员必须是与主机相关相关联比如是主机名包括远程登录的主机名、 ip 地址单个或整段、掩码等当用户登录时可以通过 w 命令来查看登录用户主机信息用 User_Alias 和 Runas_Alias 定义时必须要用系统用户做为成员用 Cmnd_Alias 定义执行命令的别名时必须是系统存在的文件文件名可以用通配 符表示配置 Cmnd_Alias 时命令需要绝对路径 其中 Runas_Alias 和 User_Alias 有点相似但与 User_Alias 绝对不是同一个概念 Runas_Alias 定义的是某个系统用户 可以 sudo 切换身份到 Runas_Alias 下的成员我们在授权规则中以实例进行解说 别名规则是每行算一个规则如果一个别名规则一行容不下时可以通过 \ 来续行同一类型别名的定义一次也可以定义几 个别名他们中间用 : 号分隔 Host_Alias HT01localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24 注定义主机别名 HT01通过号列 出成员 Host_Alias HT02st09,st10 注主机别名 HT02有两个成员 Host_Alias HT01localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24:HT02st09,st10 注上面的两条对 主机的定义可以通过一条来实现别名之间用:号分割 注我们通过 Host_Alias 定义主机别名时项目可以是主机名、可以是单个 ip 整段 ip 地址也可以也可以是网络掩码 如果是主机名必须是多台机器的网络中而且这些机器得能通过主机名相互通信访问才有效。那什么才算是通过主机名相 互通信或访问呢比如 ping 主机名或通过远程访问主机名来访问。在我们局域网中如果让计算机通过主机名访问通信 必须设置 /etc/hosts /etc/resolv.conf 还要有 DNS 做解析否则相互之间无法通过主机名访问在设置主机别名时如果 项目是中某个项目是主机名的话可以通过 hostname 命令来查看本地主机的主机名通过 w 命令查来看登录主机是来源 通过来源来确认其它客户机的主机名或 ip 地址对于主机别名的定义看上去有点复杂其实是很简单。 如果您不明白 Host_Alias 是怎么回事也可以不用设置主机别名在定义授权规则时通过 ALL 来匹配所有可能出现的主机情 况。如果您把主机方面的知识弄的更明白的确需要多多学习。 User_Alias SYSADbeinan,linuxsir,bnnnb,lanhaitun 注定义用户别名下有四个成员要在系统中确实在存在的 User_Alias NETADbeinan,bnnb 注定义用户别名 NETAD 我想让这个别名下的用户来管理网络所以取了 NETAD 的 别名 User_Alias WEBMASTERlinuxsir 注定义用户别名 WEBMASTER我想用这个别名下的用户来管理网站 User_Alias SYSADbeinan,linuxsir,bnnnb,lanhaitun:NETADbeinan,bnnb:WEBMASTERlinuxsir 注上面三行的别名 定义可以通过这一行来实现请看前面的说明是不是符合 Cmnd_Alias USERMAG/usr/sbin/adduser,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod 注意命令别名下的成员必须是文件或目录的绝对路径 Cmnd_Alias DISKMAG/sbin/fdisk,/sbin/parted Cmnd_Alias NETMAG/sbin/ifconfig,/etc/init.d/network Cmnd_Alias KILL /usr/bin/kill Cmnd_Alias PWMAG /usr/sbin/reboot,/usr/sbin/halt Cmnd_Alias SHELLS /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \ /usr/local/bin/tcsh, /usr/bin/rsh, \ /usr/local/bin/zsh 注这行定义命令别名有点长可以通过 \ 号断行 Cmnd_Alias SU /usr/bin/su,/bin,/sbin,/usr/sbin,/usr/bin 在上面的例子中有 KILL 和 PWMAG 的命令别名定义我们可以合并为一行来写也就是等价行 Cmnd_Alias KILL /usr/bin/kill:PWMAG /usr/sbin/reboot,/usr/sbin/halt 注这一行就代表了 KILL 和 PWMAG 命令别名把 KILL 和 PWMAG 的别名定义合并在一行写也是可以的 Runas_Alias OP root, operator Runas_Alias DBADMmysql:OP root, operator 注这行是上面两行的等价行至于怎么理解 Runas_Alias 我们必须 得通过授权规则的实例来理解 3.4.4 、 /etc/sudoers 中的授权规则 授权规则是分配权限的执行规则我们前面所讲到的定义别名主要是为了更方便的授权引用别名如果系统中只有几个用户 其实下放权限比较有限的话可以不用定义别名而是针对系统用户直接直接授权所以在授权规则中别名并不是必须的 授权规则并不是无章可寻我们只说基础一点的比较简单的写法如果您想详细了解授权规则写法的请参看 man sudoers 授权用户 主机命令动作 这三个要素缺一不可但在动作之前也可以指定切换到特定用户下在这里指定切换的用户要用 ( ) 号括起来如果不需要密 码直接运行命令的应该加 NOPASSWD: 参数但这些可以省略举例说明 实例一 beinan ALL/bin/chown,/bin/chmod 如果我们在 /etc/sudoers 中添加这一行表示 beinan 可以在任何可能出现的主机名的系统中可以切换到 root 用户下执行 /bin/chown 和 /bin/chmod 命令通过 sudo -l 来查看 beinan 在这台主机上允许和禁止运行的命令 值得注意的是在这里省略了指定切换到哪个用户下执行 /bin/shown 和 /bin/chmod 命令在省略的情况下默认为是切换到 root 用户下执行同时也省略了是不是需要 beinan 用户输入验证密码如果省略了默认为是需要验证密码。 为了更详细的说明这些我们可以构造一个更复杂一点的公式 授权用户 主机 [( 切换到哪些用户或用户组 )] [ 是否需要密码验证 ] 命令 1,[( 切换到哪些用户或用户组 )] [ 是否需要密码验证 ] [ 命令 2],[( 切换到哪些用户或用户组 )] [ 是否需要密码验证 ] [ 命令 3]...... 注解 凡是 [ ] 中的内容是可以省略命令与命令之间用 , 号分隔通过本文的例子可以对照着看哪些是省略了哪些地方需要有 空格 在 [( 切换到哪些用户或用户组 )] 如果省略则默认为 root 用户如果是 ALL 则代表能切换到所有用户注意要切换到的 目的用户必须用 () 号括起来比如 (ALL) 、 (beinan) 实例二 beinan ALL(root) /bin/chown, /bin/chmod 如果我们把第一个实例中的那行去掉换成这行表示的是 beinan 可以在任何可能出现的主机名的主机中可以切换到 root 下执行 /bin/chown 可以切换到任何用户招执行 /bin/chmod 命令通过 sudo -l 来查看 beinan 在这台主机上允许和禁止运 行的命令 实例三 beinan ALL(root) NOPASSWD: /bin/chown,/bin/chmod 如果换成这个例子呢表示的是 beinan 可以在任何可能出现的主机名的主机中可以切换到 root 下执行 /bin/chown 不需 要输入 beinan 用户的密码并且可以切换到任何用户下执行 /bin/chmod 命令但执行 chmod 时需要 beinan 输入自己的密 码通过 sudo -l 来查看 beinan 在这台主机上允许和禁止运行的命令 关于一个命令动作是不是需要密码我们可以发现在系统在默认的情况下是需要用户密码的除非特加指出不需要用户需要 输入自己密码所以要在执行动作之前加入 NOPASSWD: 参数 有可能有的弟兄对系统管理的命令不太懂不知道其用法这样就影响了他对 sudoers 定义的理解下面我们再举一个最简 单最有说服务力的例子 实例四 比如我们想用 beinan 普通用户通过 more /etc/shadow 文件的内容时可能会出现下面的情况 [beinanlocalhost ~]$ more /etc/shadow /etc/shadow: 权限不够 这时我们可以用 sudo more /etc/shadow 来读取文件的内容就就需要在 /etc/soduers 中给 beinan 授权 于是我们就可以先 su 到 root 用户下通过 visudo 来改 /etc/sudoers 比如我们是以 beinan 用户登录系统的 [beinanlocalhost ~]$ su Password: 注在这里输入 root 密码 下面运行 visodu [rootlocalhost beinan]# visudo 注运行 visudo 来改 /etc/sudoers 加入如下一行退出保存退出保存在这里要会用 vi visudo 也是用的 vi 编辑器至于 vi 的用法不多说了 beinan ALL/bin/more 表示 beinan 可以切换到 root 下执行 more 来查看文件 退回到 beinan 用户下用 exit 命令 [rootlocalhost beinan]# exit exit [beinanlocalhost ~]$ 查看 beinan 的通过 sudo 能执行哪些命令 [beinanlocalhost ~]$ sudo -l Password: 注在这里输入 beinan 用户的密码 User beinan may run the following commands on this host: 注在这里清晰的说明在本台主机上beinan 用户可以以 root 权限运行 more 在 root 权限下的 more 可以查看任何文本文件的内容的 (root) /bin/more 最后我们看看是不是 beinan 用户有能力看到 /etc/shadow 文件的内容 [beinanlocalhost ~]$ sudo more /etc/shadow beinan 不但能看到 /etc/shadow 文件的内容还能看到只有 root 权限下才能看到的其它文件的内容比如 [beinanlocalhost ~]$ sudo more /etc/gshadow 对于 beinan 用户查看和读取所有系统文件中我只想把 /etc/shadow 的内容可以让他查看可以加入下面的一行 beinan ALL/bin/more /etc/shadow 题外话有的弟兄会说我通过 su 切换到 root 用户就能看到所有想看的内容了哈哈对啊。但咱们现在不是在讲述 sudo 的用法吗如果主机上有多个用户并且不知道 root 用户的密码但又想查看某些他们看不到的文件这时就需要管理员授权 了这就是 sudo 的好处 实例五练习用户组在 /etc/sudoers 中写法 如果用户组出现在 /etc/sudoers 中前面要加 % 号比如 %beinan 中间不能有空格 %beinan ALL/usr/sbin/*,/sbin/* 如果我们在 /etc/sudoers 中加上如上一行表示 beinan 用户组下的所有成员在所有可能的出现的主机名下都能切换到 root 用户下运行 /usr/sbin 和 /sbin 目录下的所有命令 实例六练习取消某类程序的执行 取消程序某类程序的执行要在命令动作前面加上 ! 号 在本例中也出现了通配符的 * 的用法 beinan ALL/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk 注把这行规则加入到/etc/sudoers 中但您得有 beinan 这个用 户组并且 beinan 也是这个组中的才行 本规则表示 beinan 用户在所有可能存在的主机名的主机上运行 /usr/sbin 和 /sbin 下所有的程序但 fdisk 程序除外 [beinanlocalhost ~]$ sudo -l Password: 注在这里输入 beinan 用户的密码 User beinan may run the following commands on this host: (root) /usr/sbin/* (root) /sbin/* (root) !/sbin/fdisk [beinanlocalhost ~]$ sudo /sbin/fdisk -l Sorry, user beinan is not allowed to execute /sbin/fdisk -l as root on localhost. 注不能切换到 root 用户下运行 fdisk 程序 实例七别名的运用的实践 假如我们就一台主机 localhost 能通过 hostname 来查看我们在这里就不定义主机别名了用 ALL 来匹配所有可能出现的 主机名并且有 beinan 、 linuxsir 、 lanhaitun 用户主要是通过小例子能更好理解 sudo 虽然简单好用但能把说的明白的 确是件难事最好的办法是多看例子和 man soduers User_Alias SYSADERbeinan,linuxsir,%beinan User_Alias DISKADERlanhaitun Runas_Alias OProot Cmnd_Alias SYDCMD/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root Cmnd_Alias DSKCMD/sbin/parted,/sbin/fdisk 注定义命令别名 DSKCMD下有成员 parted 和 fdisk SYSADER ALL SYDCMD,DSKCMD DISKADER ALL(OP) DSKCMD 注解 第一行 定义用户别名 SYSADER 下有成员 beinan 、 linuxsir 和 beinan 用户组下的成员用户组前面必须加 % 号 第二行 定义用户别名 DISKADER 成员有 lanhaitun 第三行 定义 Runas 用户也就是目标用户的别名为 OP 下有成员 root 第四行 定义 SYSCMD 命令别名成员之间用 , 号分隔最后的 !/usr/bin/passwd root 表示不能通过 passwd 来更改 root 密 码 第五行 定义命令别名 DSKCMD 下有成员 parted 和 fdisk 第六行 表示授权 SYSADER 下的所有成员在所有可能存在的主机名的主机下运行或禁止 SYDCMD 和 DSKCMD 下定义 的命令。更为明确遥说 beinan 、 linuxsir 和 beinan 用户组下的成员能以 root 身份运行 chown 、 chmod 、 adduser 、 passwd 但不能更改 root 的密码也可以以 root 身份运行 parted 和 fdisk 本条规则的等价规则是 beinan,linuxsir,%beinan ALL/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk 第七行 表示授权 DISKADER 下的所有成员能以 OP 的身份来运行 DSKCMD 不需要密码更为明确的说 lanhaitun 能以 root 身份运行 parted 和 fdisk 命令其等价规则是 lanhaitun ALL(root) /sbin/parted,/sbin/fdisk 可能有的弟兄会说我想不输入用户的密码就能切换到 root 并运行 SYDCMD 和 DSKCMD 下的命令那应该把把 NOPASSWD: 加在哪里为好理解下面的例子吧能明白的 SYSADER ALL NOPASSWD: SYDCMD, NOPASSWD: DSKCMD 3.4.5 、 /etc/sudoers 中其它的未尽事项 在授权规则中还有 NOEXEC: 和 EXEC 的用法自己查 man sudoers 了解还有关于在规则中通配符的用法也是需要了 解的。这些内容不多说了毕竟只是一个入门性的文档。 soduers 配置文件要多简单就有多简单要多难就有多难就看自己 的应用了。 3.4.6 、 sudo 的用法 我们在前面讲的 /etc/sudoers 的规则写法最终的目的是让用户通过 sudo 读取配置文件中的规则来实现匹配和授权以便替 换身份来进行命令操作进而完成在其权限下不可完成的任务 我们只说最简单的用法更为详细的请参考 man sudo sudo [ 参数选项 ] 命令 -l 列出用户在主机上可用的和被禁止的命令一般配置好 /etc/sudoers 后要用这个命令来查看和测试是不是配置正确的 -v 验证用户的时间戳如果用户运行 sudo 后输入用户的密码后在短时间内可以不用输入口令来直接进行 sudo 操作 用 -v 可以跟踪最新的时间戳 -u 指定以以某个用户执行特定操作 -k 删除时间戳下一个 sudo 命令要求用求提供密码 举列 首先我们通过 visudo 来改 /etc/sudoers 文件加入下面一行 beinan,linuxsir,%beinan ALL/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk 然后列出 beinan 用户在主机上通过 sudo 可以切换用户所能用的命令或被禁止用的命令 [beinanlocalhost ~]$ sudo -l 注列出用户在主机上能通过切换用户的可用的或被禁止的命令 Password: 注在这里输入您的用户密码 User beinan may run the following commands on this host: (root) /bin/chown 注可以切换到 root 下用 chown 命令 (root) /bin/chmod 注可以切换到 root 下用 chmod 命令 (root) /usr/sbin/adduser 注可以切换到 root 下用 adduser 命令 (root) /usr/bin/passwd [A-Za-z]* 注可以切换到 root 下用 passwd 命令 (root) !/usr/bin/passwd root 注可以切换到 root 下但不能执行 passwd root 来更改 root 密码 (root) /sbin/parted 注可以切换到 root 下执行 parted (root) /sbin/fdisk 注可以切换到 root 下执行 fdisk 通过上面的 sudo -l 列出可用命令后我想通过 chown 命令来改变 /opt 目录的属主为 beinan [beinanlocalhost ~]$ ls -ld /opt 注查看/opt 的属主 drwxr-xr-x 26 root root 4096 10 月 27 10:09 /opt 注得到的答案是归属 root 用户和 root 用户组 [beinanlocalhost ~]$ sudo chown beinan:beinan /opt 注通过 chown 来改变属主为 beinan 用户和 beinan 用户组 [beinanlocalhost ~]$ ls -ld /opt 注查看/opt 属主是不是已经改变了 drwxr-xr-x 26 beinan beinan 4096 10 月 27 10:09 /opt 我们通过上面的例子发现 beinan 用户能切换到 root 后执行改变用户口令的 passwd 命令但上面的 sudo -l 输出又明文写着 不能更改 root 的口令也就是说除了 root 的口令 beinan 用户不能更改外其它用户的口令都能更改。下面我们来测试 对于一个普通用户来说除了更改自身的口令以外他不能更改其它用户的口令。但如果换到 root 身份执行命令则可以更 改其它用户的口令 比如在系统中有 linuxsir 这个用户 , 我们想尝试更改这个用户的口令 [beinanlocalhost ~]$ passwd linuxsir 注不通过 sudo 直接运行 passwd 来更改 linuxsir 用户的口令 passwd: Only root can specify a user name. 注失败提示仅能通过 root 来更改 [beinanlocalhost ~]$ sudo passwd linuxsir 注我们通过/etc/sudoers 的定义让 beinan 切换到 root 下执行 passwd 命令来改变 linuxsir 的口令 Changing password for user linuxsir. New UNIX password: 注输入新口令 Retype new UNIX password: 注再输入一次 passwd: all authentication tokens updated successfully. 注改变成功 后记 本文是用户管理的文档的重要组成部份我计划在明天开始写用户管理控制工具比如 useradd 、 userdel 、 usermod 也就 是管理用户的工具介绍当然我还会写用户查询工具等与用户管理相关的 4 、权限命令 4.1 、 chmod 文件或者目录的用户能够使用 chmod 命令修改文件的权限。 Chmod 命令有两种方式一种是字符方 式使用字符来修改文件的权限另外一种是数字方式使用 3 个数字的组合来修改文件的权限。 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以借以控制档 案如何被他人所调用。 参数 : mode : 权限设定字串格式如下 : [ugoa...][[-][rwxX]...][,...] 其中 u 表示该档案的拥有者 g 表示与该档案的拥有者属于同一个群体 (group) 者 o 表示其他以外的人 a 表 示这三者皆是。 表示增加权限、 - 表示取消权限、 表示唯一设定权限。 r 表示可读取 w 表示可写入 x 表示可执行 X 表示只有当该档案是个子目录或者该档案已经被设定 过为可执行。 -c : 若该档案权限确实已经更改才显示其更改动作 -f : 若该档案权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R : 对目前目录下的所有档案与子目录进行相同的权限变更 ( 即以递回的方式逐个变更 ) --help : 显示辅助说明 --version : 显示版本 范例 : 将档案 file1.txt 设为所有人皆可读取 : chmod ugor file1.txt 将档案 file1.txt 设为所有人皆可读取 : chmod ar file1.txt 将档案 file1.txt 与 file2.txt 设为该档案拥有者与其所属同一个群体者可写入但其他以外的人则不 可写入 : chmod ugw,o-w file1.txt file2.txt 将 ex1.py 设定为只有该档案拥有者可以执行 : chmod ux ex1.py 将目前目录下的所有档案与子目录皆设为任何人可读取 : chmod -R ar * 数字方式的基本语法是 chmod nnn 文件 其中第 1 、 2 、 3 个 n 分别表示用户、组成员和所有其它用户。各个位置上的 n 要么是一个 0 或者是一 个由赋予权限的相关值相加得到的单个阿拉伯数字之和。这些数字的意义如表 1 所示。 值 表示的意义 4 表示文件或者目录的读权限 2 表示文件或者目录的写权限 1 表示文件或者目录的执行权限 很显然当使用数字方式时这 3 个数字必须为 0 至 7 中的一个。 若要 rwx 属性则 4217 若要 rw- 属性则 426 若要 r-x 属性则 417 。 范例 chmod arwx file 和 chmod 777 file 效果相同 chmod ugrwx,ox file 和 chmod 771 file 效果相同 若用 chmod 4755 filename 可使此程序具有 root 的权限 4.2 、 umask 很显然系统中各种文件的权限设置对特定用户的数据安全有很大影响。但是要求用户逐一明确设 置系统中每个文件的权限也是不现实的为此需要使用 umask 命令该命令可以为用户账号中新文 件的创建进行缺省设置。系统管理员必须要为你设置一个合理的 u m a s k 值以确保你创建的文件具有 所希望的缺省权限防止其他非同组用户对你的文件具有写权限。具体来说 umask 是用来设置权限掩 码的权限掩码由 3 个数字组成将现有的存取权限减掉权限掩码后即可产生建立文件时默认的权限。 语 法 umask [-S][ 权限掩码 ] 补充说明 umask 可用来设定 [ 权限掩码 ] 。 [ 权限掩码 ] 是由 3 个八进制的数字所组成将现有的存 取权限减掉权限掩码后即可产生建立文件时预设的权限。 参 数 -S 以文字的方式来表示权限掩码。 登录之后可以按照个人的偏好使用 u m a s k 命令来改变文件创建的缺省权限。相应的改变直到退 出该 s h e l l 或使用另外的 u m a s k 命令之前一直有效。一般来说 u m a s k 命令是在 / e t c / p r o f i l e 文件中设置的每个用户在登录时都会引用这个文件所以如果希望改变所有用户的 u m a s k 可以在 该文件中加入相应的条目。如果希望永久性地设置自己的 u m a s k 值那么就把它放在自己 $ H O M E 目录下的 . p r o f i l e 或 . b a s h _ p r o f i l e 文件中。 如何计算 umask 值 u m a s k 命令允许你设定文件创建时的缺省模式对应每一类用户 ( 文件属主、同组用户、其他用 户 ) 存在一个相应的 u m a s k 值中的数字。对于文件来说这一数字的最大值分别是 6 。系统不允许你 在创建一个文本文件时就赋予它执行权限必须在创建后用 c h m o d 命令增加这一权限。目录则允许 设置执行权限这样针对目录来说 u m a s k 中各个数字最大可以到 7 。该命令的一般形式为 umask nnn 其中 n n n 为 u m a s k 置 0 0 0 - 7 7 7 。 计算 u m a s k 值可以有几种计算 u m a s k 值的方法通过设置 u m a s k 值可以为新创建的文 件和目录设置缺省权限。 例如对于 u m a s k 值 0 0 2 相应的文件和目录缺省创建权限是什么呢 第一步我们首先写下具有全部权限的模式即 7 7 7 ( 所有用户都具有读、写和执行权限 ) 。 第二步在下面一行按照 u m a s k 值写下相应的位在本例中是 0 0 2 。 第三步在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。稍加练习 就能够记住这种方法。 第四步对于文件来说在创建时不能具有文件权限只要拿掉相应的执行权限比特即可。 这就是上面的例子其中 u m a s k 值为 0 0 2 1) 文件的最大权限 rwx rwx rwx (777) 2) umask 值为 0 0 2 - - - - - - -w- 3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限 4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限 系统默认的 umask 码是 0022 也就是目录 755(rwx,rx,rx) 文件 644(rw,r,r) 。 umask 码的换算 0022 0755 0777 对应默认目录权限 反之 0777 - 0755 0022 0022 0644 0111 0777 对应默认文件权限 反之 0777 - 0111 - 0644 0022 哈哈 ~~ 简单吧假如我们要将默认目录权限设置为 744 那么对应的 umask 是 0777 - 0744 0033 然后执行 umask 0033 命令就将 umask 码改成 0033 了。 下面是另外一个例子假设这次 u m a s k 值为 0 2 2 1) 文件的最大权限 rwx rwx rwx (777) 2 ) u m a s k 值为 0 2 2 - - - -w- -w- 3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限 4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限 下面是常用的 u m a s k 值及对应的文件和目录权限 umask 值 目录 文件 0 2 2 7 5 5 6 4 4 0 2 7 7 5 0 6 4 0 0 0 2 7 7 5 6 6 4 0 0 6 7 7 1 6 6 0 0 0 7 7 7 0 6 6 0 如果想知道当前的 umask 值可以使用 u m a s k 命令如果想要改变 u m a s k 值只要使用 u m a s k 命令设置一个新的值即可 $ umask 002 确认一下系统是否已经接受了新的 u m a s k 值在使用 u m a s k 命令之前一定要弄清楚到底希望 具有什么样的文件 / 目录创建缺省权限。否则可能会得到一些非常奇怪的结果例如如果将 u m a s k 值设置为 6 0 0 那么所创建的文件 / 目录的缺省权限就是 0 6 6 除非你有特殊需要否则没有必要去管 他系统默认的值“ 022 ” umask 是用的掩码至于掩码的概念从基础学吧这里不说了。 linux 中的文件 / 目录许可是用 4 位八进制数表示的。其中第一个八进制数用来表示特殊许可设置 第二个数字用来设置文件所有者的许可第三个数字用来设置组许可第四个数字用来设置所有人的许 可。 例如 root 的权限为 777 若权限掩码设为 022 那么两都相减后可得 755 。下面是在我的系统更 改 umask 的一些情况 [rootlinuxserver root]# umask 022 上述命令显示表示我的系统的 umask 值为 022 。 [rootlinuxserver root]# umask -S urwx,grx,orx 当 umask 值为 022 时默认情况下各用户的权限。注意这里的参数“ S ”是大写。 [rootlinuxserver root]# umask 177 [rootlinuxserver root]# umask -S urw,g,o 上述两行命令把 umask 值改为 177 结果只有文件所有者具有读写文件的权限其它用户不能访问 该文件。这显然是一种非常安全的状态。 4.3 、 chown chown 命令用途更改与文件关联的所有者或组。 语法 chown[ -f ] [ -h] [ -R ] Owner [ :Group ] { File ... | Directory ... } 描述 chown 命令将 File 参数指定的文件的所有者更改为 Owner 参数指定的用户。 Owner 参数的值可 以是可在 /etc/passwd 文件中找到的用户标识或登录名。还可以选择性地指定组。 Group 参数的值可以是可 在 /etc/group 文件中找到的组标识或组名。 只有 root 用户可以更改文件的所有者。只在您是 root 用户或拥有该文件的情况下才可以更改文件的 组。如果拥有文件但不是 root 用户则只可以将组更改为您是其成员的组。 虽然 -H 、 -L 和 -P 标志是互斥的指定不止一个也不认为是错误。指定的最后一个标志确定命令拟稿 将演示的操作。 参数 -f 禁止除用法消息之外的所有错误消息。 -h 更改遇到的符号链接的所有权而非符号链接指向的文件或目录的所有权。 当遇到符号链接而您未 指定 -h 标志时 chown 命令更改链接指向的文件或目录的所有权而非链接本身的所有权。如果指定 -R 标志 chown 命令递归地降序指定的目录。 -H 如果指定了 -R 选项并且引用类型目录的文件的符 号链接在命令行上指定 chown 变量会更改由符号引用的目录的用户标识和组标识如果已指定 和所有在该目录下的文件层次结构中的所有文件。 -L 如果指定了 -R 选项并且引用类型目录的文件的符号在命令行上指定或在遍历文件层次结构期间遇 到 chown 命令会更改由符号链接引用的目录的用户标识和组标识如果已指定和在该目录之下 的文件层次结构中的所有文件。 -P 如果指定了 -R 选项并且符号链接在命令行上指定或者在遍历文件层次结构期间遇到则如果系统 支持该操作则 chown 命令会更改符号链接的所有者标识和组标识如果已指定。 chown 命令不 会执行至文件层次结构的任何其它部分的符号链接。 -R 递归地降序目录更改每个文件的所有权。当遇到符号链接并且链接指向目录时更改该目录的所 有权但不进一步遍历目录。不过 -h 、 -H 、 -L or -P 标志也未指定则当遇到符号链接并且该链接指向 到目录时该目录的组所有权更改但不会进一步遍历目录。 安全性访问控制此程序应该作为 “ 可信计 算基 ” 中的正常用户程序安装。退出状态该命令返回以下出口值 0 命令执行成功并已执行所有请求的 更改。 0 发生错误。 示例 要更改文件 program.c 的所有者 chown jim program.cprogram.c 的用户访问权限现在应用到 jim 。作 为所有者 jim 可以使用 chmod 命令允许或拒绝其他用户访问 program.c 。 要将目录 /tmp/src 中所有文件的所有者和组更改为用户 john 和组 build chown -R john:build /tmp/src 文件 将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie : chown jessie:users file1.txt 将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport : chmod -R lamport:users * 4.4 、 chgrp 功能说明变更文件或目录的所属群组。 语 法 chgrp [-cfhRv][--help][--version][ 所属群组 ][ 文件或目录 ...] 或 chgrp [-cfhRv][--help][--reference 参 考文件或目录 ][--version][ 文件或目录 ...] 补充说明在 UNIX 系统家族里文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用 chgrp 指 令去变更文件与目录的所属群组设置方式采用群组名称或群组识别码皆可。 参 数 -c 或 --changes 效果类似 -v 参数但仅回报更改的部分。 -f 或 --quiet 或 --silent 不显示错误信息。 -h 或 --no-dereference 只对符号连接的文件作修改而不更动其他任何相关文件。 -R 或 --recursive 递归处理将指定目录下的所有文件及子目录一并处理。 -v 或 --verbose 显示指令执行过程。 --help 在线帮助。 --reference 参考文件或目录 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相 同。 --version 显示版本信息。 范例 [rootlinux ~]# chgrp users install.log [rootlinux ~]#ls –l -rw-r--r-- 1 root users 28490 Jun 25 08:53 install.log [rootlinux ~]#chgrp testing install.log chgrp:invalid group name ‘testing’ 出现错误信息找不到这个用户组名 发现了吗文件的用户组被改成了 users 了但要改成 testing 的时候就会发生错误。注意出现错误信 息后要检查错误信息的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站常规seo优化步骤网店图片怎么制作

1. 概念 享元模式是一种结构型设计模式,它通过共享技术有效地支持大量细粒度对象的复用。 2. 原理结构图 图1 图2 2. 1 角色 抽象享元(Flyweight):这是所有具体享元类的基类,它定义了享元对象的内部状态和外部状…

广州seo网站推广费用软件项目管理计划书

接着前面的文章,这篇文章就来说说menory alignment -- 内存对齐. 一、为什么需要内存对齐? 无论做什么事情,我都习惯性的问自己:为什么我要去做这件事情? 是啊,这可能也是个大家都会去想的问题,…

iis 创建网站大连企业信息

181/2461/8938产品概述: E4990A 阻抗分析仪具有 20 Hz 至 120 MHz 的频率范围,可在宽阻抗范围内提供出色的 0.045%(典型值)基本准确度,并内置 40 V 直流偏置源,适用于元器件、半导体和材料测量。 无论研发、生产、质…

重庆知名做网站的公司北京移动端网站优化

参考链接 FFmpeg源代码简单分析:内存的分配和释放(av_malloc()、av_free()等)_雷霄骅的博客-CSDN博客_av_malloc 内容介绍 内存操作的常见函数位于libavutil\mem.c中本文记录最常使用的几个函数: av_malloc()av_realloc()av_mal…

深圳网站设计公司专业吗中山网络公关

这份文件是关于DS3231SN芯片的数据手册,由Maxim Integrated公司生产。DS3231SN是一款高精度的I2C接口集成实时时钟(RTC)/温度补偿晶体振荡器(TCXO)/晶体的芯片。以下是该芯片的核心内容概述: 产品概述&…

张掖作风建设年网站备案网站制作

文章目录 功能描述实现代码 功能描述 有以下xml内容&#xff0c;需要转成String字符串。同时&#xff0c;要去掉文中所有格式。 <root><student><name>张三</name><sex>男</sex><age>16</age><class>1班</class>…

网站内嵌地图商丘网商丘网络第一媒体

文/圆梦志愿 伏老师众所周知&#xff0c;选科是我国新高考中最重要的事情之一&#xff0c;且涉及到了多门选考科目。其中&#xff0c;要数物理的话题性相对最强。那么&#xff0c;高考选科是不是物理特别重要&#xff1f;新高考没有选物理是不是完了&#xff1f;一、高考选科是…

三门峡市湖滨区建设局网站深圳网站seo关键词

4、zabbix添加监控项 nginx监控 在server上安装nginx 添加模板 浏览图形 mysql监控 zabbix自带mysql模板&#xff0c;所以可以在server1上直接做 创建数据库连接用户 percona数据库模板 清理掉mysql的模块链接 安装并配置好percona的数据库模板 测试脚本 删除tmp下的缓存文…

哪些网站可以做详情页洛阳做家教去什么网站

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1&#xff09;菜单实现 2&#xff09;进度条实现 3&#xff09;main函数实现 4&#xff09;Game函数 5&#xff0…

珠海网站建设技术支持迁西县住房和城乡规划建设局网站

12月6日&#xff0c;浙江省经信厅公示了2023年浙江省信息技术应用创新典型案例入围名单。本次案例征集活动&#xff0c;由浙江省经信厅、省密码管理局、工业和信息化部网络安全产业发展中心联合组织开展&#xff0c;共遴选出24个优秀典型解决方案&#xff0c;迪捷软件“基于全数…

全网营销网站建设惠城网站制作

在 C# 中&#xff0c;IServiceCollection 是 ASP.NET Core 中用于依赖注入的接口。依赖注入是一种设计模式&#xff0c;它允许对象之间的依赖关系由外部组件管理&#xff0c;而不是在对象内部直接创建它们的依赖项。IServiceCollection 接口用于注册和配置应用程序中的服务。 …

网站建设鼠标移动变颜色传奇176网页游戏

前情提要&#xff0c;如果看了书本&#xff0c;这个lab难度不高&#xff0c;但是如果不看书&#xff0c;难度还是挺高的&#xff0c;并且这个lab会用到cachelab中学到的东西&#xff0c;需要阅读 第十章&#xff1a;系统编程第十一章&#xff1a;网络编程第十二章&#xff1a;…

西宁网站建设最好的公司校园加盟网站建设

机器视觉应用开发是指利用计算机视觉技术进行图像或视频数据处理和分析&#xff0c;实现自动化、智能化的应用程序开发。下面是机器视觉应用开发的一般步骤和常见任务。 需求分析&#xff1a;明确开发的机器视觉应用的具体需求和目标&#xff0c;例如人脸识别、目标检测、图像分…

做英语四级题的网站谷歌广告上海有限公司官网

对于网页编程来说&#xff0c;最重要的就是存取和读写数据了。存储方式可能有很多种&#xff0c;可以是字符串、数组、文件的形式等&#xff0c;今天学习了数组&#xff0c;可以说是PHP的数据应用中较重要的一种方式。PHP的数组函数众多&#xff0c;下面是我学习的小结&#xf…

黄浦企业网站制作wordpress添加语系

添加系统用户 useradd samba 添加samba用户 smbpasswd -a samba 激活samba用户 smbpasswd -e samba 1.winr运行secpol.msc打开本地安全策略 2.安全策略->本地策略->安全选项 3.右侧找到 网络安全:LAN管理器身份验证级别 打开 &#xff0c;选择 仅发送NTLMv2响应&#xf…

app下载官方网站英文外贸网站制作

[vue] 说下你对指令的理解&#xff1f; 指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况&#xff0c;稍后我们再讨论)。指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&a…

医院网站建设联系方式营销型网站建设公司排名

Typescript允许你覆盖它的判断&#xff0c;并且能以任何你想要的方式分析它&#xff0c;这种机制被称为类型断言。 类型断言的两种方式&#xff1a; 1.as关键字 interface SquareConfig {color?: string;width?: number; }function createSquare(config: SquareConfig) {/…

企业门户网站需求模板网站建设开发方案

toFixed() 转载于:https://www.cnblogs.com/ytg1120/p/7101317.html

怎样创办一个网站重庆网络公司流程

这是Project Student的一部分。 其他帖子包括带有Jersey的Webservice Client&#xff0c;带有Jersey的 Webservice Server和带有Spring Data的Persistence 。 RESTful Webapp洋葱的第三层是业务层。 这就是应用程序的精髓所在–编写良好的持久性和Web服务层受到约束&#xff0…

乌镇网站建设标书网络营销手段有哪些

一、什么是湖仓一体&#xff08;Lakehouse&#xff09;&#xff1f; 湖仓一体是一种融合了数据湖的灵活存储能力与数据仓库的高效分析功能的现代数据架构。它通过整合两者的优势&#xff0c;解决了传统架构的局限性&#xff0c;为企业数据处理提供了更全面的解决方案。 数据湖…