练习1:创建用户Oracle,所属附加组database和sql,ID号为3000, 家目录为/home/database

     groupadd database

     groupadd sql    (先新建两个用户组,问:groupadd是否可一次新建多个组?)

     useradd  oracle -u 3000 -d /home/database -G database,sql

     id oracle        (查看用户oracle id以及组相关信息)

        uid=3000(oracle) gid=3000(oracle) groups=3000(oracle),1000(database),1001(sql)

     cat /etc/passwd |grep oracle (从passwd文件中筛选出oracle相关信息)

        oracle:x:3000:3000::/home/database:/bin/bash

     cat /etc/shadow |grep oracle (查看oracle用户账户密码相关信息)                       oracle:$6$bnk5PioM$8h04509U0yhpq5bkicoJYWpE1yEJlIuIhD5jg3vu.orPs2ICFqTLl.chuKFASekW4UkEilZfLrc2C57YPcCnf1:16673:0:99999:7:::


用户管理和权限管理:

AAA认证机制(验证、授权、计费Authencattion、Authorzation、Accounting)

      A:认证机制

         identity(username/password)

          token

      A:permission

         mode

         ownership


Linux用户:UserName/password

UID:0-65535

管理员:0

普通用户:1-60000

系统用户:

CentOS6: 1-499

CentOS7:1-999

登录用户:

CentOS6: 500+

CentOS7: 1000+

Linux组:GroupName/GID

管理员组:0

普通组:

1-499, 1-999

500+, 1000+


用户的基本组:

用户的私有组:

用户的附加组:

总结:任何一个组都可以添加多个用户的,一个用户可以同时隶属于多个组,除自己基本组之外的都叫做附加组,默认创建一个用户,会自动创建一个同名的组,这个同名的组就是这个用户的基本组,且是私有组 ,私有组包含的组成员 有且只有一个!


Linux用户和组的相关的配置文件:

/etc/passwd:用户名、UID、基本组等信息

/etc/group:组名、GID、组内包含的用户;

/etc/shadow:用户密码及相关属性;

/etc/gshadow:组的密码及相关属性;


/etc/passwd:

name:password:UID:GID:GECOS:directory:shell

登录名:x:UID:GID:comment:主目录:用户默认shell


/etc/shadow:

login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field


$6$YNzGOv5VyXxmDU2n$PxariU7Ag0mBlzBoNLWUjubn9OBtoLJauXIfoRqQ1FtZt058FrQKJO6QVJTUXkP4LUKPsiH7ejWo8bg6c4RrC1

6:加密算法



单向加密:

提取数据指纹;


md5, sha1, sha224, sha256, sha384, sha512


雪崩效应:

定长输出:


相对于Unix元年;

1970年1月1号;

/etc/group

group_name:password:GID:user_list


密码的复杂性策略:

1、使用数字、小写字母、大写字母、特殊字符四类中至少三类;

2、足够长;

3、使用随机密码;

4、定期更换;

  

(注:以下部分借鉴 JY1506403-45+fz8770(上海:方旨)同学博客,并征得对方同意)

 

用户和组管理的相关命令: 
    useradd、usermod、passwd、userdel 
    groupadd、groupmod、gpasswd、groupdel 
    chage, chsh, chfn 
    id, w, who, whoami 
    su 

 

useradd:创建用户


            useradd [options] LOGIN 
            useradd -D [options] 
                -r: 创建系统用户 
                -u UID: 指定UID; 
                -g GID: 指定用户所属基本组,此组必须事先存在 
                -c 'COMMENT': 
                -d /PATH/TO/SOMEWHERE:指定用户的主目录路径;此位置不能事先存在,否则,其用户相关配置文件将被复制;/etc/skel 
                -s SHELL:设定用户的默认shell; 
                    cat /etc/shells 
                -G GID,...:指定所属的附加组; 
                -M: 不给用户创建家目录;

 

示例:

[root@Blackghost ~] useradd tank                            #添加用户
[root@Blackghost ~] useradd -r zhangy                       #添加系统用户
[root@Blackghost ~] useradd -d /home/zhangying zhangying    #添加用户,并且指定,home目录
[root@Blackghost ~] useradd -g mytest -d /home/hao hao      #添加用户,指定组,并且设定home目录(此home目录不能事先存在)
[root@Blackghost ~] useradd -e 04/05/13 fxxk                #添加用户,并给用户设置有效期

 

练习:创建用户Oracle,所属附加组database和sql,ID号为400, 家目录为/home/database;

 

[root@Blackghost ~]  useradd -u 400 -G database,sql -d /home/database oracle

 

groupadd:创建组


    groupadd [OPTIONS] GROUPNAME 
        -g GID: 指明组ID; 
        -r: 创建系统组;

 

示例:

添加一个用户组[root@Blackghost ~] groupadd mytest添加一个用户组,并指定GID[root@Blackghost ~] groupadd -g 444 test

 

id:查看用户相关的id信息


    id [OPTION]... [USER] 
        -u: UID 
        -g: GID 
        -G: Groups 
        -n: NAME

示例:

[root@localhost ~]# id                  #显示当前用户的信息
uid=0(root) gid=0(root) 组=0(root)

[root@localhost ~]# id zhangy           #显示zhangy的信息
uid=999(zhangy) gid=999(zhangy) 组=999(zhangy)

 

su:switch user, 切换用户或以其它用户的身份执行命令


    切换方式: 
        su USERNAME: 非完全切换;非登录式切换 
        su - USERNAME或su -l USERNAME: 完全切换;登录式切换

    仅以指定用户的身份执行指定的命令: 
        su - USERNAME -c 'COMMAND'

 

示例:

[root@Blackghost ~] su zhangying              #切换用户,原用户环境变量
[root@Blackghost ~] su - zhangying		      #切换用户,新用户环境变量
[zhangying@Blackghost ~] su -c ls root        #切换用户执行命令,执行后返回原用户

usermod:用户属性修改


            usermod [OPTION]... LOGIN 
                -u UID 
                -g GID 
                -G GID[,GID,...]:修改用户所属的附加组;同时使用-a选项为追加附加组; 
                -s SHELL 
                -c 'COMMENT' 
                -d HOME: 修改用户的家目录为新位置时,用户原来的文件是不会被移动至新家;-m选项可实现同时将其迁至新的家目录; 
                -l LOGIN:

                -L:lock user 
                -U: unlock user

 

示例:

[root@Blackghost ~] usermod -d /home/bak/ zhangying    #更改用户home目录
[root@Blackghost ~] usermod -e 05/06/13 zhangying      #给用户加个有效期
 
1、将 newuser2 添加到组 staff 中# usermod -G staff newuser22、修改 newuser 的用户名为 newuser1# usermod -l newuser1 newuser3、锁定账号 newuser1# usermod -L newuser14、解除对 newuser1 的锁定# usermod -U newuser1

passwd:给用户添加密码


            passwd [OPTION] [UserName]

                -l: lock user 
                -u: unlock user

                -n mindays: 最短使用期限; 
                -x maxdays:默认为99999天; 
                -w warndays: 
                -i inactivedays:

                --stdin:从标准输出接收用户密码;

                    echo 'centos' | passwd --stdin centos

 

示例:

[root@Blackghost ~] passwd zhangying     #给zhangying修改密码
 

userdel:删除用户

     
            userdel [-r] USERNAME 
                -r:删除用户的同时删除其家目录;

        groupmod: 组属性修改 
            groupmod [OPTION] GROUPNAME 
                -n GROUP_NAME 
                -g GID

 

示例:

[root@Blackghost ~] userdel fxxk       #删除用户
[root@Blackghost ~] userdel -r hao     #删除用户,并且删除用户home目录

 

gpasswd:设定组密码

用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
参数:
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组 
gpasswd groupname:如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可
 
示例:
 
[root@localhost ~]# gpasswd -A peter test2  #将peter设为test2组管理员

[root@localhost ~]# gpasswd -a peter test2  #将用户peter加入到test2组

[root@localhost ~]# gpasswd -d peter test2  #将用户peter从test2组中移出
 
 

newgrp:切换基本组为指定的组

 

示例:

[zhangy@localhost ~]# newgrp www  #登录到www群组
 

说明:newgrp指令类似login指令,当它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。单一用户要同时隶属多个群组,需利用交替用户的设置。若不指定群组名称,则newgrp指令会登入该用户名称的预设群组。

 

groupdel:删除组

示例:

[root@Blackghost ~] groupdel test   #删除组test

 

chage:修改用户账号及密码的属性


            chage [OPTION]... LOGIN 

  参数意思:
  -m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
  -M 密码保持有效的最大天数。
  -W 用户密码到期前,提前收到警告信息的天数。
  -E 帐号到期的日期。过了这天,此帐号将不可用。
  -d 上一次更改的日期
  -I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
  -l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
 
示例:
1
[root@localhost ~]# chage -l zhangy      #查看用户密码设定情况
最近一次密码修改时间                                    :  4月 27, 2013
密码过期时间                                    : 从不
密码失效时间                                    : 从不
帐户过期时间                                            : 从不
两次改变密码之间相距的最小天数          :-1
两次改变密码之间相距的最大天数          :-1
在密码过期之前警告的天数        :-1

[root@localhost ~]# chage -M 90 zhangy        #密码有效期90天

[root@localhost ~]# chage -d 0 zhangy       #强制用户登陆时修改口令

[root@localhost ~]# chage -d 0 -m 0 -M 90 -W 15 zhangy   #强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示
 
2
# chage -E '2014-09-30' test  # test这个账号的有效期是2014-09-30
 

 

其它命令:

chfn:改 变 你 的 finger 讯 息

chsh:用于 改变 用户的 登录 shell. 如果 没有在 命令行上 指定 shell, chsh 能够 做出 提示.

finger:用户信息查找

whoami:打印与当前生效的用户 ID 关联的用户名。与 id -un 相同。

who:显示当前已登录的用户信息

用法:who [选项]... [ 文件 | 参数1 参数2 ]
示例:
[root@localhost ~]# who    #显示目前登入系统的用户信息
tank     tty1         2013-05-10 08:29
tank     pts/0        2013-05-10 08:29 (192.168.56.1)

[root@localhost ~]# who -a   #显示目前登入系统的用户详细信息
           系统引导 2013-05-10 08:11
           运行级别 2 2013-05-10 08:11
登录     tty4         2013-05-10 08:11               814 id=4
登录     tty5         2013-05-10 08:11               825 id=5
登录     tty2         2013-05-10 08:11               842 id=2
登录     tty3         2013-05-10 08:11               845 id=3
登录     tty6         2013-05-10 08:11               852 id=6
tank     - tty1         2013-05-10 08:29 01:08        1395
tank     + pts/0        2013-05-10 08:29   .          1493 (192.168.56.1)

[root@localhost ~]# who -q #列出所有已登录用户的登录名与用户数量
tank tank
# 用户数=2

[root@localhost ~]# who -u  #列出已登录的用户
tank     tty1         2013-05-10 08:29 01:08        1395
tank     pts/0        2013-05-10 08:29   .          1493 (192.168.56.1)

[root@localhost ~]# who -r  #查看已登录的用户的级别
         运行级别 2 2013-05-10 08:11

[root@localhost ~]# who -b   #上次系统启动时间
         系统引导 2013-05-10 08:11		
 

w:显示目前登入系统的用户信息。

语法:w [-fhlsuV][用户名称]
-f  开启或关闭显示用户从何处登入系统。

-h  不显示各栏位的标题信息列。

-l  使用详细格式列表,此为预设值。

-s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。

-u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。
 
示例:
[root@localhost ~]# w     #示目前登入系统的用户信息
 09:30:39 up  1:19,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
tank     tty1                      08:29    1:01m  1.04s  0.91s -bash
tank     pts/0    192.168.56.1     08:29    0.00s  1.70s  0.13s sshd: tank [priv]

用户对文件的访问权限有三种:

r, w, x


文件:

r: 可使用文件查看工具查看其内容;

w: 可使用文件编辑工具编辑其内容;

x: 可向内核请求将此文件运行为进程;


目录:

r: 可使用ls命令列出目录中的文件或子目录列表;

w: 可在此目录中创建或删除文件;

x:可使用‘ls -l’列出目录文件及子目录的详细属性信息;可使用cd命令切换工作目录为指定目录;


文件的权限主要针对三类对象进行定义:

ownuer: u, 属主;

group: g, 属组;

other: o, 其它;


某类用户对某文件的访问权限:

--- 000 0

--x 001 1

-w- 010 2

-wx 011 3

r-- 100 4

r-x 101 5

rw- 110 6

rwx 111 7


664:rw-rw-r--

rwxr-x---: 750


权限管理: chmod

所属关系管理: chown, chgrp

文件遮罩码:umask