北在北方

太白枝头看,花开不计年,杯中浮日月,楼外是青天。

导航

Linux用户管理

Posted on 2012-12-23 16:36  CN.programmer.Luxh  阅读(854)  评论(0编辑  收藏  举报

  1、用户信息文件:/etc/passwd

[root@bogon ~]# cat /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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
tomcat:x:91:91:Apache Tomcat:/usr/share/tomcat6:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
[root@bogon ~]# 

    1)想知道系统有多少个用户,可以直接使用wc -l /etc/passwd

[root@bogon ~]# wc -l /etc/passwd
28 /etc/passwd
[root@bogon ~]#

    2)格式

root:x:0:0:root:/root:/bin/bash

 

     1:用户名,用户登录系统时使用的用户名

    2:密码位

    3:UID,用户标识号

    4:GID,缺省组标识号

    5:注释性描述

    6:宿主目录,用户登录系统后的缺省目录

    7:用户使用的shell,默认为bash

    3)用户类型

      Linux用户分三种:

      超级用户(root,UID=0)

        就是说UID为0的用户都是超级用户,只要把/etc/passwd相应的用户的UID改为0,该用户就变成超级用户了

      普通用户(UID 500-60000)

      伪用户(UID 1-499)

        伪用户与系统和程序服务相关,如bin、daemon、shutdown、halt等,任何Linux系统都默认有这些伪用户;mail、ftp、sshd等,与Linux系统的进程相关;

        伪用户通常不需要或无法登录系统;

        伪用户可以没有宿主目录

    4)用户组

      每个用户都至少属于一个用户组

      每个用户组都可以包含多个用户

      同一用户组的用户享有该组共有的权限

    5)为什么密码不放在/etc/passwd中

      在早期的Linux系统中,密码是存放在/etc/passwd文件中的,但是每个用户对该文件都有读的权限,这是比较危险的,后来就不存放在这个文件了

[root@bogon ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 1296 12月  5 04:50 /etc/passwd
[root@bogon ~]# 

  2、密码文件 /etc/shadow

[root@bogon ~]# cat /etc/shadow
root:$6$Ri9bO1RH$Tsp2w6VXiZwb1vnTPuF7vxwVhLdYp9E7nHCPHxxaeouaITbBHAZ4d214wACpfBhNgNRxqw/24ph7uSHTiNMIK.:15686:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::
operator:*:15513:0:99999:7:::
games:*:15513:0:99999:7:::
gopher:*:15513:0:99999:7:::
ftp:*:15513:0:99999:7:::
nobody:*:15513:0:99999:7:::
dbus:!!:15678::::::
vcsa:!!:15678::::::
ntp:!!:15678::::::
apache:!!:15678::::::
saslauth:!!:15678::::::
postfix:!!:15678::::::
haldaemon:!!:15678::::::
abrt:!!:15678::::::
avahi:!!:15678::::::
tomcat:!!:15678::::::
sshd:!!:15678::::::
webalizer:!!:15678::::::
tcpdump:!!:15678::::::
[root@bogon ~]# 

    1)如果把/etc/shadow文件中的相应的加密密码删除,那么用户不需要密码就可以登陆系统了

    2)格式

root:$6$Ri9bO1RH$Tsp2w6VXiZwb1vnTPuF7vxwVhLdYp9E7nHCPHxxaeouaITbBHAZ4d214wACpfBhNgNRxqw/24ph7uSHTiNMIK.:15686:0:99999:7:::

  

    1:用户名

    2:加密密码

    3:最有一次修改时间,以天位单位,从1970年1月1日为参考点

    4:最小时间间隔,两次修改密码之间的最小天数,为0表示不限制,如改为3,表示间隔3天以上才能修改密码

    5:最大时间间隔,密码保持有效的最多天数,超过天数不过密码,则用户无法登录

    6:警告时间:从系统开始警告到密码失效的天数

    7:账号闲置时间

    8:失效时间,密码失效的绝对天数

    9:标志,一般不使用

  3)其实在设置密码或修改密码时,是先把密码写到/etc/passwd文件中,然后再转化到/etc/shadow文件中

    使用密码回显命令可以把密码写回到/etc/passwd文件中

[root@bogon ~]# pwunconv
[root@bogon ~]# grep root /etc/passwd /etc/shadow
/etc/passwd:root:$6$Ri9bO1RH$Tsp2w6VXiZwb1vnTPuF7vxwVhLdYp9E7nHCPHxxaeouaITbBHAZ4d214wACpfBhNgNRxqw/24ph7uSHTiNMIK.:0:0:root:/root:/bin/bash
/etc/passwd:operator:*:11:0:operator:/root:/sbin/nologin
grep: /etc/shadow: 没有那个文件或目录
[root@bogon ~]#

    使用pwconv命令将密码转化到/etc/shadow文件中

[root@bogon ~]# pwconv
[root@bogon ~]# grep root /etc/passwd /etc/shadow
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/shadow:root:$6$Ri9bO1RH$Tsp2w6VXiZwb1vnTPuF7vxwVhLdYp9E7nHCPHxxaeouaITbBHAZ4d214wACpfBhNgNRxqw/24ph7uSHTiNMIK.:15694:0:99999:7:::
[root@bogon ~]# 

    4)/etc/shadow文件只有root用户有读权限,当然root用户也可以用vi修改后使用wq!强制保存

  3、了解了用户信息文件,可以不使用useradd命令就可以添加用户

    1)使用vi编辑/etc/passwd文件,在最后面添加一个用户

    2)手工创建登录后的宿主目录

[root@bogon ~]# mkdir /home/luxh

    3)改变宿主目录的所有者为luxh

[root@bogon ~]# chown luxh /home/luxh

    4)使用vi编辑/etc/shadow文件,添加用户luxh的信息

luxh::15694:0:99999:7:::

    5)可以用luxh用户登录了

    我们看到登录的提示符和普通用户不一样,是因为我们还没有把用户的环境变量和配置复制到宿主目录  

[root@bogon ~]# ls -a /etc/skel
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla
[root@bogon ~]# cd /etc/skel
[root@bogon skel]# cp -rf .* /home/luxh
cp: 不会创建指向目录"/home/luxh/." 的硬链接"/home/luxh/skel"
cp:是否覆盖"/home/luxh/.bash_logout"? 
cp:是否覆盖"/home/luxh/.bash_profile"? 
cp:是否覆盖"/home/luxh/.bashrc"? 
[root@bogon skel]# 

    再重新用luxh登录,如下:

    提示组group ID 501没有找到,是因为刚才手工创建用户的时候,指定的组id并不存在,创建这个组或者指定一个存在的组即可

   4、用户配置文件

    1)/etc/login.defs,一些用户信息缺省配置

[root@bogon ~]# cat /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500
UID_MAX                 60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512 

[root@bogon ~]# 

    2)/etc/default/useradd

[root@bogon ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

[root@bogon ~]# 

  5、登录信息 /etc/motd  /etc/issue

    1)/etc/issue 登录前的提示信息,修改如下:

Welcome to www.luxh.cnblogs.com
Kernel \r on an \m

    

    2)/etc/modt 登录后的提示信息,修改如下

Hello,man

    

   6、用户组文件 /etc/group

sys:x:3:bin,adm

    sys:组名

    x:组密码位,一般不使用

    GID:组标识号

    bin,adm:组内用户列表

  7、用户组密码文件 /etc/gshadow  

  8、用户组管理命令

    1)添加用户组 groupadd

    创建用户组webadmin

[root@localhost ~]# groupadd webadmin
[root@localhost ~]# grep webadmin /etc/group
webadmin:x:500:
[root@localhost ~]#

    2)设置组密码及管理组内成员 gpasswd

       -a 添加用户到用户组

      把lihuai添加到root组

[root@localhost ~]# gpasswd -a lihuai root
Adding user lihuai to group root
[root@localhost ~]# grep root /etc/group
root:x:0:lihuai
[root@localhost ~]

      -d 把用户从用户组删除

      把lihuai从root组删除

[root@localhost ~]# gpasswd -d lihuai root
Removing user lihuai from group root
[root@localhost ~]# grep root /etc/group
root:x:0:
[root@localhost ~]#

      -A设置用户组管理员

[root@localhost ~]# grep webadmin /etc/group
webadmin:x:500:lihuai,luxiaofeng
[root@localhost ~]#

     把lihuai提升为组管理员,lihuai就可以对组中的用户进行管理

[root@localhost ~]# gpasswd -A lihuai webadmin
[root@localhost ~]#

 

    -r 删除用户组密码

    -R 禁止用户切换位该组

    3)删除用户组 groupdel 组名

    4)修改用户组信息 groupmod

      修改webadmin组名为nginx

[root@localhost ~]# groupmod -n nginx webadmin

    5)newgrp  切换用户组

    6)grpck  用户组配置文件检测

    7)chgrp  修改文件所属组

    8)vigr 编辑/etc/group文件

  9、用户管理命令

    1)添加用户:useradd 选项 用户名

      u:UID

      g:缺省所属用户组GID

      G:指定用户所属多个组

      d:宿主目录

      s:命令解释器Shell

      c:描述信息

      e:指定用户失效时间

[root@localhost ~]# useradd -g webadmin -c "a man" yekai
[root@localhost ~]# grep yekai /etc/passwd
yekai:x:502:500:a man:/home/yekai:/bin/bash
[root@localhost ~]#

    2)给用户指定密码 passwd 用户名

[root@localhost ~]# passwd yekai
更改用户 yekai 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]#

    3)修改用户信息 usermod

      修改yekai的登录名为lihuai

[root@localhost ~]# usermod -l lihuai yekai
[root@localhost ~]# grep lihuai /etc/passwd
lihuai:x:502:500:a man:/home/yekai:/bin/bash
[root@localhost ~]# 

    4)把用户添加到一个组中

    把lihuai添加到sys组

[root@localhost ~]# usermod -g sys lihuai
[root@localhost ~]# grep sys /etc/group
sys:x:3:bin,adm,lihuai
[root@localhost ~]# 

    5)groups 查看用户属于哪些组

[root@localhost ~]# groups lihuai
lihuai : sys webadmin
[root@localhost ~]#

    6)pwck 检测/etc/passwd文件

[root@localhost ~]# pwck
user 'adm': directory '/var/adm' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'gopher': directory '/var/gopher' does not exist
user 'saslauth': directory '/var/empty/saslauth' does not exist
user luxh has an entry in /etc/shadow, but its password field in /etc/passwd is not set to 'x'
pwck:无改变
[root@localhost ~]#

    7)vipw 编辑/etc/passwd文件

    8)id 查看用户id和组信息

[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root)
[root@localhost ~]# 

    9)su 切换用户(su - 用户名 ,会切换环境变量)

    10)passwd -S 查看用户密码状态

[root@localhost ~]# passwd -S luxh
luxh NP 2012-12-20 0 99999 7 -1 (密码为空。)
[root@localhost ~]# passwd -S lihuai
lihuai PS 2012-12-22 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
[root@localhost ~]# 

    11)who、w 查看当前登录用户信息

[root@localhost ~]# who
root     tty1         2012-12-22 20:02
root     pts/0        2012-12-22 20:32 (192.168.1.65)
[root@localhost ~]# w
 21:12:15 up  1:11,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                20:02    1:09m  0.04s  0.04s -bash
root     pts/0    192.168.1.65     20:32    0.00s  0.42s  0.01s w
[root@localhost ~]# 

    12)锁定用户 usermod -L 用户名 或者 passwd -l 用户名

[root@localhost ~]# grep lihuai /etc/shadow
lihuai:$6$vrCyuC4j$2L2SSGpmT3vVXIRSbm9HqSOGiMw8EQzlCMYi7COQIoLGU2dqS8YvP9FNoGur.qq4k9kj417r7BxFa1zCfbVgk/:15696:0:99999:7:::
[root@localhost ~]# usermod -L lihuai
[root@localhost ~]# passwd -S lihuai
lihuai LK 2012-12-22 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# grep lihuai /etc/shadow
lihuai:!$6$vrCyuC4j$2L2SSGpmT3vVXIRSbm9HqSOGiMw8EQzlCMYi7COQIoLGU2dqS8YvP9FNoGur.qq4k9kj417r7BxFa1zCfbVgk/:15696:0:99999:7:::
[root@localhost ~]# 

    锁定的原理非常简单,就是在密码前加上一个!

    13)恢复用户 usermod -U 用户名 或者 passwd -u 用户名

