您的位置:首页 > 运维架构 > Linux

Linux用户管理

2013-05-06 22:36 148 查看
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)权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: