Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304569
  • 博文数量: 118
  • 博客积分: 313
  • 博客等级: 二等列兵
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-12 22:51
文章分类

全部博文(118)

文章存档

2012年(68)

2011年(50)

分类:

2012-02-01 08:25:12

    这几天了解了Linux下用户及用户组管理方式,主要是通过man手册查看相关shell命令,在本地环境(Fedora 9)上进行了实际操作。这里总结一下,以备熟悉。
    为了后续内容的更新以及阅读方便,从今天开始,以后的总结性质的博文尽量列出提纲。
 
主要内容:
     1、用户管理(增、删、改;口令);
     2、用户组管理(增、删、改);
     3、用户/组相关配置文件;
     4、其它;
 
    Linux是一个多用户操作系统,允许多个用户同时登陆,Linux会为各用户提供相应的目录、Shell、权限,并响应用户的操作请求(分时)。在用户登陆系统之前,首先必须获得自己的账号与密码。不同用户完成各自的任务,其在linux系统的操作与权限常常也是不尽相同。Linux用户属于一个主用户组,也可以属于几个附属用户组。Linux中的文件权限与用户的id,gid密切相关。Linux可以看做是通过用户及用户组来管理区分各类权限的,其中,用户组是一个主要的权限分配单元之一。这里主要总结下管理员进行用户账户、用户组权限相关操作方式。
 
一、用户管理
    1、增加用户
       1.1、命令格式及选项意义
       #useradd [options] LOGIN
       #useradd -D [options]
       前者为:通过指定的选项(options)建立一个新用户;
       后者是:通过该命令更新建立用户的默认配置文件(具体有哪些配置文件,在第三节  中介绍吧)
       二者options相同,这里主要通过前者说明如何创建一个用户。
       常用的options意义如下:
       -c:--comment COMMENT
          后面跟一个与新添加用户(如上述命令中:LOGIN)相应的注释。这个选项有两点体现:登陆图形化的界面时候,桌面会显示该注释;在与用户相关的配置文件中,这个选项有相应的字段(见);
       -e:--expiredate EXPIRE_DATE
          用户过期的时间,格式为:YYYY-MM-DD;
       -b:--base-dir BASE_DIR
          用户主目录的基目录,通常为/home,当然也可以指定;
       -d:--home HOME_DIR
          后面跟用户的登陆的主目录,常与-m选项配合使用,目的是如果对应的目录不存在,则创建之;
        -g:--gid GROUP
           后面跟用户的用户组ID或者用户组标识,指定的用户组必须存在(用户组配置见);如果没有使能该选项,则默认情况下,系统会创建一个与用户名相同的用户组,参见选项-n;
        -G:--groups GROUP1[,GROUP2,...[,GROUPN]]]
           用户的附属组,在linux中,一个用户属于某一个主用户组,同时属于其他附属组,同主用户组一样,附属组也必须是已经存在的。操作系统对于登陆用户访问、操作权限常常是按照用户组分配的;
         -m:--create-home
            如果用户的主目录不存在,则创建之;
         -n:使能该选项后,用户的gid将采用/etc/default/useradd中指定的gid,如果该文件中没有指定,则默认为1;参见选项-g;
         -s: --shell SHELL
             指定用户登陆后采用的shell;下面为本人环境中的shell:
  1. [admin@localhost ~]$ ll /bin | grep sh
  2. -rwxr-xr-x 1 root root 730972 2007-02-12 23:18 bash
  3. lrwxrwxrwx 1 root root 4 2011-09-18 19:25 csh -> tcsh
  4. lrwxrwxrwx 1 root root 4 2011-09-18 19:24 sh -> bash
  5. -rwxr-xr-x 1 root root 345348 2007-02-26 23:58 tcsh
  6. [admin@localhost ~]$
       1.2、举例
            1.2.1、
  1. [root@localhost ~]# useradd -c "moo magic"-s /bin/bash -g admin -m moo
  2. [root@localhost ~]#
  3. [root@localhost ~]# id moo
  4. uid=503(moo) gid=500(admin) groups=500(admin)
  5. [root@localhost ~]# groups moo
  6. admin
  7. [root@localhost ~]# ll /home
  8. total 52
  9. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  10. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  11. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  12. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
            --------创建用户moo,注释为moo magic,指定其gid 为admin,shell为bash,并建立用户主目录/home/moo,该用户只有一个主用户组,没有附属用户组。通过查看home下的用户根目录属性也可以看出,该用户的用户与主用户组信息。
            1.2.2、
  1. [root@localhost ~]# useradd -s /bin/tcsh -g root -G bin,wheel -m randyit
  2. [root@localhost ~]# id randyit
  3. uid=504(randyit) gid=0(root) groups=0(root),1(bin),10(wheel)
  4. [root@localhost ~]# groups randyit
  5. root bin wheel
  6. [root@localhost ~]# ll /home
  7. total 52
  8. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  9. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  10. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  11. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  12. drwx------ 2 randyit root 4096 2012-01-30 16:45 randyit
  13. [root@localhost ~]#
          ----------建立用户randyit,主用户组为root,附属用户组为bin、wheel,指定shell为tcsh。
           1.2.3、
  1. [root@localhost ~]# useradd test
  2. [root@localhost ~]# id test
  3. uid=505(test) gid=505(test) groups=505(test)
  4. [root@localhost ~]# groups test
  5. test
  6. [root@localhost ~]# ll /home
  7. total 56
  8. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  9. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  10. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  11. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  12. drwx------ 2 randyit root 4096 2012-01-30 16:45 randyit
  13. drwx------ 2 test test 4096 2012-01-30 16:50 test
  14. [root@localhost ~]#
           -------创建用户test,默认主用户组为test(添加用户的同时添加一个同名的主用户组),该用户无附属用户组,默认shell 为bash(关于用户的默认属性,是根据用户信息的配置文件确定的,见/etc/default/useradd)。
 