[root@localhost ~]# passwd -u lihuai
解锁用户 lihuai 的密码 。
passwd: 操作成功
[root@localhost ~]# grep lihuai /etc/shadow
lihuai:$6$vrCyuC4j$2L2SSGpmT3vVXIRSbm9HqSOGiMw8EQzlCMYi7COQIoLGU2dqS8YvP9FNoGur.qq4k9kj417r7BxFa1zCfbVgk/:15696:0:99999:7:::
[root@localhost ~]#

    恢复的原理就是把密码前的!去掉

    14)删除用户 userdel -r 用户名

      -r 删除用户目录

    15)chage 设置密码

      -l 查看用户密码设置

[root@localhost ~]# chage -l lihuai
Last password change                                    : Dec 22, 2012
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
[root@localhost ~]# 

      -m 密码修改最小天数

      -M 密码修改最大天数

      -d 密码最后修改日期

      -I 密码过期后,锁定账户的天数

      -E 设置密码的过期日期,如果为0代表密码立即过期,如果为1,表示永不过期

      -W 设置密码过期前,开始提醒的天数

   10、用户组授权

    授权用户lihuai和luxiaofeng对目录/software有写权限

    1)创建目录

[root@localhost ~]# mkdir /software
[root@localhost ~]# ls -ld /software
drwxr-xr-x 2 root root 4096 12月 22 20:36 /software
[root@localhost ~]#

    可以看到普通用户对该目录是没有写权限的

    2)添加组softadm

[root@localhost ~]# groupadd softadm
[root@localhost ~]# grep softadm /etc/group
softadm:x:501:
[root@localhost ~]#

    3)把用户lihuai和luxiaofeng添加到组softadm中,可以使用useradd或者gpasswd命令

[root@localhost ~]# usermod -G softadm lihuai
[root@localhost ~]# gpasswd -a luxiaofeng softadm
Adding user luxiaofeng to group softadm
[root@localhost ~]# grep softadm /etc/group
softadm:x:501:lihuai,luxiaofeng
[root@localhost ~]#

    4)改变目录/software的所属组

[root@localhost ~]# chgrp softadm /software
[root@localhost ~]# ls -ld /software
drwxr-xr-x 2 root softadm 4096 12月 22 20:36 /software
[root@localhost ~]#

    5)对目录所属组授予写权限

[root@localhost ~]# chmod g+w  /software
[root@localhost ~]# ls -ld /software
drwxrwxr-x 2 root softadm 4096 12月 22 20:36 /software
[root@localhost ~]# 

    这样,属于softadm组的用户对software目录就有写权限了

   11、批量添加用户

    1)编写用户信息文件users.info,格式必须按照/etc/passwd文件的格式

luxh01::1001:500::/home/luxh01:/bin/bash
luxh02::1002:500::/home/luxh02:/bin/bash
luxh03::1003:500::/home/luxh03:/bin/bash
luxh04::1004:500::/home/luxh04:/bin/bash
luxh05::1005:500::/home/luxh05:/bin/bash

    2)使用newusers命令生成用户信息到/etc/passwd中

[root@bogon ~]# newusers < users.info

    再看看/etc/passwd文件,已经生成了5个用户信息

[root@bogon ~]# tail -5 /etc/passwd
luxh01:x:1001:500::/home/luxh01:/bin/bash
luxh02:x:1002:500::/home/luxh02:/bin/bash
luxh03:x:1003:500::/home/luxh03:/bin/bash
luxh04:x:1004:500::/home/luxh04:/bin/bash
luxh05:x:1005:500::/home/luxh05:/bin/bash
[root@bogon ~]#

    宿主也自动建好了

[root@bogon ~]# ls /home
lixunxuan   luixaofeng  luxh01  luxh03  luxh05      yekai
lost+found  luxh        luxh02  luxh04  luxiaofeng
[root@bogon ~]# 

    3)取消shadow password功能

[root@bogon ~]# pwunconv

    4)编写各个用户的密码信息pass.info

luxh01:luxh2012
luxh02:luxh2012
luxh03:luxh2012
luxh04:luxh2012
luxh05:luxh2012

    5)使用chpasswd命令导入密码

[root@bogon ~]# chpasswd < pass.info

    再看看/etc/passwd文件,已经导入了每个用户的加密密码

