精华内容
下载资源
问答
  • linux多用户登录

    千次阅读 2017-11-15 21:06:04
    * 理解Linux多用户。多任务的特性 * 用户与组的概念 * Linux下用户的角色分类 * 用户和组的概念 * 用户和组的关系 ###用户配置文件概述 * 用户和组相关的配置文件 * /etc/login.defs文件 * /etc/default/useradd * ...

    一.用户与组的概念
    1.理解linux多用户,多任务的特性
    Linux是一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响,例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内,root用户可能在查看系统日志,管理维护系统,www用户可能在修改自己的网页程序,ftp用户可能在上传软件到服务器,mysql用户可能在执行自己的SQL查询,每个用户互不干扰,有条不紊的进行着自己的工作,而每个用户之间不能越权访问,比如www用户不能执行mysql用户的SQL查询操作,ftp用户也不能修改www用户的网页程序,因此可知,不同用户具有不同的权限,每个用户是在权限允许的范围内完成不同的任务,linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
    2.linux下用户的角色分类
     在linux下用户是根据角色定义的,具体分为三种角色:
     超级用户:拥有对系统的最高管理权限,默认是root用户。
     普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如上面提到的www用户、ftp用户等。
     虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等,一般运行的web服务,默认就是使用的nobody用户,但是nobody用户是不能登录系统的。
    3.用户和组的概念
     我们知道,Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
     每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。
     用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组,将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。
    4.用户和组的关系:
    用户和用户组的对应关系有:一对一、一对多、多对一和多对多;下图展示了这种关系:


     一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员。
     一对多:即一个用户可以存在多个用户组中。那么此用户具有多个组的共同权限。
     多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
     多对多:多个用户可以存在多个组中。其实就是上面三个对应关系的扩展。

    二 用户配置文件概述
    1.用户和组相关的配置文件
    (1)/etc/passwd文件
    系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。/etc/passwd中每一行记录对应一个用户,每行记录又被冒号分割,其格式和具体含义如下:
    用户名:口令:用户标识号:组标识号:注释性描述:主目录:默认shell 
    下面是/etc/passwd文件的部分输出:
    [root@localhost ~]# more /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    下面是每个字段的详细含义:
     用户名:是代表用户账号的字符串。
     口令:存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 版本都使用了shadow技术,把真正加密后的用户口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如用“x”或者“*”来表示。 
     用户标识号:就是用户的UID,每个用户都有一个UID,并且是唯一的,通常UID号的取值范围是0~65535,0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。而在Linux系统中,普通用户UID默认从500开始。UID是linux下确认用户权限的标志,用户的角色和权限都是通过UID来实现的,因此多个用户公用一个UID是非常危险的,会造成系统权限和管理的混乱,例如将普通用户的UID设置为0后,这个普通用户就具有了root用户的权限,这是极度危险的操作。因此要尽量保持用户UID的唯一性。
     组标识号:就是组的GID,与用户的UID类似,这个字段记录了用户所属的用户组。它对应着/etc/group文件中的一条记录。
     注释性描述:字段是对用户的描述信息,比如用户的住址、电话、姓名等等。
     主目录:也就是用户登录到系统之后默认所处的目录,也可以叫做用户的主目录、家目录、根目录等等。
     默认shell:就是用户登录系统后默认使用的命令解释器,shell是用户和linux内核之间的接口,用户所作的任何操作,都是通过shell传递给系统内核的。linux下常用的shell有sh、bash、csh等,管理员可以根据用户的习惯,为每个用户设置不同的shell。
    (2)/etc/shadow文件
    用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。
    下面介绍下/etc/shadow文件内容的格式:
    用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段
    例如:下面是/etc/shadow文件的部分输出:
    [root@localhost ~]# more /etc/shadow
    root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7:::
    bin:*:13934:0:99999:7:::
    daemon:*:13934:0:99999:7:::
    adm:*:13934:0:99999:7:::
    下面是每个字段的详细含义:
     用户名:与/etc/passwd文件中的用户名有相同的含义。
     加密口令:存放的是加密后的用户口令字串,如果此字段是“*”、“!”、“x”等字符,则对应的用户不能登录系统。 
     最后一次修改时间:表示从某个时间起,到用户最近一次修改口令的间隔天数。可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化。
     最小时间间隔:表示两次修改密码之间的最小时间间隔。
     最大时间间隔:表示两次修改密码之间的最大时间间隔,这个设置能增强管理员管理用户的时效性。
     警告时间:表示从系统开始警告用户到密码正式失效之间的天数。
     不活动时间:此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统不再让此用户登录,也不会提示用户过期,是完全禁用。
     失效时间:表示该用户的帐号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了。如果这个字段的值为空,帐号永久可用。
     保留字段:linux的保留字段,目前为空,以备linux日后发展之用。
    (3)/etc/group文件
    用户组配置文件,用户组的所有信息都存放在此文件中。
    下面介绍下/etc/group文件内容的格式:
    组名:口令:组标识号:组内用户列表
    例如:下面是/etc/group的部分输出:
    [root@localhost ~]# more /etc/group
    root:x:0:root
    bin:x:1:root,bin,daemon
    daemon:x:2:root,bin,daemon
    下面是/etc/group每个字段的含义:
     组名:是用户组的名称,由字母或数字构成。与/etc/passwd中的用户名一样,组名不能重复。
     口令:存放的是用户组加密后的口令字串,密码默认设置在/etc/gshadow文件中,而在这里用“x”代替,linux系统下默认的用户组都没有口令,可以通过gpasswd来给用户组添加密码。
     组标识号:就是GID,与/etc/passwd中的组标识号对应。
     组内用户列表: 显示属于这个组的所有用户,多个用户之间用逗号分隔。
    2./etc/login.defs文件
    用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。
    下面是rhel5下的/etc/login.defs文件,简单介绍如下:
    MAIL_DIR        /var/spool/mail
    当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件
    PASS_MAX_DAYS   99999
    #指定密码保持有效的最大天数
    PASS_MIN_DAYS   0
    表示自从上次密码修改以来多少天后用户才被允许修改口令
    PASS_MIN_LEN    5
    指定密码的最小长度
    PASS_WARN_AGE   7
    表示在口令到期前多少天系统开始通知用户口令即将到期
    UID_MIN                   500
    指定最小UID为500 ,也就是说添加用户时,用户的UID 从500开始
    UID_MAX                 60000
    指定最大UID为60000
    GID_MIN                   500
    指定最小GID为500,也就是添加组时,组的GID从500开始。
    GID_MAX                 60000
    指定最大GID为60000
    CREATE_HOME     yes
    此项是指定是否创建用户主目录,yes为创建,no为不创建。
    3./etc/default/useradd文件
    当我们通过useradd命令不加任何参数创建一个用户后,用户默认的主目录一般位于/home下,默认使用的shell是/bin/bash,这是为什么呢,看看/etc/default/useradd这个文件的内容就完全明白了。
    [root@localhost ~]# more /etc/default/useradd
    # useradd defaults file
    GROUP=100  
    HOME=/home  #此项表示将新建用户的主目录放在/home目录下
    INACTIVE=-1 #此项表示是否启用帐号过期禁用,-1表示不启用
    EXPIRE=     #此项表示帐号过期日期,不设置表示不启用
    SHELL=/bin/bash  #此项指定了新建用户的默认shell类型
    SKEL=/etc/skel  #此项用来指定用户主目录默认文件的来源,也就是说新建用户主目录下的文件都是从这个目录下复制而来的
    CREATE_MAIL_SPOOL=no
    /etc/default/useradd文件定义了新建用户的一些默认属性,比如用户的主目录、使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值。
    改变此文件有两种方法,一种是通过文本编辑器方式更改,另一种是通过useradd命令来更改。这里介绍一下第二种方法:
    Useradd命令加“-D”参数后,就可以修改配置文件/etc/default/useradd,使用的一般格式为:
    useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
    每个选项详细含义如下:
     -g default_group
    表示新建用户的起始组名或者GID,组名必须为已经存在的用户组名称,GID也必须是已经存在的用户组GID。与/etc/default/useradd文件中“GROUP”行对应。
     -b default_home
    指定新建用户主目录的上级目录,也就是所有新建用户都会在此目录下创建自己的主目录。与/etc/default/useradd文件中HOME行对应。
     -s default_shell
    指定新建用户默认使用的shell,与/etc/default/useradd文件中“SHELL”行对应。
     -f default_inactive
    指定用户帐号过期多长时间后就永久停用,与/etc/default/useradd文件中“INACTIVE”行对应。
     -e default_expire_date
    指定用户帐号的过期时间。与/etc/default/useradd文件中“EXPIRE”行对应。
    例子:
    useradd –D不加任何参数时,显示/etc/default/useradd文件的当前设置
    [root@localhost ~]# useradd -D  
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    如果要修改添加用户时的默认shell为/bin/csh,可以这么操作:
    [root@localhost ~]# useradd -D -s /bin/csh
    [root@localhost ~]# useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/csh
    SKEL=/etc/skel
    4./etc/skel目录
    在创建一个新用户后,会在新用户的主目录下看到类似.bash_profile, .bashrc, .bash_logout等文件,这些文件是怎么来的呢,如果我想让新建立的用户在主目录下默认拥有自己指定的配置文件,该如何设置呢?
    /etc/skel目录就是解决这个问题的,/etc/skel目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。

    用户管理工具  

    一.添加、切换、删除用户组命令groupadd/newgrp/groupdel
    1.groupadd命令
    用来新建一个用户组。语法格式为:
    groupadd [-g -o] gid  group
    各个选项具体含义如下:
    -g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。
    -o:一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
    例如:
    创建一个linuxfans的用户组和一个fanslinux用户组,GID分别为1020和1030
    [root@localhost ~]# groupadd -g 1020 linuxfans
    [root@localhost ~]# groupadd -g 1030 fanslinux
    [root@localhost ~]# more /etc/group|grep  linuxfans
    linuxfans:x:1020:
    [root@localhost ~]# more /etc/group|grep  fanslinux
    fanslinux:x:1030:
    2.newgrp命令
    如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换,语法格式为:
    newgrp <用户组>
     例子:下面通过实例讲述newgrp的用法:
    首先建立了3个用户组group1、group2和group3.
    [root@localhost ~]# groupadd group1
    [root@localhost ~]# groupadd group2
    [root@localhost ~]# groupadd group3
    下面创建了一个用户user1,同时指定user1的主用户组为group1,附加用户组为group2和group3
    [root@localhost ~]# useradd -g group1 -G group2,group3 user1
    [root@localhost ~]# more /etc/group|grep user1
    group2:x:501:user1
    group3:x:502:user1
    下面是对用户user1设置密码
    [root@localhost ~]# passwd user1
    Changing password for user user1.
    New UNIX password: 
    Retype new UNIX password: 
    passwd: all authentication tokens updated successfully.
    下面是切换到user1用户下,通过newgrp切换用户组进行的一系列操作,从中可以看出newgrp的作用。
    [root@localhost ~]# su - user1
    [user1@localhost ~]$ whoami
    user1
    [user1@localhost ~]$ mkdir user1_doc
    [user1@localhost ~]$ newgrp group2
    [user1@localhost ~]$ mkdir user2_doc
    [user1@localhost ~]$ newgrp group3
    [user1@localhost ~]$ mkdir user3_doc
    [user1@localhost ~]$ ll
    total 12
    drwxr-xr-x  2 user1 group1 4096 Oct 24 01:18 user1_doc
    drwxr-xr-x  2 user1 group2 4096 Oct 24 01:18 user2_doc
    drwxr-xr-x  2 user1 group3 4096 Oct 24 01:19 user3_doc
    [user1@localhost ~]$
    3.groupdel命令
    表示删除用户组,语法格式为:
    groupdel [群组名称]
    当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。
    例如:删除linuxfans这个用户组
    [root@localhost ~]# groupdel  linuxfans
    二. 添加、修改和删除用户命令useradd/usermod/userdel 
    1.useradd建立用户的过程
    useradd不加任何参数创建用户时,系统首先读取添加用户配置文件/etc/login.defs和/etc/default/useradd,根据这两个配置文件中定义的规则添加用户,然后会向/etc/passwd和/etc/group文件添加用户和用户组记录,同时/etc/passwd和/etc/group对应的加密文件也会自动生成记录,接着系统会自动在/etc/default/useradd文件设定的目录下建立用户主目录,最后复制/etc/skel目录中的所有文件到新用户的主目录中,这样一个新的用户就建立完成了。
    2.useradd的使用语法
    useradd语法的一般格式为:
    useradd  [-u uid [-o]] [-g group] [-G group,...]
                    [-d home] [-s shell] [-c comment]
                    [-f inactive] [-e expire ] name
    各个选项具体含义如下:
     -u uid:即用户标识号,此标识号必须唯一。
     -g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。
     -G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。
     -d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。
     -s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。
     -c comment:对新建用户的说明信息。
     -f inactive:指定帐号过期多长时间后永久停用。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1
     -e expire:指定用户的帐号过期时间,日期的指定格式为MM/DD/YY。
     name:指定需要创建的用户名。
    3.usermod的使用语法
     usermod用来修改用户的账户属性信息,使用语法如下:
    usermod  [-u uid [-o]] [-g group] [-G group,...]
                    [-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
                    [-f 失效日期] [-e 过期日期][-L|-U] Name
    各个选项具体含义如下:
     -u uid:指定用户新的UID值,此值必须为唯一的ID值,除非用-o选项。
     -g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在。
     -G group:修改用户所属的附加组。
     -d 主目录:修改用户登录时的主目录。
     -s shell:修改用户登录系统后默认使用的shell
     -c 注释:修改用户的注释信息。
     -l 新名称:修改用户帐号为新的名称。
     -f 失效日:帐号过期多少天后永久禁用。
     -e 过期日:增加或修改用户账户的过期时间。
     -L:锁定用户密码,使密码无效。
     -U:解除密码锁定。
     Name:要修改属性的系统用户。
    4.userdel的使用语法
    Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为:
    userdel [-r][用户帐号]
    5.应用举例
    1)添加一个用户mylinux,指定所属的主用户组为fanslinux,附加用户组为linuxfans,同时指定用户的默认主目录为/opt/mylinux
    [root@localhost ~]# useradd -g fanslinux -G linuxfans -d /opt/mylinux mylinux
    [root@localhost ~]# more /etc/passwd|grep mylinux
    mylinux:x:523:1030::/opt/mylinux:/bin/bash
    [root@localhost ~]# more /etc/group|grep mylinux
    linuxfans:x:1020:mylinux
     2)添加一个用户test_user,指定UID为686,默认的shell为/bin/csh,让其归属为用户组linuxfans和fanslinux,同时添加对此用户的描述,
    [root@localhost ~]# useradd  -u 686 -s /bin/csh  -G linuxfans,fanslinux  -c "This is test user" test_user
    [root@localhost ~]# more /etc/passwd|grep test_user
    test_user:x:686:686:This is test user:/home/test_user:/bin/csh
    [root@localhost ~]# more /etc/group|grep test_user  
    fanslinux:x:1030:test_user
    linuxfans:x:1020:mylinux,test_user
    test_user:x:686:
     3)修改用户test_user的主用户组为新建的组test_group1,同时修改test_user的附加组为linuxfans和root,最后修改test_user的默认登录shell为/bin/bash
    [root@localhost ~]# groupadd test_group1  #添加一个新的用户组
    [root@localhost ~]# more /etc/group|grep test_group1 #显示新增用户组的信息
    test_group1:x:1031:
    [root@localhost ~]# usermod -g test_group1 -G linuxfans,root -s /bin/bash test_user
    [root@localhost ~]# more /etc/passwd|grep test_user   #从输出可知,用户的属性已经更改                                        
    test_user:x:686:1031:This is test user:/home/test_user:/bin/bash
    [root@localhost ~]# more /etc/group|grep test_user   #从输出可知,用户组的属性也同步更改   
    root:x:0:root,test_user
    linuxfans:x:1020:mylinux,test_user
    test_user:x:686:
    4)如何锁定、解除用户密码
    下面首先对test_user和mylinux用户设置密码
    [root@localhost ~]# passwd  test_user
    Changing password for user test_user.
    New UNIX password: 
    Retype new UNIX password: 
    passwd: all authentication tokens updated successfully.
    [root@localhost ~]# passwd  mylinux
    Changing password for user mylinux.
    New UNIX password: 
    Retype new UNIX password: 
    passwd: all authentication tokens updated successfully.
    下面的操作是通过su命令切换到mylinux用户下,然后在mylinux下再次切换到test_user用户下,这里的切换用户是为了说明一个问题:从超级用户root切换到普通用户下,是不需要输入普通用户密码的,系统也不会去验证密码。但普通用户之间切换是需要密码验证的。
    [root@localhost ~]# su – mylinux  #通过su命令切换到mylinux用户下
    [mylinux@localhost ~]$ whoami      #用whoami命令查看当前用户
    mylinux
    [mylinux@localhost ~]$ su - test_user  #这里是从mylinux用户下切换到test_user用户下,需要输入密码
    Password: 
    [mylinux@localhost ~]$ whoami          #成功切换到test_user用户下
    test_user
    接下来,在root用户下执行usermod锁定test_user的密码,测试test_user是否还能登录,从下面可以看出,密码锁定后,出现登录失败。
    [root@localhost ~]# usermod -L test_user  #锁定test_user用户的密码
    [root@localhost ~]# su - mylinux  
    [mylinux@localhost ~]$ whoami
    mylinux
    [mylinux@localhost ~]$ su - test_user  #这里输入的密码是正确的,但是提示密码错误,因为密码被锁定了
    Password: 
    su: incorrect password
    [mylinux@localhost ~]$ whoami
    mylinux
    最后对test_user解除密码锁定,登录正常。
    [root@localhost ~]# usermod -U test_user  #解除密码锁定
    [root@localhost ~]# su – mylinux
    [mylinux@localhost ~]$ whoami
    mylinux
    [mylinux@localhost ~]$ su - test_user
    Password: 
    [test_user@localhost ~]$ whoami  #密码锁定解除后,test_user用户可以登录系统
    test_user

    文件与权限的设定

    所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行等,在linux下,每个用户都具有不同的权限,普通用户只能在自己的主目录下进行写操作,而在主目录之外,普通用户只能进行查找、读取操作,如何处理好文件权限和用户之间的关系,是本节讲述的重点。
    一 查看文件的权限属性
    使用ls命令就可以查看文件的以及目录的权限信息,不带任何参数的ls命令只显示文件名称,通过“ls –al”可以显示文件或者目录的权限信息,看下面的输出:
    [root@localhost oracle]# ls -al
    total 92
    drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 admin
    drwxr-xr-x   2 oracle oinstall  4096 Oct 23 18:22 bin
    -rwxr-xr-x   1 root   root      3939 Mar 20  2008 .createtablespace.pl
    drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 flash_recovery_area
    drwxr-xr-x   2 oracle oinstall  4096 Jun 25 15:18 install
    drwx------   2 oracle oinstall 16384 Jun 25 01:10 lost+found
    drwxr-xr--   3 oracle oinstall  4096 Oct 30  2008 oradata
    drwxr-xr-x   6 oracle oinstall  4096 Oct 30  2006 oraInventory
    drwxr-xr-x   3 oracle dba       4096 Oct 28  2006 product
     为了能更详细的介绍上面输出中每个属性的含义,下图列出了oradata文档每列代表的含义:
     

    下面通过具体的实例讲述每列代表的含义。
    1.第一列显示文档类型与执行权限,有十个字符组成,分为4个部分,下面将文档oradata权限分解,如下图所示
     

    接着对每个部分解释如下:
     文档类型部分:
    当为“d”时,表示目录;当为“l”时表示软链接;当为“-”时表示文件;当为“c”时表示串行端口字符设备文件;当为“b”时表示可供存储的块设备文件。由此可知,oradata是一个目录。
    在接下来的三个部分中,三个字符为一组,每个字符的含义为:“r”表示只读,即read;“w”表示可写,即write;“x”表示可执行,即execute;“-”表示无此权限,即为空。
     User部分:
    第二部分是对文档所有者(user)权限的设定,“rwx”表示用户对oradata目录有读、写和执行的所有权限。
     Group部分:
    第三部分是对文档所属用户组(group)权限的设定,“r-x”表示用户组对oradata目录有读和执行的权限,但是没有写的权限。
     Others部分:
    第四部分是对文档拥有者之外的其它用户权限的设定,“r--”表示其它用户或用户组对oradata目录只有读的权限。
    文档的操作权限是可以指定和更改的,通过chmod命令即可更改文件或者目录的权限,这个将在下节讲述。
    2.第二列显示的是文档的连结数,这个连结数就是硬链接的概念,即多少个文件指向同一个索引节点,举例如下:
    [root@localhost ~]#ls -al
    -rw-r--r--   1 root root 60151 Oct 25 01:01 install.log
    [root@localhost ~]#ln install.log  install.log1
    [root@localhost ~]#ls –al  install.log
    -rw-r--r--   2 root root 60151 Oct 25 01:01 install.log
    [root@localhost ~]#ln install.log  install.log2
    [root@localhost ~]#ls –al  install.log
    -rw-r--r--   3 root root 60151 Oct 25 01:01 install.log
    从上面可以看出,install.log文件原始的连结数是1,然后做了两个硬链接操作,install.log文件的连接数变为3,这就是连接数的含义。
    3.第三列显示了文档所属的用户和用户组,也就是文档是属于哪个用户以及哪个用户组所有,例如上面的oradata目录,所属的用户为oracle,所属的组为oinstall组。文件所属的用户和组是可以更改的,通过chown命令就可以修改文档的用户属性。
    4.第四列显示的是文档的大小,默认显示的是以bytes为单位,但是也可以通过命令的参数修改显示的单位,例如可以通过“ls -sh”组合人性化的显示文档的大小。对于目录,通常只显示文件系统默认block的大小。
    5.第五列显示文档最后一次的修改日期,通常以月、日、时、分的方式显示,如果文档修改时间距离现在已经很远了,会使用月、日、年的方式显示。
    6.第六列显示的是文档名称,linux下以“.”开头的文件是隐藏文件,同理以“.”开头的目录是隐藏目录,隐藏文档只有通过ls命令的“-a”选项才能显示。
    例如上面的.createtablespace.pl文件就是一个隐藏文件。
    二 利用chown改变属主和属组
    chown就是change owner的意思,主要作用就是改变文件或者目录的所有者,而所有者包含用户和用户组,其实chown就是对文件所属的用户和用户组进行的一系列设置。
    chown使用的一般语法为:
    [root@localhost ~]#chown [-R] 用户名称 文件或目录
    [root@localhost ~]#chown [-R] 用户名称:用户组组名称 文件或目录
    参数说明:
    -R : 进行递归式的权限更改,也就是将目录下的所有文件、子目录都更新成为指定的用户组权限。常常用于变更某一目录的情况。
    注意,在执行操作前,确保指定的用户以及用户组在系统中是存在的。
    例子1:修改隐藏文件“.createtablespace.pl”的所属用户为oracle,所属的用户组为oinstall,操作如下:
    [root@localhost ~]#chown oracle:oinstall .createtablespace.pl
    [root@localhost ~]#ls -al  .createtablespace.pl
    -rwxr-xr-x   1 oracle   oinstall      3939 Mar 20  2008 createtablespace.pl
    注意,这里要确保oracle用户和oinstall组已经存在。
    例子2:修改oradata目录以及目录下的所有文件的所属用户为root,用户组为dba组,
     [root@localhost ~]#chown -R root:dba oradata
    drwxr-xr--   3 root dba   4096 Oct 30  2006 oradata
    三 利用chmod改变访问权限
    chmod用于改变文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的字符设定法;另一种是包含数字的数字设定法。
    1. 字符设定法
    使用语法为:
    chmod [who] [+ | - | =] [mode] 文件名
    命令中各选项的含义如下:
     who表示操作对象,可以是下面字母中的任何一个或者它们的组合。
     u 表示“用户(user)”,即文件或目录的所有者。
     g 表示“用户组(group)”,即文件或目录所属的用户组。
     o 表示“其他(others)用户”。 
     a 表示“所有(all)用户”。它是系统默认值。
     操作符号含义如下:
     “+”表示添加某个权限。
     “-”表示取消某个权限。
     “=”表示赋予给定的权限,同时取消文档以前的所有权限。
     mode表示可以执行的权限,可以是“r“(只读)、“w”(可写)和“x”(可执行),以及它们的组合。
     文件名可以是以空格分开的文件列表,支持通配符。
    2.举例
     修改install.log文件,使其所有者具有所有权限,用户组和其它用户具有只读权限:
    [root@localhost ~]# ls -al install.log
    -rw------  1 root root 60151 Oct 17 16:11 install.log
    [root@localhost ~]# chmod u=rwx,g+r,o+r install.log    
    [root@localhost ~]# ls -al install.log             
    -rwxr--r--  1 root root 60151 Oct 17 16:11 install.log
     修改/etc/fstab文件的权限,使其所有者具有读写权限,用户组和其它用户没有任何权限:
    [root@localhost ~]# ll /etc/fstab          
    -rwxr--r--  1 root root 1150 Oct 23 09:30 /etc/fstab
    [root@localhost ~]# chmod u-x,g-r,o-r /etc/fstab      
    [root@localhost ~]# ll /etc/fstab                
    -rw-------  1 root root 1150 Oct 23 09:30 /etc/fstab
    3.数字设定法
    首先了解一下用数字表示属性的含义,0表示没有任何权限,1表示有可执行权限,与上面字符表示法中的“x”有相同的含义。2表示有可写权限,与“w”对应,4表示有可读权限,对应与“r“。
    如果想让文件的属主拥有读和写的权限,可以通过4(可读)+2(可写)=6(可读可写)的方式来实现,那么用数字6就表示拥有读写权限。
    使用语法:
    chmod [属主权限的数字组合] [用户组权限的数字组合] [其它用户权限的数字组合] 文件名
    下图展示了数字设定法的实现原理:

     


    上图数字设定法含义剖析
    从图中可以清晰的看出,“755”组合的代表含义,第一个“7”显示了文件所有者的权限,是通过4(r)+2(w)+1(x)=7(rwx)而得到的。第二个“5”显示了文件所属组的权限,是通过4(r)+0(-)+1(x)=5(rx)而得到的,同理最后一个“5”也有类似的含义。
    举例:
    某个文件mysqltuner.pl的默认权限为600,即“-rw-------”,表示只有此文件的所有者(User)拥有读写权限,其它用户(Others)和组(Group)没有对此文件访问的任何权限。
    首先修改此文件的权限为644,即“-rw-r--r--”,表示此文件的所有者(User)拥有读写权限,而其它用户(Others)和组(Group)仅仅拥有读的权限,操作如下:
    [linux1@localhost ~]$ ls -al mysqltuner.pl 
    -rw------- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl
    [linux1@localhost ~]$ chmod 644  mysqltuner.pl
    [linux1@localhost ~]$ ls -al mysqltuner.pl     
    -rw-r--r-- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl
    然后接着修改mysqltuner.pl文件的权限为755,即“-rwxr-xr-x”,表示此文件的所有者(User)拥有读写执行权限,而其它用户(Others)和组(Group)拥有对此文件的读和执行权限。
    [linux1@localhost ~]$ chmod 755  mysqltuner.pl 
    [linux1@localhost ~]$ ls -al mysqltuner.pl     
    -rwxr-xr-x 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl

    展开全文
  • Linux 是一个多用户、多任务的操作系统,我们应该了解单用户多任务和多用户多任务的概念。单用户多任务:比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,...

    Linux 是一个多用户、多任务的操作系统,我们应该了解单用户多任务和多用户多任务的概念。

    单用户多任务:

    比如我们以beinan 登录系统,进入系统后,我要打开gedit 来写文档,但在写文档的过程中,我感觉少点音乐,所以又打开xmms 来点音乐;当然听点音乐还不行,MSN 还得打开,想知道几个弟兄现在正在做什么,这样一样,我在用beinan 用户登录时,执行了gedit 、xmms以及msn等,当然还有输入法fcitx ;这样说来就有点简单了,一个beinan用户,为了完成工作,执行了几个任务;当然beinan这个用户,其它的人还能以远程登录过来,也能做其它的工作。

    多用户多任务:

    有时可能是很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说。

    举个例子,比如LinuxSir.Org 服务器,上面有FTP 用户、系统管理员、web 用户、常规普通用户等,在同一时刻,可能有的弟兄正在访问论坛;有的可能在上传软件包管理子站,比如luma 或Yuking 兄在管理他们的主页系统和FTP ;在与此同时,可能还会有系统管理员在维护系统;浏览主页的用的是nobody 用户,大家都用同一个,而上传软件包用的是FTP用户;管理员的对系统的维护或查看,可能用的是普通帐号或超级权限root帐号;不同用户所具有的权限也不同,要完成不同的任务得需要不同的用户,也可以说不同的用户,可能完成的工作也不一样。

    值得注意的是:多用户多任务并不是大家同时挤到一接在一台机器的的键盘和显示器前来操作机器,多用户可能通过远程登录来进行,比如对服务器的远程控制,只要有用户权限任何人都是可以上去操作或访问的。

    用户的角色区分:

    用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;

    root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;

    虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;

    普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;

    多用户操作系统的安全:

    多用户系统从事实来说对系统管理更为方便。从安全角度来说,多用户管理的系统更为安全,比如beinan用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有beinan一个用户可读可写可编辑就行了,这样一来只有beinan一个用户可以对其私有文件进行操作,Linux 在多用户下表现最佳,Linux能很好的保护每个用户的安全,但我们也得学会Linux 才是,再安全的系统,如果没有安全意识的管理员或管理技术,这样的系统也不是安全的。

    从服务器角度来说,多用户的下的系统安全性也是最为重要的,我们常用的Windows 操作系统,它在系纺权限管理的能力只能说是一般般,根本没有没有办法和Linux或Unix 类系统相比;

    用户(user)的概念:

    通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;

    当然用户(user)的概念理解还不仅仅于此,在Linux系统中还有一些用户是用来完成特定任务的,比如nobody和ftp 等,我们访问LinuxSir.Org 的网页程序,就是nobody用户;我们匿名访问ftp 时,会用到用户ftp或nobody ;如果您想了解Linux系统的一些帐号,请查看 /etc/passwd ;

    用户组(group)的概念:

    用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

    举例:我们为了让一些用户有权限查看某一文档,比如是一个时间表,而编写时间表的人要具有读写执行的权限,我们想让一些用户知道这个时间表的内容,而不让他们修改,所以我们可以把这些用户都划到一个组,然后来修改这个文件的权限,让用户组可读,这样用户组下面的每个用户都是可读的;

    用户和用户组的对应关系是: 一对一、多对一、一对多或多对多;
    一对一:某个用户可以是某个组的唯一成员;
    多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
    一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;

    多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;

    参考:http://www.jb51.net/LINUXjishu/134575.html

    展开全文
  • Linux分时操作系统,不是实时的

    千次阅读 2010-11-28 23:54:00
    也可以把linux做成实时系统的   分时系统是指,在一台主机上连接了个带有显示器和键盘的终端,同时允许用户通过自己的终端,以交互方式使用计算机,共享主机中的资源 分时操作系统具有以下几个...

    linux是很典型的分时系统。 但是在一些特殊领域。 也可以把linux做成实时系统的

     

    分时系统是指,在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源
    分时操作系统具有以下几个优点: 
    同时性,独立性,及时性,交互性.

     

    1.实时操作系统定义
      实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。
      实时操作系统是保证在一定时间限制内完成特定功能的操作系统。例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时操作系统是为特定的应用设计的,另一些是通用的。一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。
      2.实时操作系统的特征
      1)多任务;
      2)有线程优先级
      3)多种中断级别
      小的嵌入式操作系统经常需要实时操作系统,内核要满足实时操作系统的要求。
      3.实时操作系统的相关概念
      (1)基本概念
      代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入;
      资源:任何为任务所占用的实体;
      共享资源:可以被一个以上任务使用的资源;
      任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态;
      任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;
      内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核于可剥夺型内核;
      调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法;
      (2)关于优先级的问题
      任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;
      优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任务后运行。解决的办法是使用“优先级继承”算法来临时改变任务优先级,以遏制优先级反转。
      (3)互斥
      虽然共享数据区简化了任务之间的信息交换,但是必须保证每个任务在处理共享共享数据时的排他性。使之满足互斥条件的一般方法有:关中断,使用测试并置位指令(TAS),禁止做任务切换,利用信号量。
      因为采用实时操作系统的意义就在于能够及时处理各种突发的事件,即处理各种中断,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参数无疑应该是中断响应时间了。中断响应时间通常被定义为:
      中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间[2]。
      中断延迟时间=MAX(关中断的最长时间,最长指令时间) + 开始执行ISR的第一条指令的时间[2]。

     

    分时操作系统  【词语】:分时操作系统
      【注音】:fēn shí cāo zuò xì tǒng
      【英文】:Time-sharing Operating System
      【释义】:使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。
      产生分时系统是为了满足用户需求所形成的一种新型 OS 。它与多道批处理系统之间,有着截然不同的性能差别。用户的需求具体表现在以下几个方面: 人—机交互 共享主机 便于用户上机 
      分时系统的基本思想 
      时间片 :是把计算机的系统资源(尤其是 CPU时间)进行时间上的分割,每个时间段称为一个时间片,每个用户依次轮流使用时间片。 
      分时技术:把处理机的运行时间分为很短的时间片,按时间片轮流把处理机分给各联机作业使用。 
      分时操作系统:是一种联机的多用户交互式的操作系统。一般采用时间片轮转的方式使一台计算机为多个终端服务。对每个用户能保证足够快的响应时间,并提供交互会话能力。 
      设计目标: 对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。 
      适合办公自动化、教学及事务处理等要求人机会话的场合。 
      工作方式: 
      一台主机连接了若干个终端;每个终端有一个用户在使用;交互式地向系统提出命令请求;系统接受每个用户的命令;采用时间片轮转方式处理服务请求;并通过交互方式在终端上向用户显示结果;用户根据上步结果发出下道命令 
      分时系统实现中的关键问题:及时接收。及时处理。 
      特征: 
      交互性:用户与系统进行人机对话。 
      多路性:多用户同时在各自终端上使用同一CPU。 
      独立性:用户可彼此独立操作,互不干扰,互不混淆。 
      及时性:用户在短时间内可得到系统的及时回答。 
      影响响应时间的因素:终端数目多少、时间片的大小、信息交换量、信息交换速度

     

    inux是分时系统,不过可以改成实时的如:UCOS就是linux修改而来的实时系统

     

    http://wenwen.soso.com/z/q170987868.htm

     

    http://linux.sheup.com/linux/linux5163.htm

    • 实时操作系统 (Real-time OS) 是相对于分时操作系统 (Time-Sharing OS) 的一个 概念。在一个分时操作系统中,计算机系统的资料会被平均的分配给系统内所有的工作。对于这些工作而言,它们似乎是在一个速度较慢、资源较少的虚拟系统上工作。 而这个虚拟系统所拥有的资源会和真实系统内等待执行的工作数有关。简单的说,如 果有 n 个工作要做,每一个工作就会分到 n 分之一的资源。 

      然而在一个实时操作系统之中,系统内有多少工作并不是那么重要。我们关心的 事一个工作在多少的时间内可以被完成。和分时操作系统最大的不同之处在于 “时限(deadline)”这个概念,实时操作系统通常会要求每一个工作在交付给系 统的时候同时也给定一个时限。实时操作系统的任务不只是要求完成每一个工作, 并且要按时给定的时限完成每一个工作。 

      所以我们可以看出这二个概念的不同之处,分时操作系统的重点在于”公平”, 而实时操作系统的重点在于”时限(timing constraint)”“。 

      任何时候。我不是开玩笑,当一个实时操作系统中的每一个工作都有相同的时限时, 它应该和分时操作系统用相同的方式工作。分时操作系统和实时操作系统的分野在于工作的特性而非操作系统工作的模式。 

      在很多的书及文献上我们可能会看到”硬实时(hard real-time)”和”软实时 ( soft real-time)”这二个名词。不同的人会给它们不同的意义,但大致来说它们是一组相对的概念。硬实时对满足时限的要求会比软实时来的严格。有些人会从 工作的特性上来分,硬实时工作 (hard real-time task) 通常指不能有任何差 错的工作而软实时则是指比较容许差错的工作。例如我们常会用核能电厂和看 VCD 为例,用在核能电厂的实时操作系统如果出了差错可能会导致严重的损害,然而 VCD Player 出了些差错不过是让使用者认清他所用的程序不够好而已。所以前者 是硬实时,后者是软实时。 

      但在大多数的状况下,分野并不是如此的清楚。做 VCD Player 的厂商当然不 希望它的 Player 老是出错,它也会希望 Player 用一个硬实时操作系统来驱动。 所以硬实时和软实时的差别可能只是分类学上的问题而已。 

      然而对于一般的应用而言,实时操作系统的意义在那里呢? 我们使用流览器看一 个网站时,如果结果在 0.5 秒内出现,我们可能会觉得非常舒服。如果结果在 2 秒才出现,可能会觉得有些延迟。但如果花上 30 秒才出现,那可能就没有人会等 到结果出现了。 

      对于我们而言,等个 3,5 秒可能觉得没什么。但也许 Bill Gates 不这么想, 他会算给你听他的一秒值多少钱! 所以不同的人可能会对延迟有不同的看法。即 时操作系统最大的优势就在于他可以为不同的工作提供”不同等级的服务( differentiated service)”。 

      一个对实时系统常有的误解是实时系统是一个高效率 (high performance) 的 系统,它会跑得比一般操作系统来的快,overhead 来得小。这其实是市场策略宣 传造成的影响。一大堆非常小的操作系统宣称它们是嵌入式实时操作系统 (embedded real-time OS),这么一来”嵌入”、”实时”和”小”就被莫名其 妙的连起来了。实事上这三个是完全不相干的概念。”嵌入”指的是操作系统可 以在一些资源受限的环境,例如没有 disk,的情况下工作。”小”是指因为功能 简单,要求不多,所以操作系统可以写的很小,减少不必要的额外负担。这些都 和”实时”的概念完全没有关系。不幸的是,即使是学有专精的计算机工程师也常 把它们混为一谈。 

      为什么不用? 实时操作系统和分时操作系统并不是完全互斥的概念,我前面说过如 果一个实时操作系统中所有的工作都有相同的时限,那它应该会制造出和分时作业 系统相同的结果。 

      所以一个系统可以同时执行分时和实时的工作另一个常有的误解是实时的工作 应该比分时的工作先执行。这其实是不对的,实时的工作只是要求在时限内完成 而已,一个时限在 10 秒之后的工作没有道理一定要在现在立刻执行。太早完成 它没有任何好处,有时还会造成系统不必要的负担。 

      实时操作系统的优势在于它知道目前系统资源使用的状况,它能比起分时作业 系统更精准的控制系统资源的使用。对于分时操作系统而言,它无法预测一个工 作到底还须要花多少时间才能完成。因此对于比较重要的工作,唯一的方法就是 尽快的完成它。而实时操作系统可以预测工作完成的时间,因此它可以轻易的决 定工作要在什么时间被执行。 

      所以实时操作系统所做的事,不过就是一个更强大的 renice 指令而已。在 renice 中,你只能指定一个叫优先权 (priority) 的值。优先权越高的工作 在分时系统中会分到更多的时间,但多多少呢? 没人能回答这个问题,因为在 分时操作系统中不把它视为一个重要的事。 

      而实时操作系统的 renice 指定可以指定一大堆的参数,你可以指定前述的 时限 (deadline),优先权 (priority)。还可以指定工作在单工状态下执行所 需的时间 (execution time)、工作应该在什么时候允许开始执行 (start time) 、什么时候就不应该再继续下去了(finish time)。当然过去二十年来在实时作 业系统理论上的发展使得我们还有更多更多的可能性来实作实时操作系统的 renice 指令。但简单的说,我们得到的是一个更强大的 renice 指令。它可以被用来更 精准的调整系统的整体效能。这也就是我为什么会认为,为什么不用实时作业系 统。 

      我的看法是,在将来的操作系统,实时会是一个和网络一样、是系统标准的功能。 

      和 Linux 其它领域一般,有一大堆的人都试图为 Linux 加上实时的功能。每个人 都有不同的看法,每个人看的角度也不相同,所以产生了各式各样的”real-time Linux OS”。在这里,我们看到了开放原始码 (open source) 在这个领域优势所 在。我们可以想见在不久的将来,这些各有专精的系统会自然的合并成一套非常好 用的实时操作系统。而不是相互用市场的策略恶性竞争。所以 open source 可以 提供我们一套更新、更好、更实用的实时操作系统。 

      接下来,我们先简介一下现存的各种 real-time Linux OS。 


        NMT RT-Linux 
        NMT 是新墨西哥科技大学(New Mexico Technology) 的缩写。这一套系统可以说是 所有 Real-time Linux 的鼻祖。它目前已经发展到 3.0 版。这个系统是由 Victor Yodaiken 和它的学生 Michael Barabanov 所完成。这个系统的概念是”架空” Linux kernel,使得它的 real-time 行程得以尽快的被执行。下面的图例说明了 NMT RT-Linux 和其它类似产品的系统架构。 

      你可以看到基本上RT-Linux 中的实时工作(realtime task) 其实并不是 一个 Linux 的行程,而是一个 Linux 的可加载式核心模块( loadable kernel module)。 


      之所以要如此做的原因在于 Linux 是一个很大的系统,且在设计的时候并没 有考虑 real-time 的需求。举个例说,单一个 Linux 系统呼叫可能会花上超过 10ms 的时间。对有些像工业控制的应用而言,它们对时间的要求通常在 1ms 的 等级上,Linux 根本无法满足这种需求。所以 NMT RT-Linux 采用一个比较简单 的做法,它干脆不用直接 Linux 的任何功能,而把需要高度时间精确度的工作 写成一个驱动程序的型式,然后直接用 PC 时序芯片 (timer chip) 所产生的中 断呼叫这个驱动程序。如此一来,不管 Linux 系统呼叫的时间有多长都没有关系 了。 

      从这个角度看,NMT RT-Linux 其实是一个实时驱动程序的架构,算不上是真 正的 real-time Linux. 但由于它出现的早,且其架构很符合自动控制的需求。 使用者非常的多,且多半是有关自动控制的应用。 


        RTAI 
        RTAI 是 Real-Time Application Interface 的缩写。顾名思义知道它是一套可 以用来写实时应用程序的界面。大致而言,RTAI 和 NMT RT-Linux 是相同的东西。 它同样的架空了 Linux,而直接用可加载式核心模块( loadable kernel module) 实作 real-time process。每一个实时行程实际上就是一个可加载式核心模块。 

      RTAI 和 NMT RT-Linux 最大的不同地方在于它非常小心的在 Linux 上定义了 一组 RTHAL (Real-Time Hardware Abstraction Layer)。RTHAL 将 RTAI 需要 在 Linux 中修改的部份定义成一组程序界面,RTAI 只使用这组界面和 Linux 沟通。这样做的好处在于我们可以将直接修改 Linux 核心的程序代码减至最小, 这使得将 RTHAL 移植到新版 Linux 的工作量减至最低。 

      RTAI 采取这种途径最大的原因在于 NMT RT-Linux 在由 2.0 版移植至 2.2 版 的过程序遇到问题,使得基于 2.2 版核心的 NMT RT-Linux 一直无法完成。所以 在 Dipartimento di Ingegneria Aerospaziale Politecnico di Milano 的 Paolo Mantegazza 和他的同事们就决定自行做移植的工作,但由 NMT RT-Linux 的困境他们体认到必须采取上述的途径以解决将来可能再度面临的兼容性问题。 

      于是 RTAI 便诞生了,它是一个比 NMT RT-Linux 更好的 NMT RT-Linux,虽 然后来 NMT RT-Linux 也随后完成移植的工作,但那已经是 RTAI 诞生半年以 后的事了。 


        LXRT 
        由于 RTAI 无法直接使用 Linux 的系统呼叫,解决的方法是使用 RT-FIFO 将一个 RTAI real-time kernel module 和真正的 Linux 行程连接在一起,由这个行程做 代理人的工作为其呼叫 Linux 系统呼叫。下图说明了 LXRT proxy 行程的概念 


      红色的部份表示一组 RTAI 的实时行程和它在使用者模式 (user space) 的 伙伴。你可以了解,当 proxy 激活后,它不再可以被任何的抢先 (preempt), 所以原本有的优势就不再保有了。 


        KURT 
        KURT 是由 kansas 大学所创造的系统,它和 NMT RT-Linux 及 RTAI 有很大的不同。KURT 是第一个可以使用系统呼叫的 real-time Linux。由于 KURT只是简单的将 Linux 的排程器用一个很简单的时间驱动式(time driven)排程器加以取代,实时行程的执行很容易很其它非实时行程的影响。 


        RED-Linux 
        这是小弟在下不才我在加州大学 Irvine 分校所做的系统,它和 KURT 类似,是一个 可以使用所以 Linux 系统呼叫的 real-time Linux。它的特点是使用”抢先检查点 (preemption point)”改善系统的反应速度。前面说过 KURT 的最大问题在于它受 限于原有的 Linux 架构,使得系统的反应时间很难控制。然而在 RED-Linux 这一 点已经被大大的改善,由在 2.0 版的经验得知其反应延迟约在 100 us 左右。 

      RED-Linux 非常有弹性的排程器架构也是其特点之一,这部份基本上就是我博士 论文的主轴。它使得 RED-Linux 可以符合各种不同复杂度系统的需求。基本上,它将排程器分成 dispartcher 和 allocator 二部份,dispatcher 在核心中执行而 allocator 在使用者模式执行。allocator 可以是应用程序的一部份,也可以是一个独立的单位。通常它可能是 middleware 的一部份,负责将应用程序的 resource request 转换成 kerner 可以了解的格式。 

      RED-Linux 目前正在进行 POSIX 兼容模式的移植工作,所有 POSIX 中的实时 排程、定时器、sporadic server 等都将会被实作出来。 

      所有这些有关 real-time Linux 的计画都是在 open source 的情况下发展,所以 我们可以预期在将来它们会有某些程度上截长补短的情况出现。前面说过,real-time Linux 主要有二个大类。第一种是 NMT RT-Linux 和 RTAI,它们的实时行程实际上 是一个核心模块。所以它们事实上是一种 real-time 驱动程序,RTAI 和档案系统 及网络系统其实有很相似的结构,差别只是在于其驱动的硬件类别不同而已。 

      而另一方面,如 KURT, Linux/RK 及 RED-Linux 之类的系统则受限于能达到的时 间分辨率。虽然 RED-Linux 已经把这个极限推到 1ms 左右,但我们可以预期在 PC 的架构下要达到 100us 以下是很困难的。也就是说,对于要求 10K 以上频率的应用 是不可能使用这种架构来达成。 

      但这其实是一个很合理的限制,我们可以将二种架构整合成一个系统来满足 所有的需求。LXRT 是一个正确的方向,但如果使用 RED-Linux 和 RTAI 整合 可能更能达成需求。RED-Linux 非常弹性的排程器架构使得整合更行简单。我 希望能在未来半年内推出这个产品,以成为一个终极的 real-time Linux。并 思考如何使整个系统正式的和 Linux 整合以利未来的发展。 

    展开全文
  • linux是实时系统还是分时操作系统

    万次阅读 2017-07-11 16:25:15
     实时操作系统(RTOS)是指当外界事件或数据产生,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。...
    实时操作系统  实时操作系统
      英文称Real Time Operating System,简称RTOS。
      1.实时操作系统定义
      实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。
      实时操作系统是保证在一定时间限制内完成特定功能的操作系统。例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时操作系统是为特定的应用设计的,另一些是通用的。一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。
      2.实时操作系统的特征
      1)多任务;
      2)有线程优先级
      3)多种中断级别
      小的嵌入式操作系统经常需要实时操作系统,内核要满足实时操作系统的要求。
      3.实时操作系统的相关概念
      (1)基本概念
      代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入;
      资源:任何为任务所占用的实体;
      共享资源:可以被一个以上任务使用的资源;
      任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态;
      任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;
      内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核于可剥夺型内核;
      调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法;
      (2)关于优先级的问题
      任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;
      优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任务后运行。解决的办法是使用“优先级继承”算法来临时改变任务优先级,以遏制优先级反转。
      (3)互斥
      虽然共享数据区简化了任务之间的信息交换,但是必须保证每个任务在处理共享共享数据时的排他性。使之满足互斥条件的一般方法有:关中断,使用测试并置位指令(TAS),禁止做任务切换,利用信号量。
      因为采用实时操作系统的意义就在于能够及时处理各种突发的事件,即处理各种中断,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参数无疑应该是中断响应时间了。中断响应时间通常被定义为:
      中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间[2]。
      中断延迟时间=MAX(关中断的最长时间,最长指令时间) + 开始执行ISR的第一条指令的时间[2]。
    
    --------------------------------------------------------------------------------------------------------------------------
    
    分时操作系统  【词语】:分时操作系统
      【注音】:fēn shí cāo zuò xì tǒng
      【英文】:Time-sharing Operating System
      【释义】:使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。
      产生分时系统是为了满足用户需求所形成的一种新型 OS 。它与多道批处理系统之间,有着截然不同的性能差别。用户的需求具体表现在以下几个方面: 人—机交互 共享主机 便于用户上机 
      分时系统的基本思想 
      时间片 :是把计算机的系统资源(尤其是 CPU时间)进行时间上的分割,每个时间段称为一个时间片,每个用户依次轮流使用时间片。 
      分时技术:把处理机的运行时间分为很短的时间片,按时间片轮流把处理机分给各联机作业使用。 
      分时操作系统:是一种联机的多用户交互式的操作系统。一般采用时间片轮转的方式使一台计算机为多个终端服务。对每个用户能保证足够快的响应时间,并提供交互会话能力。 
      设计目标: 对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。 
      适合办公自动化、教学及事务处理等要求人机会话的场合。 
      工作方式: 
      一台主机连接了若干个终端;每个终端有一个用户在使用;交互式地向系统提出命令请求;系统接受每个用户的命令;采用时间片轮转方式处理服务请求;并通过交互方式在终端上向用户显示结果;用户根据上步结果发出下道命令 
      分时系统实现中的关键问题:及时接收。及时处理。 
      特征: 
      交互性:用户与系统进行人机对话。 
      多路性:多用户同时在各自终端上使用同一CPU。 
      独立性:用户可彼此独立操作,互不干扰,互不混淆。 
      及时性:用户在短时间内可得到系统的及时回答。 
      影响响应时间的因素:终端数目多少、时间片的大小、信息交换量、信息交换速度。
    
    ------------------------------------------------------------------------------------------------------------
    
    例子:
    
    分时——现在流行的PC,服务器都是采用这种运行模式,即把CPU的运行分成若干时间片分别处理不同的运算请求
    实时——一般用于单片机上,比如电梯的上下控制中,对于按键等动作要求进行实时处理
    
    
    
    **linux是分时系统,不过可以改成实时的如:UCOS就是linux修改而来的实时系统,至于他们的区别,下以引用百度中的类似回答,个人感觉简单明了:“分时系统是 一个系统可以同时为两个或两个以上的账户服务!
    实时系统 是能立即对指令做出反应的操作系统!微软的常见系统不能吧!而且还死机!战斗机中的操作系统就是实时的系统,想想如果别人打仗时战斗机中的电脑反应的是飞行员上一条指令或死机了,谁还敢开这架飞机呢?”**
    展开全文
  • Linux是一个多用户多任务的操作系统

    万次阅读 2016-04-24 15:25:01
    Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务又执行另一项任务。  操作系统管理多个用户的请求和多...
  • Linux 用户用户组管理

    千次阅读 2016-08-24 21:29:05
    概述Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行...
  • 全面讲解Linux系统多用户的特点

    千次阅读 2015-03-29 23:00:51
    在学习Linux系统中,我们经常会看到多用户这个词,你了解Linux系统多用户的特点么?这里为你介绍Linux系统多用户的特点。多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备...
  • Linux 系统处于正常状态,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务。如果系统管理员需要进行系统维护或系统出现启动异常,就需要进
  • Linux用户分类以及简单管理

    千次阅读 2018-06-30 14:43:11
    1.1 用户信息存放在 /etc/passwd, 使用下面的指令查看cat /etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/...
  • linux下创建用户

    千次阅读 2014-06-09 18:24:31
    Linux 系统是一个多用户多任务的分时操作系统,用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。 实现用户...
  • Linux用户用户组操作

    千次阅读 2020-03-05 09:07:45
    Linux系统是⼀个多用户多任务的分时操作系统 任何⼀个要使用系统资源的用户都必须⾸先向系统管理员申请⼀个账号 然后以这个账号的身份进⼊系统 与⽤户和⽤户组相关的信息都存放在⼀些系统⽂件中 这些⽂件包括/etc/...
  • linux多用户管理(转载)

    千次阅读 2011-08-07 01:01:51
    转载:http://www.linuxsir.org/main/?q=node/91 Linux 用户(user)和用户组(group)管理概述 作者:北南南北 来自:LinuxSir.Org 摘要:本文主要讲述在Linux 系统中用户(user)和用
  • Linux-用户管理

    千次阅读 多人点赞 2020-10-30 22:20:13
    linux详细用户指令实操,包括增删改查等,手把手带你入坑linux。 /etc/passwd /etc/shadow /etc/group linux怎么改用户密码? linux查看当前用户 linux设置用户linux用户权限 用户 添加 查询 修改 切换 删除 用户...
  • Linux操作系统基础

    万次阅读 多人点赞 2018-05-27 12:16:53
    Linux简介 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式...多用户,多任务,丰富的网络功能...
  • linux用户个组相关操作

    千次阅读 2016-09-30 15:49:35
    linux用户隶属于个组 让linux用户隶属于个组 usermod -g 组名 用户名:更改用户所属组,是覆盖; 小写 是 覆盖 usermod -G 组名1[,组名2,……] 用户名:添加用户所属组; 大写 是添加 usermod -...
  • Linux用户类型简述

    千次阅读 2019-04-12 14:45:30
    Linux系统是一个多用户多任务的操作系统,每个用户都有一个独立的身份号码,这个就是用户ID(UID)。在Linux中用户并不会去认识用户的用户名,它认识的其实是用户ID—UID。 Linux下用户分为3类:超级用户(root)、...
  • Linux用户用户组详解

    万次阅读 2016-04-19 11:36:13
    1、用户用户组文件 在linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。 在linux系统中,所创建的用户帐号和其相关信息(密码除外)均是存放在/etc/passwd配置文件中。由于所有...
  • 单用户、多用户、单任务、多任务,这么多种操作系统容易让人迷糊。其实这种初看你会觉得理解了一点,但其实你仔细研究会发现,多用户到底讲的是什么鬼? 多任务比较简单,就是应用程序都要放置到内存上去给CPU调度...
  • Linux-用户用户组管理

    千次阅读 2016-05-22 18:39:40
    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,...
  • Linux C实现纯用户态抢占式线程!

    千次阅读 多人点赞 2019-04-29 02:20:00
    用户空间的抢占式线程库其实是很麻烦的一件事! 嗯,九年前的事情了。当时一直想做一个纯用户态的线程,然而最终没有找到优雅的方法。 五一放假前的周六单休,在家带娃,想到一个办法。今夜作本文记下。 如果...
  • linux修改用户

    千次阅读 2021-01-28 14:34:35
    1.linux下的用户管理 Linux下有三类用户 1.超级用户: root 具有操作系统的一切权限 UID 值为0 ...文件中每行定义一个用户七个部分: 帐号名称:root 用户密码:x 用户标识码(用户ID):0 组标
  • Linux面试题(2020最新版)

    万次阅读 多人点赞 2020-03-01 11:14:38
    文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和...Linux系统安装个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什...
  • linux任务

    千次阅读 2010-02-09 22:24:00
    写过一篇关于linux多用户的文章,在提到多用户的时候,多任务的概念也是有必要提出的,实际上,多用户必然意味着多任务,每个用户起码一个任务。这么看来。多任务是比多用户更加基本的一个概念和特性了。 在计算机的...
  • Linux用户管理

    千次阅读 2010-11-06 17:47:00
    一、权限控制机制 Linux系统是个多用户系统,能做到不同的用户能同时访问不同的文件,因此一定要有文件权限控制机制。Linux系统的权限控制机制和Windows的权限控制机制有着很大的差别。Linux的文件或目录被一个用户...
  • Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,...
  • Linux/CentOS用户用户组及权限管理

    千次阅读 2018-08-20 18:04:48
    linux是一个多任务(multi-task)多用户(multi-user)的操作系统,每个用户和用户组都有自己的ID号UID GID,每个用户都有自己的家目录不能随意访问其他用户的家目录,管理员root除外。  用户的分类:(以centos7.x...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 308,727
精华内容 123,490
关键字:

linux是多用户分时

linux 订阅