2、修改用户
       2.1、命令格式及选项意义
       #usermod [options] LOGIN
        按照指定的options 修改账户LOGIN属性,修改后的属性信息存入系统账户信息文件(具体参见)。
       常用的options意义同useradd,这里单独整理下面几个:
       -l, --login NEW_LOGIN
          修改用户账号名,即将用户名:LOGIN修改为:NEW_LOGIN;
       -L, --lock
          锁定用户账号,此后账户无法登陆shell(影响/etc/shadow文件中口令字段,将之修改为!);
       -U,--unlock
          解锁一个用户账号,与-L选项对应。
        -G:--groups GROUP1[,GROUP2,...[,GROUPN]]]
           修改用户的附属组,附属组之间用逗号分开,如果之前该用户属于a,b,c三个附属组,如果此次修改为a,b,d,则该用户的附属用户组为a,b,d,该用户不再属于c附属组;如果想追加附属用户组 ,需要增加-a选项;
 
        2.2、举例
             2.2.1
  1. [root@localhost ~]# usermod -g admin -G wheel,nobody randyit
  2. [root@localhost ~]# id randyit
  3. uid=504(randyit) gid=500(admin) groups=500(admin),10(wheel),99(nobody)
  4. [root@localhost ~]# groups randyit
  5. admin wheel nobody
  6. [root@localhost ~]# ll /home
  7. total 56
  8. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  9. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  10. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  11. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  12. drwx------ 2 randyit root 4096 2012-01-30 16:45 randyit
  13. -rw-r--r-- 1 root root 9516 2011-11-11 04:51 README.csupport
  14. drwx------ 2 test test 4096 2012-01-30 16:50 test
  15. [root@localhost ~]# chgrp admin randyit
  16. chgrp: cannot access `randyit': No such file or directory
  17. [root@localhost ~]# chgrp admin /home/randyit
  18. [root@localhost ~]# ll /home
  19. total 56
  20. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  21. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  22. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  23. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  24. drwx------ 2 randyit admin 4096 2012-01-30 16:45 randyit
  25. drwx------ 2 test test 4096 2012-01-30 16:50 test
  26. [root@localhost ~]#
        -------修改账户randyit,将其主用户组修改为admin,附属用户组修改为nobody、wheel(/home/randyit对应的文件属性中主用户目录没有更改,为啥涅?通过chgrp修改之,与文件相关的访问权限后续统一总结吧)。
 
          2.2.2、

 

  1. [root@localhost ~]# id randyit
  2. uid=504(randyit) gid=500(admin) groups=500(admin),10(wheel),99(nobody)
  3. [root@localhost ~]# groups randyit
  4. admin wheel nobody
  5. [root@localhost ~]# ll /home
  6. total 40
  7. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  8. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  9. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  10. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  11. drwx------ 2 randyit admin 4096 2012-01-30 16:45 randyit
  12. drwx------ 2 test test 4096 2012-01-30 16:50 test
  13. [root@localhost ~]#
  14. [root@localhost ~]# usermod -a -G root randyit
  15. [root@localhost ~]# id randyit
  16. uid=504(randyit) gid=500(admin) groups=500(admin),0(root),10(wheel),99(nobody)
  17. [root@localhost ~]# groups randyit
  18. admin root wheel nobody
  19. [root@localhost ~]# ll /home
  20. total 40
  21. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  22. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  23. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  24. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  25. drwx------ 2 randyit admin 4096 2012-01-30 16:45 randyit
  26. drwx------ 2 test test 4096 2012-01-30 16:50 test
  27. [root@localhost ~]#
           ---------用户randyit 附属用户组增加root。
          2.2.3

 

  1. [root@localhost ~]# id randyit
  2. uid=504(randyit) gid=500(admin) groups=500(admin),0(root),10(wheel),99(nobody)
  3. [root@localhost ~]# groups randyit
  4. admin root wheel nobody
  5. [root@localhost ~]# ll /home | grep randy
  6. drwx------ 5 randyit admin 4096 2012-01-30 17:31 randyit
  7. [root@localhost ~]#
  8. [root@localhost ~]# usermod -d /home/newrandyit -m -l newrandyit randyit
  9. [root@localhost ~]# id newrandyit
  10. uid=504(newrandyit) gid=500(admin) groups=500(admin),0(root),10(wheel),99(nobody)
  11. [root@localhost ~]# groups newrandyit
  12. admin root wheel nobody
  13. [root@localhost ~]# ll /home/ | grep randy
  14. drwx------ 5 newrandyit admin 4096 2012-01-30 17:31 newrandyit
            -----修改randyit用户名为newrandyit,并更改HOME_DIR。如果没有-d 及-m选项,则newrandyit根目录不变。一般更改时候都会同步修改其根目录。
            另:如果没有-m选项,则用户的根目录依旧为randyit,不更改。主用户组、附属用户组属性均不变(通过后面说明的用户账号相关的文件也可以印证)。     
        2.2.4
  1. [root@localhost ~]# id test
  2. uid=505(test) gid=505(test) groups=505(test)
  3. [root@localhost ~]# groups test
  4. test
  5. [root@localhost ~]#
  6. [root@localhost ~]# usermod -l newtest test
  7. [root@localhost ~]#
  8. [root@localhost ~]# id newtest
  9. uid=505(newtest) gid=505(test) groups=505(test)
  10. [root@localhost ~]# groups newtest
  11. test
  12. [root@localhost ~]# ll /home
  13. total 40
  14. drwx------ 25 admin admin 4096 2012-01-30 10:35 admin
  15. drwx------ 23 hello root 4096 2012-01-30 09:11 hello
  16. drwx------ 2 root root 16384 2011-09-18 19:22 lost+found
  17. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  18. drwx------ 5 newrandyit admin 4096 2012-01-30 17:31 newrandyit
  19. drwx------ 2 newtest test 4096 2012-01-30 16:50 test
  20. [root@localhost ~]#
  21. [root@localhost ~]#
            ---------如果仅仅更改用户名test 为newtest,则其他属性均不改变,仅仅改变登陆名而已。
 
3、删除用户
       3.1、命令格式及选项意义
       #userdel [options] LOGIN
       删除账户及相关文件
 
       选项:
       -f,--force
           强制删除指定用户名,Include 用户的主目录、邮件,无论相关是否在访问。如果同时存在一个与该用户名相同的gid,则同时删除该用户组。建议慎重选择;
       -r,--remove
           删除用户主目录及Mail spool;Mail相关路径在//etc/login.defs中
 
       3.1、举例
            3.1.1
  1. [root@localhost ~]# id moo
  2. uid=503(moo) gid=500(admin) groups=500(admin)
  3. [root@localhost ~]# groups moo
  4. admin
  5. [root@localhost ~]# ll /home | grep moo
  6. drwx------ 2 moo admin 4096 2012-01-30 16:34 moo
  7. [root@localhost ~]#
  8. [root@localhost ~]# ll /var/mail/ | grep moo
  9. -rw-rw---- 1 moo mail 0 2012-01-30 16:34 moo
  10. [root@localhost ~]#
  11. [root@localhost ~]# userdel -r -f moo
  12. [root@localhost ~]# id moo
  13. id: moo: No such user
  14. [root@localhost ~]# groups moo
  15. id: moo: No such user
  16. [root@localhost ~]# ll /home | grep moo
  17. [root@localhost ~]# ll /var/mail/ | grep moo
  18. [root@localhost ~]#
  19. [root@localhost ~]#
          ---------删除用户moo,同时删除用户相关的目录(不会删除用户相关的用户组,需要grpdel等操作,见后文)。
 
4、用户口令管理
       4.1、命令及选项意义
       #passwd [options] [LOGIN]
       更改用户密码及用户密码管理;
 
       选项:
       -l:锁定指定用户,该用户不能登陆;
       -u:解除指定用户密码锁定,与-l对应;
       -d:删除指定用户的密码,使之不用密码即可登陆;
      其他选项不列举了,参见man passwd;
 
       4.2、举例:
            4.2.1
  1. [admin@localhost ~]$ sudo passwd -l newrandyit
  2. Locking password for user newrandyit.
  3. passwd: Success
  4. [admin@localhost ~]$ su newrandyit
  5. Password:
  6. su: incorrect password
  7. [admin@localhost ~]$
  8. [admin@localhost ~]$ su newrandyit
  9. Password:
  10. su: incorrect password
  11. [admin@localhost ~]$ sudo passwd -u newrandyit
  12. Unlocking password for user newrandyit.
  13. passwd: Success
  14. [admin@localhost ~]$ su newrandyit
  15. Password:
  16. [newrandyit@localhost admin]$
               -----------锁定用户newrandyit,之后用户无法登陆,取消锁定之后,用户可正常登陆。
 
阅读(2632) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~