[root@bogon ~]# tail -5 /etc/passwd
luxh01:$6$HNISZ/NCfik$1SU2SlFVEV8EyATp8TnyZuEI8/IepIsT.C4VLy3lYAp3mxWbNMv/AnD8Pg6r19yiawEDgauR0RPZ631muPmin.:1001:500::/home/luxh01:/bin/bash
luxh02:$6$u/Xkb/cPPGadi9Sr$XonmMaF5YPi0Xv5TCtevsy7J1HKm0LjTzsz7fW13W4bGypeu5cnsCEilt8H0aNPEOyJaQaEQm7f.i.MzY8ddp.:1002:500::/home/luxh02:/bin/bash
luxh03:$6$uWA0qe.Xl17pM$bfpsOQGrPCye8k28GeQDShS9aLCOHbTHQE.sz0QGDftwJwA2iz8nGJIBgSup2PEUFe.R/.hL7zamdH2876MCj0:1003:500::/home/luxh03:/bin/bash
luxh04:$6$LySSjubg1Y$MNAlyP0VLO9ayp2.9Tzjm/Jc8a.CNqPqUa066XX0qd1aaqDeuOu.z6oaqEhUXUS9UZHPLCX8ACfM.esUmYJf1/:1004:500::/home/luxh04:/bin/bash
luxh05:$6$tbC1ns.7KJVc$kg28HA8bM.JwqHsvbweqFmBpYPRaCqMyW/3Y9wo3YnSYWLTCx9a2Vo1gdMVsLAkKI8iU86bM7vF4e6wyA/r.e.:1005:500::/home/luxh05:/bin/bash
[root@bogon ~]# 

    6)开启shadow password功能,把密码转换到/etc/shadow文件中

[root@bogon ~]# pwconv

    再查看/etc/passwd文件,

[root@bogon ~]# tail -5 /etc/passwd
luxh01:x:1001:500::/home/luxh01:/bin/bash
luxh02:x:1002:500::/home/luxh02:/bin/bash
luxh03:x:1003:500::/home/luxh03:/bin/bash
luxh04:x:1004:500::/home/luxh04:/bin/bash
luxh05:x:1005:500::/home/luxh05:/bin/bash
[root@bogon ~]# 

    查看/etc/shadow文件

[root@bogon ~]# tail -5 /etc/shadow
luxh01:$6$HNISZ/NCfik$1SU2SlFVEV8EyATp8TnyZuEI8/IepIsT.C4VLy3lYAp3mxWbNMv/AnD8Pg6r19yiawEDgauR0RPZ631muPmin.:15697:0:99999:7:::
luxh02:$6$u/Xkb/cPPGadi9Sr$XonmMaF5YPi0Xv5TCtevsy7J1HKm0LjTzsz7fW13W4bGypeu5cnsCEilt8H0aNPEOyJaQaEQm7f.i.MzY8ddp.:15697:0:99999:7:::
luxh03:$6$uWA0qe.Xl17pM$bfpsOQGrPCye8k28GeQDShS9aLCOHbTHQE.sz0QGDftwJwA2iz8nGJIBgSup2PEUFe.R/.hL7zamdH2876MCj0:15697:0:99999:7:::
luxh04:$6$LySSjubg1Y$MNAlyP0VLO9ayp2.9Tzjm/Jc8a.CNqPqUa066XX0qd1aaqDeuOu.z6oaqEhUXUS9UZHPLCX8ACfM.esUmYJf1/:15697:0:99999:7:::
luxh05:$6$tbC1ns.7KJVc$kg28HA8bM.JwqHsvbweqFmBpYPRaCqMyW/3Y9wo3YnSYWLTCx9a2Vo1gdMVsLAkKI8iU86bM7vF4e6wyA/r.e.:15697:0:99999:7:::
[root@bogon ~]#

    真正批量添加用户其实可以用shell脚本来做。上面的步骤只是可以更加清晰的理解添加用户的过程。

  12、限制特定用户才可以使用su命令

    1)添加组sugroup

[root@bogon ~]# groupadd sugroup

    2)去掉su命令的其他人的可执行权限

[root@bogon ~]# ls -l /bin/su
-rwsr-xr-x. 1 root root 30092 6月  22 2012 /bin/su
[root@bogon ~]# 

    去掉其他人的可执行权限,只让所有者和所属组有可执行权限 

