$ chmod g=u testfile1 $ ll
-rw-rw-r-- 1 osmond osmond 0 2007-03-17 15:00 testfile1 # 对其他人添加属主具有的权限 $ chmod o+u testfile1 $ ll
-rw-rw-rw- 1 osmond osmond 0 2007-03-17 15:00 testfile1 # 对其他人取消属主具有的权限 $ chmod o-u testfile1 $ ll
-rw-rw---- 1 osmond osmond 0 2007-03-17 15:00 testfile1
使用数值设定设置文件和目录的权限
数值设定法
格式:chmod [-R] [n0]n1n2n3 <文件名或目录名> 说明:
-R:若操作对象是目录,则递归地对该目录下所有的子目录实施权限设置
其中n1代表属主的权限,n2代表组用户的权限,n3代表其他用户的权限,这三个选项都是8进制数字 权限 数值 读 写 执行 二进制 八进制 说明 - - - 000 0 没有权限 - - x 001 1 允许执行 - w - 010 2 允许写入
- w x 011 3 允许执行和写入 r - - 100 4 允许读取
r - x 101 5 允许执行和读取 r w - 110 6 允许写入和读取 r w x 111 7 允许执行写入和读取
其中 n0 是设置特殊权限的8进制数字,当不设置特殊权限时 n0 可以省略。
SUID SGID sticky 二进制 八进制 说明 - - - 000 0 不设置特殊权限 - - t 001 1 只设置sticky - s - 010 2 只设置SGID - s t 011 3 只设置SGID和sticky s - - 100 4 只设置SUID s - t 101 5 只设置SUID和sticky s s - 110 6 只设置SUID和SGID s s t 111 7 同时设置三种特殊权限 下面给出几个使用数值设置法的例子: $ touch testfile2 $ ll
Linux操作系统实训指导书--何亚森
第 16 页 共 16 页
-rw-r--r-- 1 osmond osmond 0 2007-03-17 16:25 testfile2
# 对文件的属主设置可读、写和执行权限,所属组用户和其他用户只设置读和执行的权限,没有写的权限。
$ chmod 755 testfile2 $ ll
-rwxr-xr-x 1 osmond osmond 0 2007-03-17 16:25 testfile2 # 取消组用户和其他用户对文件users1的一切权限 $ chmod 600 testfile2 $ ll
-rw------- 1 osmond osmond 0 2007-03-17 16:25 testfile2 # 为文件设置SUID和属主的执行权限 $ chmod 4700 testfile2 $ ll
-rws------ 1 osmond osmond 0 2007-03-17 16:25 testfile2
# 同时设置SUID和SGID权限,并使组用户能读、写、执行,其他人能读和执行 $ chmod 6775 testfile2 $ ll
-rwsrwsr-x 1 osmond osmond 0 2007-03-17 16:25 testfile2 # 设置 sticky权限 $ chmod 1755 testfile2 $ ll
-rwxr-xr-t 1 osmond osmond 0 2007-03-17 16:25 testfile2
改变文件的属主和组
改变文件的属主和组可以用chown命令,命令格式是: chown [-R] <用户[:组]> <文件或目录> 说明:
-R:若操作对象是目录,则递归地对该目录下所有的子目录实施设置 要单独改变组,可以使用下面的格式:(注意:组前必须有“:”) chown [-R ] <:组> <文件或目录> 例如:
$ touch testfile3 $ ll
-rw-rw-r-- 1 osmond osmond 0 Dec 14 15:19 testfile3 # 切换为超级用户 $ su
# 将文件testfile3的属主改成jason # chown jason /home/osmond/testfile3 $ ll /home/osmond/testfile3
-rw-rw-r-- 1 jason osmond 0 Dec 14 15:19 /home/osmond/testfile3 # 将文件testfile3的组改成 users # chown :users /home/osmond/testfile3 # ll /home/osmond/testfile3
-rw-rw-r-- 1 jason users 0 Dec 14 15:19 /home/osmond/testfile3
Linux操作系统实训指导书--何亚森
第 17 页 共 17 页
# 将文件testfile3的属主和组改成 osmond # chown osmond:osmond /home/osmond/testfile3 # ll /home/osmond/testfile3
-rw-rw-r-- 1 osmond osmond 0 Dec 14 15:19 /home/osmond/testfile3 # 退出 root 的登录 # exit
$ mkdir -p testdir/dir1 $ ll
drwxrwxr-x 3 osmond osmond 4096 Dec 14 15:25 testdir -rw-rw-r-- 1 osmond osmond 0 Dec 14 15:19 testfile3 # 切换为超级用户 $ su -
# 将 testdir 目录及其子目录下的所有文件或目录的属主和组都改成 apache # chown -R apache:apache /home/osmond/testdir # tree -ug /home/osmond /home/osmond/
|-- [apache apache ] testdir | `-- [apache apache ] dir1 `-- [osmond osmond ] testfile3
设置文件的缺省生成掩码
Umask
用户可以使用umask命令设置文件的缺省生成掩码。缺省的生成掩码告诉系统当创建一个文件或目录时不应该赋予其哪些权限。如果用户将 umask 命令放在环境文件(.bash_profile)中,就可以控制所有新建的文件或目录的访问权限。 umask命令的格式为: umask [u1u2u3]
其中:u1表示的是不允许属主有的权限;u2表示的是不允许同组人有的权限;u3表示的是不允许其他人有的权限。可以使用不带任何参数或带 -S 参数的umask命令查看当前的文件缺省生成掩码: $ umask 0022
$ umask -S
u=rwx,g=rx,o=rx
例如:设置允许同组用户有写权限可以如下设置 $ umask 002 $ touch testfile4 $ ll testfile4
-rw-rw-r-- 1 osmond osmond 0 2007-03-17 17:15 testfile4 $ mkdir testdir1 $ ll -d testdir1
drwxrwxr-x 2 osmond osmond 48 2007-03-17 17:20 testdir1 这与默认的不允许允许同组用户有写权限不同 $ umask 022 $ touch testfile5
Linux操作系统实训指导书--何亚森
第 18 页 共 18 页
$ ll testfile5
-rw-r--r-- 1 osmond osmond 0 2007-03-17 17:16 testfile5 $ mkdir testdir2 $ ll -d testdir2
drwxr-xr-x 2 osmond osmond 48 2007-03-17 17:18 testdir2 umask的计算:
新建文件的默认权限是0666,文件夹是0777,与权限掩码相减就得到最终权限。如0666-0022=0644 (七)使用图形界面设置文件和目录权限 操作参考教材 (八)学习文件查找
学习find命令
find 命令
find 命令用来查找文件和目录的位置。该命令的语法为: find 路径名 [选项]
find [PATH] [option] [action] 参数∶
1. 与时间有关的参数∶
-atime n ∶n 为数字,意义为在 n 天之前的『一天之内』被 access 过的文件;
-ctime n ∶n 为数字,意义为在 n 天之前的『一天之内』被 change 过状态的文件; -mtime n ∶n 为数字,意义为在 n 天之前的『一天之内』被 modification(1. 缓和,限制,减轻2. 更改,改变,修改
指文件权限被改变) 过的文件;
-newer file ∶file 为一个存在的文件,意思是说,只要文件比 file 还要新, 就会被列出来~ 2. 与使用者或群组名称有关的参数∶
-uid n ∶n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。 -gid n ∶n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在 /etc/group,相关的介绍我们会第四篇说明~ -user name ∶name 为使用者帐号名称喔!例如 dmtsai -group name∶name 为群组名称,例如 users ;
-nouser ∶寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup ∶寻找文件的拥有群组不存在于 /etc/group 的文件!
当您自行安装软体时,很可能该软体的属性当中并没有文件拥有者, 这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。 3. 与文件权限及名称有关的参数∶
-name filename∶搜寻文件名称为 filename 的文件;
-size [+-]SIZE∶搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有∶ c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是『 -size +50k 』
Linux操作系统实训指导书--何亚森
第 19 页 共 19 页
-type TYPE ∶搜寻文件的类型为 TYPE 的,类型主要有∶一般正规文件 (f), 装置文件 (b, c), 目录 (d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。
-perm mode ∶搜寻文件属性『刚好等于』 mode 的文件,这个 mode 为类似 chmod 的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode ∶搜寻文件属性『必须要全部囊括 mode 的属性』的文件,举例来说, 我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744, 当一个文件的属性为 -rwsr-xr-x ,亦即 4755 时,也会被列出来, 因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm +mode ∶搜寻文件属性『包含任一 mode 的属性』的文件,举例来说,我们搜寻 -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw------- 也会被列出来,因为他有 -rw.... 的属性存在! 4. 额外可进行的动作∶
-exec command ∶command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到 的结果。
-print ∶将结果列到萤幕上,这个动作是预设动作! 其中,常用的选项有:
-print:显示输出查找到的结果。如果未指定任何选项,则系统默认是 -print。如 find命令的最基本的用法就是列出指定目录下的所有文件和子目录: # find /usr -print
-name:按文件名查找。 -size:按文件大小查找。
例如,下面的命令将查找/usr目录下超过100k的文件: # find /usr -size 100k -user:按文件主查找。
-type: 按文件类型查找。常见的类型有: b 块特别文件 c 字符特别文件。 f 普通文件 l 符号链接文件 d 目录文件
### 不指定匹配表达式,显示所有文件
############################################################ # 递归显示当前目录的文件列表 $ find
# 递归显示 / 目录的文件列表 $ find /
# 递归显示 / 目录的文件列表(仅限于3层目录) $ find / -maxdepth 3
# 递归显示 / 目录的文件列表(仅限于 / 文件系统) $ find / -xdev
# 递归显示 /home、/www、/srv 目录的文件列表 $ find /home /www /srv
############################################################ ### 按文件名/路径名查找
Linux操作系统实训指导书--何亚森
第 20 页 共 20 页