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)权限