[root@bogon ~]# chmod 4550 /bin/su
[root@bogon ~]# ls -l /bin/su
-r-sr-x---. 1 root root 30092 6月  22 2012 /bin/su
[root@bogon ~]# 

    3)把su命令的所属组改成sugroup

[root@bogon ~]# chgrp sugroup /bin/su
[root@bogon ~]# ls -l /bin/su
-r-xr-x---. 1 root sugroup 30092 6月  22 2012 /bin/su
[root@bogon ~]#

    4)把允许使用su命令的用户添加到sugroup组中

[root@bogon ~]# usermod -G sugroup luxh01
[root@bogon ~]# usermod -G sugroup luxh02
[root@bogon ~]# 

  13、用sudo替代su

    在执行sudo命令时,临时成为root

    不会泄露root口令

    仅向用户提供有限的命令使用权限

    1)配置文件: /etc/sudoers,编辑配置文件命令:visudo

    普通用户使用命令sudo

    格式:用户名(组名) 主机地址=命令(绝对路径)

    2)现在想让用户lihuai有添加、删除用户的权限

      2.1)确定useradd命令的绝对路径

[root@bogon ~]# which useradd
/usr/sbin/useradd
[root@bogon ~]#

 

[root@bogon ~]# which userdel
/usr/sbin/userdel
[root@bogon ~]# 

      2.2)使用visudo编辑,添加下面的内容,bogon是我的计算机名

lihuai bogon=/usr/sbin/useradd,/usr/sbin/userdel

      2.3)切换到lihuai,添加用户

[root@bogon ~]# su - lihuai
[lihuai@bogon ~]$ 
[lihuai@bogon ~]$ sudo /usr/sbin/useradd cnblogs001
[lihuai@bogon ~]$ grep cnblogs /etc/passwd
cnblogs001:x:1006:1006::/home/cnblogs001:/bin/bash
[lihuai@bogon ~]$

      2.4)查看可以使用sudo执行哪些命令

[lihuai@bogon ~]$ sudo -l
Matching Defaults entries for lihuai on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User lihuai may run the following commands on this host:
    (root) /usr/sbin/useradd, (root) /usr/sbin/userdel
[lihuai@bogon ~]$ 

    3)现在想让一个普通用户完全管理Apache服务器

      a、编辑Apache配置文件

      b、使用Apache启动脚本

      c、更新网页

      3.1)要让普通实现a功能,可以有以下三种方式

[root@bogon ~]# ls -l /etc/httpd/conf/httpd.conf
-rw-r--r--. 1 root root 34418 2月   7 2012 /etc/httpd/conf/httpd.conf
[root@bogon ~]# 

        改变配置文件的所有者

        改变配置文件的所属组,把用户加入组中,授予组写(w)权限

        使用visudo: 用户  地址=/bin/vi /etc/httpd/conf/httpd.conf

      这里使用sudo

lihuai bogon=/bin/vi /etc/httpd/conf/httpd.conf

      这样用户lihuai就可以编辑Apache的配置文件了

      3.2)使用Apache启动脚本

[root@bogon ~]# /etc/rc.d/init.d/httpd
Usage: httpd {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}
[root@bogon ~]# 

      只允许用户使用start、reload、fullstatus、configtest  

lihuai bogon=/etc/rc.d/init.d/httpd start,/etc/rc.d/init.d/httpd reload,/etc/rc.d/init.d/httpd fullstatus,/etc/rc.d/init.d/httpd configtest

      可以看到,使用sudo,使得权限分配可以非常的精细化。

[root@bogon ~]# su - lihuai
[lihuai@bogon ~]$ sudo /etc/rc.d/init.d/httpd start
[sudo] password for lihuai: 
正在启动 httpd:httpd: apr_sockaddr_info_get() failed for bogon
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[确定]
[lihuai@bogon ~]$ sudo /etc/rc.d/init.d/httpd stop
Sorry, user lihuai is not allowed to execute '/etc/rc.d/init.d/httpd stop' as root on bogon.
[lihuai@bogon ~]$ 

      3.3)更新网页

        让普通用户对/var/www/html目录有写权限即可:

        改变该目录所有者

        改变该目录的所属组,把用户加入组中,授予组写(w)权限