确定文件的权限
This presentation is the property of its rightful owner.
Sponsored Links
1 / 25

确定文件的权限 PowerPoint PPT Presentation


  • 56 Views
  • Uploaded on
  • Presentation posted in: General

确定文件的权限. 使用 ls 命令。 有关选项 -l 和 -d 。 例 :ls -l 可以查当前目录下所有文件和子目录的权限 drwxrwx--- 3 bin backup 512 Jul 11 07:31 sysadmin drwxr-xr-x 2 bin bin 512 Jul 11 07:21 tabset drwxr-xr-x 3 bin bin 512 Jul 11 11:55 tcl -r--r--r-- 1 bin bin 7820 Jul 11 11:53 tclXmain.o

Download Presentation

确定文件的权限

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5897469

确定文件的权限

  • 使用ls命令。

  • 有关选项-l和-d。

  • 例:ls -l 可以查当前目录下所有文件和子目录的权限

  • drwxrwx--- 3 bin backup 512 Jul 11 07:31 sysadmin

  • drwxr-xr-x 2 bin bin 512 Jul 11 07:21 tabset

  • drwxr-xr-x 3 bin bin 512 Jul 11 11:55 tcl

  • -r--r--r-- 1 bin bin 7820 Jul 11 11:53 tclXmain.o

  • drwxr-xr-x 10 bin bin 512 Jul 11 07:32 tcprt

  • drwxr-xr-x 43 bin bin 1024 Jul 11 07:24 terminfo

  • drwxr-xr-x 3 bin bin 512 Jul 28 1998 terminfo

  • -rw-r--r-- 1 bin bin 6997 Jul 11 06:56 timconv

  • ls -1d . 列出当前目录自身的权限

  • drwxr-xr-x 51 bin bin 4608 Aug 15 16:51 .


  • 5897469

    修改权限

    字母形式

    chmod [ugoa][+-=][rwx] 文件名表

    u--user 文件主的权限

    g--group 同组用户的权限

    o--other 其他用户权限

    a--all 所有上述三级权限

    例: chmod u+rw *

    chmod go-rwx *.[ch]

    chmod a+x batch

    chmod u=rx try2


    5897469

    修改权限(续)

    数字形式(八进制数字)

    例:chmod 674 xyz1 xyz2

    八进制: 6 7 4

    二进制: 110 111 100

    权限: rw- rwx r--

    注: 只允许文件主修改文件权限


    Umask

    umask命令

    功能:

    用于决定文件/目录的初始权限

    初始权限受umask值限制。

    例如:用vi初创一个文件

    用输出重定向创建文件

    创建新目录

    umask是进程属性的一部分

    umask是shell内部命令

    umask是进程属性的一部分

    命令:umask 打印当前的umask值

    umask 022 将umask值设置为八进制的022


    Umask1

    umask命令(续)

    掩码值的含义:

    普通文件:只有rw权限受影响,初始权限中无x权限

    目录文件:rwx权限均受掩码值影响

    例:掩码值: 022

    二进制: 000010010

    普通文件: rw-r--r--

    目录: rwxr-xr-x

    自动执行批处理文件

    一般将umask命令放到自动执行批处理文件中,

    如:用csh作登录shell时,加入到.login或.cshrc文件

    用sh作登录shell时, 加入到.profile文件


    Umask2

    系统调用umask

    功能:

    系统调用umask用于修改进程自身的umask属性值

    初创文件的权限

    受open调用的规定值和进程自身属性的umask值影响

    已存在的文件的权限,不受open/umask的影响

    例:当umask为077时,用C程序

    fd=open(filename,O_CREAT|O_WRONLY,0666);

    open的权限为0666,屏蔽掉077后实际为0600

    系统调用umask

    int umask(int mask);

    mask为指定的新mask值,返回值为原先的umask值

    读出进程的umask属性,而不改变它,需调用umask两次


    Chmod

    系统调用chmod

    修改已存文件的权限

    已存文件的权限不受umask的影响

    int chmod(const char *path, mode_t mode);

    int fchmod(int fildes, mode_t mode);


    5897469

    为什么需要SUID权限?

    问题

    对某一用户,他对这一文件中的全部内容要么有某一种访问权,要么没有这种权限。一旦拥有了访问权限,就可以访问文件中所有内容。

    例如:文件list.txt内容如下,文件主为liu

    #================================================

    # 登录名 工作证号 姓名 月份 工资 奖金 补助扣除 总额

    #-----------------------------------------------

    tian 2076 田晓星 03 782 500 200 175 1307

    liang 2074 梁振宇 03 560 400 180 90 1050

    sun 3087 孙东旭 03 804 218 106 213 915

    tian 2076 田晓星 04 832 450 230 245 1267

    liang 2074 梁振宇 04 660 450 230 70 1270

    sun 3087 孙东旭 04 700 310 283 270 1023

    #===============================================

    # 注:煤气费不再从工资中扣除,由煤气公司自行收缴。


    5897469

    为什么需要SUID权限(续)

    访问要求

    希望能够限制某一用户liang,只能访问文件中的部分内容,而不是文件的全部内容。比如:只能读取行首字符为#的行和与用户liang有关的行,与其它用户有关的行对用户liang保密。

    UNIX提供了这样一种机制。


    5897469

    SUID权限程序举例

    用户liu编写的C源程序query.c

    FILE *f;

    char line[512],login_name[16];

    f=fopen("list.txt","r");

    if(!f) {

    perror("*** ERROR: Open file \"list.txt\" ");

    exit(1);

    }

    while(fgets(line,sizeof(line),f)) {

    if(line[0]=='#') {

    printf("%s",line);

    } else {

    if(sscanf(line,"%s",login_name)>0) {

    if(strcmp(login_name,getlogin())==0)

    printf("%s",line);

    }

    }

    }

    函数调用getlogin()返回当前用户的用户名


    5897469

    SUID权限操作示例

    $ ls -l list.txt query

    -rw------- 1 liu leader 722 Dec 10 23:04 list.txt

    -rwx--x--x 1 liu leader 56134 Dec 10 23:07 query

    用户liang:

    $ query

    *** ERROR: Open file "list.txt" : Permission denied

    $ cat list.txt

    cannot open list.txt: Permission denied

    用户liu :给文件query增加SUID权限(设置用户标识)

    $ chmod u+s query

    $ ls -l query

    -rws--x--x 1 liu leader 56134 Dec 10 23:07 query


    5897469

    SUID权限操作示例(续)

    用户liang:

    $ ls -l list.txt query

    -rw------- 1 liu leader 722 Dec 10 23:04 list.txt

    -rws--x--x 1 liu leader 56134 Dec 10 23:07 query

    $ query

    #===================================================

    # 登录名 工作证号 姓名 月份 工资 奖金 补助 扣除 总额

    #---------------------------------------------------

    liang 2074 梁振宇 03 560 400 180 90 1050

    liang 2074 梁振宇 04 660 450 230 70 1270

    #===================================================

    # 注:煤气费不再从工资中扣除,由煤气公司自行收缴

    $ cat list.txt

    cannot open list.txt: Permission denied


    5897469

    SUID权限操作示例(续)

    用户liang:

    $ ls -l list.txt query

    -rw------- 1 liu leader 722 Dec 10 23:04 list.txt

    -rws--x--x 1 liu leader 56134 Dec 10 23:07 query

    $ query

    #===================================================

    # 登录名 工作证号 姓名 月份 工资 奖金 补助 扣除 总额

    #---------------------------------------------------

    liang 2074 梁振宇 03 560 400 180 90 1050

    liang 2074 梁振宇 04 660 450 230 70 1270

    #===================================================

    # 注:煤气费不再从工资中扣除,由煤气公司自行收缴

    $ cat list.txt

    cannot open list.txt: Permission denied


    Uid uid

    进程的实际UID和有效UID

    UNIX每个进程都有两个UID:实际UID和有效UID。

    一般情况下,进程的实际UID和有效UID相等

    进程在打开一个文件时,文件系统将根据有效UID与文件所有者UID之间的关系和文件自身的权限进行访问合法性验证

    当一个可执行程序有SUID权限后,启动这一程序创建的进程的实际UID和有效UID就不再相等,实际UID就是启动这一程序的用户的UID,而有效UID为文件主的UID。

    这使得一个用户可以通过文件主提供的程序来访问一个文件主未授予他访问权限的文件,而且,只能通过这种手段进行有限的访问。

    删除一个文件的SUID权限使用chmod u-s命令。例:

    chmod u-s query


    Gid gid

    进程的实际GID和有效GID

    SGID权限(设置组标志)与SUID权限类似:

    一个拥有SGID权限的可执行文件在执行时需要进行文件访问合法性验证时,如果需要判断进程是否与被访问的文件的文件主同组时,进程的组标识符GID将使用可执行文件的文件主的组GID,而不是使用启动这一命令的用户的组GID

    增加SGID权限的命令(该文件必须有组执行权限):

    chmod g+s 文件名

    删除SGID权限的命令:

    chmod g-s 文件名

    有SGID权限的文件在ls -l列表时,组执行权限处显示小写字母s,而不是x。(组执行权限处显示大写字母S,则不是SGID权限,而是与文件和记录锁定有关。与文件和记录锁定有关的命令还有chmod g+l)


    5897469

    文件归档程序tar

    功能:

    用于保留和恢复磁带上的文件(tape archive)

    用法: tar [ctxu][v][f] [设备文件] 文件/目录列表

    功能字母:

    c: create创建新磁带,从头开始写,以前数据被盖写

    t: table列表。

    x: extract抽取,从磁带中抽取指定的文件

    u: update更新.指定的文件追加到磁带的尾部

    其他选项:

    v: verbose冗长.显示tar所处理的每个文件名。

    f: file指定设备文件名。


    5897469

    文件归档程序tar:举例

    tar cvf /dev/rct0 .

    将当前目录的整棵目录树,备份到设备/dev/rct0中

    tar xvf /dev/rct0

    tar tvf /dev/rct0

    tar命令可以指定一个普通文件代替设备文件,那么,就可将多个文件或一棵目录树存储成一整个文件.

    如: tar cvf my.tar *.[ch] makefile

    将多个文件存成一个文件my.tar

    注意:tar cvf *.[ch] makefile

    会冲掉现存的某一文件,小心:不要漏掉设备文件名。

    tar cvf work1.tar work1

    其中work1是一个复杂的子目录,有多个目录层次

    tar xvf work1.tar


    Huffman pack

    Huffman编码文件压缩pack

    采用Huffman编码算法对文件压缩

    普通文本文件可压缩掉25-40%

    例:已存在的文本文件 chapt5,则

    . pack chapt5 压缩。生成新文件chapt5.z,原文件被删除(比较原chapt5文件和chapt5.z文件大小)

    . pcat chapt5.z 读取压缩格式的文件

    . unpack chapt5.z解压缩,生成原文件chapt5


    Lzw compress

    LZW算法文件压缩compress

    采用LZW算法对文件压缩

    普通文本文件可压掉50-80%

    一般比Huffman编码压缩文件更有效

    例:

    compress chapt5 压缩,生成新文件chapt5.Z

    zcat chapt5.Z 读取压缩格式的文件。

    uncompress chapt.Z 解压缩,还原文件chapt5


    5897469

    文件的归档与压缩处理:应用

    兼容性:

    文件归档与压缩处理在不同机型的UNIX,不同版本的UNIX上有通用性.因此,可以使用这些方法在不同UNIX中交换程序或数据。

    举例:

    在主机A:

    tar cvf xapi.tar xapi

    compress xapi.tar

    将文件xapi.tar.Z通过网络传到主机B(用ftp)

    在主机B:

    uncompress xapi.tar.Z

    tar xvf xapi.tar

    用这种方法可以把一棵目录树复制到另一台主机上


    Unix shell

    UNIX的shell

    Shell是命令解释器,具有文件名替换,命令替换,变量替换等功能,含有流程控制的内部命令,可编写批处理程序。

    B-shell: Bourne Shell, /bin/sh,

    C-shell: /bin/csh

    K-shell:Korn shell, /bin/ksh

    内部命令和外部命令

    管理员在创建用户时,设置了用户的登录shell


    C shell

    C-shell的初始化与终止

    同/bin/sh比较,csh提从了许多便于交互使用的特点.如别名替换,历史替换,作业控制等

    启动方法

    作为注册shell

    直接执行命令csh

    初始化与终止

    csh启动时,自动执行.cshrc文件中命令

    如果作为注册shell,再执行.login文件中命令

    作为注册shell的csh终止时,执行.logout文件

    .cshrc/.login/.logout在用户主目录(HOME)下


    5897469

    csh的历史表

    历史表大小

    先前键入的命令存于历史表中,FIFO式刷新,编号递增

    表大小由csh的变量history设定

    set history=30,设定历史表为30个命令行

    查看历史表

    用csh的内部命令history

    %history

    12 cd /etc/conf/cf.d

    13 ls -l

    14 find . -name mdevice -print

    15 cd /usr/lib/terminfo

    16 vi terminfo.src


    5897469

    csh的历史替换

    引用历史机制

    !! 引用上一命令(如同DOS中按F3键)

    !str以str开头的最近用过的命令,如:!v !m !fin

    !15引用历史表中第15号命令

    !-5引用历史表中当前命令号减5的那条命令

    !9:s/str1/str2/把第9号命令中的str1串替为str2

    ^str1^str2把上个命令中str1串替为str2串


    5897469

    别名和别名替换

    在别名表中增加一个别名

    (内部命令alias)

    alias dir ”ls -flad”

    alias n ”netstat -p tcp -s | head -10”

    alias r ”netstat -rn”

    alias h ”history”

    查看别名表

    alias

    取消别名

    (内部命令unalias)

    unalias n在别名表中取消n


  • Login