权限属性。因为它们是同一个文件。
⑵对软连接的访问权限修改只改变了被连接文件的权限属性,连接文件自身的访问权限并没有被修改,仍是777。
五、 用户的默认访问权限和umask
用户在创建新文件时,系统通常按默认值赋予其权限:
普通用户
目录
一般文件
root 755 644 影响用户的权限默认值的是个与用户相关的系统值umask。 Root的umask=022,普通用户的umask=002
目录的默认权限等于:777与umask反码;(777减去umask) 文件的默认权限等于:666与umask反码。(666减去umask) 不带参数地执行umask将显示当前用户的umask值。 umask 新值 可改变当前用户的umask值,
例:umask 222 令当前用户umask=222,任何人都不可写 说明:
⑴umask只与用户有关,与当前在哪个目录无关。 ⑵只能改变自己的umask,并且只对自己的本次登录有效。下次登录umask还是原值。所以修改的意义似乎不大。 ⑶注意:“减去umask”的说法只是一些书籍上为不熟悉布尔代数的初学者提供的一种权宜的助记方法,该说法其实很有问题,造成很多现象无法解释。笔者认为准确的
775 664 说法应该是:“默认的访问权限等于权限基值与上‘umask的反码’,对于新建目录和新建文件来说,其权限基值分别是777和666;但对于由拷贝操作产生的新目录和新文件来说,其权限基值就是源目录(或源文件)的原有值”。也就是将权限基值上的那些与umask中置1位相对应的权限位清零便可得到新文件的默认权限值。
六、 理解SUID和SGID
先分析一个现象:
记录用户账号信息的/etc/passwd文件其权限是:root.root 644 记录加密口令的/etc/shadow文件其权限是: root.root 400 对于普通用户passwd只能读而不能改写;shadow连读都不允许。可为什么我们可以通过passwd命令改写自己的口令? 查看一下命令程序usr/bin/passwd文件的属性: /usr/bin/passwd文件其权限是:root.root -r-s- -x- -x 这个文件是允许普通用户执行的。root的执行位是s,就是这个s使普通用户执行passwd时具有了root身份从而获得了对/etc/passwd和/etc/shadow的完全访问权(root什么权没有?)。
实际上表示Linux文件权限的是12bit,前面的3bit是: SUID:若文件可以执行,则按所有者身份运行; SGID:若文件可以执行,则按组成员身份运行; sticky:粘接位,结束后仍驻留内存。目前并不常用。
在ls –l 命令显示中的表示方法:
SUID置位:所有者的执行位的x被s取代; SGID置位:所属组的执行位的x被s取代; sticky置位:其他人的执行位的x被t取代。 所以,-r-s- -x- -x 用值表示就是4511。 注意,使用 七、
SUID和SGID位要特别小心。
第七章 Bash
一、 何谓Bash
操作
Bash(Bourne Again shell),是目前Linux上最流行的Shell。 Shell,命令语言解释器(command-language interpreter) Bash相当于DOS系统的Command.exe。
Linux上还有一些较流行的Shell,如tcsh 、pdksh等。 echo $BASH_VERSION可检查当前所用的Shell版本。 若返回出错信息则表明当前的Shell不是Bash,可执行: exec /bin/bash 令系统使用Bash
(/etc/shells文件注册了当前系统所能使用的shell清单。)
二、 在一行上顺序执行多个命令
可用分号将几个命令串联,如: mkdir mydir; cd mydir
注意:⑴用分号串联的命令个数没有固定限制;
⑵各命令依顺序执行,并非同时运行;
⑶无论前一个命令是否成功,都将执行下一个命令。
三、 引号和转义
?Linux系统中需要转义的例子:
⑴$用来表示系统环境变量,可我们需要$的本来文字意义; ⑵显示出含*、?的文件名,比如a?*,不希望按通配符解释。 这是就要使用转义符“\\”,来取特殊字符的文字意义,例:
mkdir a\\?\\*; ls –l a\\?\\* 创建a?*目录并显示其中内容 (思考:怎样显示a?*目录本身属性?) ?单引号括住的字符或字符串只具文字意义;
双引号括住的字符或字符串允许特殊字符保持其特殊意义。 例:
echo $PATH; 将显示出当前搜索路径 echo ”$PATH” 同样将显示出当前搜索路径 echo ‘$PATH’ 将显示出“$PATH” echo \\$PATH 同样将显示出“$PATH” (何时需使用单引号或双引号?如,包括空格的字符串!)
四、 设备转向(或称输入/输出重定向)
Linux文件系统的标准设备有标准输入、标准输出、标准错误。 设备名称 缩写
序号用途
读数据 显示程序输出
异常时显示错误和警告
默认连接键盘 显示器 显示器
标准输入 stdin 0 标准输出 stdout 1 标准错误 stderr 2 设备的转向就是改变其输入/输出的设备指向,例如将键盘输入转向为文件输入、将输出显示由显示器转向为文件等。 ①输出转向
输出转向操作符是>和>>,分别用于新建和追加文件。 例:ls –l /dev/hd*>result.txt
将原本输出到屏幕的结果转存入新文件result.txt。