linux用户和用户组管理

  在linux中由于角色不同,权限和所完成的任务也是不同;角色是通过UID(唯一标识一个系统用户的账号)和GID识别的,用户账号名称其实是给人看的,服务器能够识别的仅是UID和GID这样的数字。
  root用户:UID和GID均为0,拥有最高权限,可以操作系统中任何文件和命令;在生产环境中一般会禁止root账号远程SSH连接服务器,以加强系统安全;
  普通用户:由root管理员添加等操作,仅可操作自己家目录文件及目录的权限;
  虚拟用户:特点是安装系统后默默存在,且默认情况不能登录系统,是系统正常运行不可缺少的。它的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。eg:bin/adm/nobody/mail用户等。由于服务器角色的不同,有部分用不到的系统服务被禁止开机执行,
因此在做系统安全优化时被禁止开机启动了的服务对应的虚拟用户(前提是确认没有问题的)也是可以处理掉的(删除或者注释);谨慎处理!


[root@localhost ~]# ls -ld /etc/passwd
-rw-r--r--. 1 root root 2093 7月 27 14:45 /etc/passwd //用户配置文件
[root@localhost ~]# ls -ld /etc/shadow
-r--------. 1 root root 1610 7月 27 10:59 /etc/shadow //用户影子口令文件
[root@localhost ~]# ls -ld /etc/group
-rw-r--r--. 1 root root 1053 7月 27 10:59 /etc/group //用户组配置文件
[root@localhost ~]# ls -ld /etc/gshadow
----------. 1 root root 852 7月 27 10:59 /etc/gshadow //用户组的影子文件

//行数就是用户数;每行用:隔开成7列分别是:
账号名称、账号密码、账号UID、账号GID、用户说明、用户家目录、shell解释器
[root@localhost ~]# head -5 /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
[root@localhost ~]# tail -5 /etc/passwd
3:x:507:507::/home/3:/bin/bash
stu3:x:510:802::/home/stu3:/bin/bash
oldboy6:x:1806:806:Oldboy:/tmp/oldboy6:/bin/tcsh
zhangsan:x:1807:802::/home/zhangsan:/bin/bash
oldboy:x:1808:1808::/home/oldboy:/bin/bash
注意:账号UID、账号GID范围都是0~65535,添加账户时会默认建立一个与用户同名且UID和GID相同的组
UID整数范围:
0 可以添加一个系统管理员账号只需将该账号的UID改成0即可,但不建议该操作;
1~499 保留给系统使用的UID,防止人为建立账户UID和系统UID之间冲突并没有其他特殊含义,
虚拟账户UID都在此范围内。除了0之外所有的UID在使用上没有任何区别;
500~65535 普通账户UID,当使用useradd oldboy 建立账户时默认UID就是从500开始的,当然也可以随时指定UID来创建账户。

//行数就是用户组数:每行用:隔开成4列分别是:
账户组名称、用户组密码、用户组的ID、加入这个组的所有用户账号
[root@localhost ~]# head -5 /etc/group
root:x:0:oldboy6
bin:x:1:bin,daemon,admin
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon,admin
[root@localhost ~]# tail -5 /etc/group
3:x:507:
stu3:x:510:
oldboy6:x:806:
zhangsan:x:1807:
oldboy:x:1808:


[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ pwd
/home/zhangsan
[zhangsan@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够

(一)

[root@bogon ~]# ls -al /etc/skel/   //存放新用户配置文件的目录,通过修改、添加、删除该目录下的文件,可以为新创建的用户提供统一、标准的、初始化用户环境。

total 36
drwxr-xr-x. 4 root root 4096 Jun 17 17:59 .
drwxr-xr-x. 116 root root 12288 Jul 25 20:15 ..
-rw-r--r--. 1 root root 18 May 11 2012 .bash_logout
-rw-r--r--. 1 root root 176 May 11 2012 .bash_profile
-rw-r--r--. 1 root root 124 May 11 2012 .bashrc
drwxr-xr-x. 2 root root 4096 Nov 12 2010 .gnome2
drwxr-xr-x. 4 root root 4096 Jun 17 17:53 .mozilla

[root@bogon ~]# echo oldboy >/etc/skel/oldboy //当我们用useradd 或adduser命令添加新用户时,linux系统会自动复制该目录下的所有文件到新添加用户的家目录下:
[root@bogon ~]# useradd ett
[root@bogon ~]# ls -al /home/ett/
total 32
drwx------. 4 ett ett 4096 Jul 25 20:24 .
drwxr-xr-x. 6 root root 4096 Jul 25 20:24 ..
-rw-r--r--. 1 ett ett 18 May 11 2012 .bash_logout
-rw-r--r--. 1 ett ett 176 May 11 2012 .bash_profile
-rw-r--r--. 1 ett ett 124 May 11 2012 .bashrc
drwxr-xr-x. 2 ett ett 4096 Nov 12 2010 .gnome2
drwxr-xr-x. 4 ett ett 4096 Jun 17 17:53 .mozilla
-rw-r--r--. 1 ett ett 7 Jul 25 20:24 oldboy
[root@bogon ~]# cat /home/ett/oldboy
oldboy

[root@bogon ~]# ll /home/ett/
total 4
-rw-r--r--. 1 ett ett 7 Jul 25 20:24 oldboy  //创建时间一样!成立!

 

[root@bogon ~]# cat /etc/login.defs //用来定义创建用户时需要的一些用户的配置信息,如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期限等等。

例如:CentOS release 6.3 

# *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  //是否创建用户家目录,默认要求创建;可用-m参数来控制

# 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  //MD5加密

 

31 # Min/max values for automatic uid selection in useradd  //举例说明
32 #
33 UID_MIN 5000
34 UID_MAX 60000
35
36 #
37 # Min/max values for automatic gid selection in groupadd
38 #
39 GID_MIN 5000
40 GID_MAX 60000

[root@bogon ~]# useradd tmpuser1
[root@bogon ~]# tail -4 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
centos:x:500:500:centos:/home/centos:/bin/bash
ett:x:501:501::/home/ett:/bin/bash
tmpuser1:x:5000:5000::/home/tmpuser1:/bin/bash  //

 

[root@bogon ~]# cat /etc/default/useradd //添加用户时一个需要调用的默认配置文件 
# useradd defaults file
GROUP=100
HOME=/home  //把用户家目录建在/home
INACTIVE=-1   //是否启用账号过期停权,-1不启用
EXPIRE=         //账号终止日期,不设置表示不启用
SHELL=/bin/bash  //新用户默认所用的shell类型
SKEL=/etc/skel     //指定配置新用户家目录的默认文件存放路径
CREATE_MAIL_SPOOL=yes  //创建mail文件

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

 

//linux用户管理命令

  useradd命令添加用户时首先会读取配置文件/etc/login.defs 和/etc/default/useradd中所定义的参数和规则,根据设置的规则添加用户,同时会向/etc/passwd 和 /etc/group文件内添加新建用户和用户组信息。

  当然,加密资讯文件/etc/shadow和/etc/gshadow 也会生成记录,同时系统还会根据/etc/default/useradd 文件中所配置的信息建立用户的家目录,并复制/etc/skel/ 中的所有文件到新用户的家目录中。

 

[root@bogon ~]# useradd etiantian //实例
[root@bogon ~]# ll /home/etiantian/
total 4
-rw-r--r--. 1 etiantian etiantian 7 Jul 25 20:24 oldboy

[root@bogon ~]# grep etiantian /etc/passwd
etiantian:x:5001:5001::/home/etiantian:/bin/bash
[root@bogon ~]# grep etiantian /etc/group
etiantian:x:5001:
[root@bogon ~]# grep etiantian /etc/shadow
etiantian:!!:17372:0:99999:7:::
[root@bogon ~]# grep etiantian /etc/gshadow
etiantian:!::

 

[root@bogon ~]# finger etiantian //查看用户信息
Login: etiantian Name:
Directory: /home/etiantian Shell: /bin/bash
Never logged in.
No mail.
No Plan.

 

[root@bogon ~]# groupadd -g 801 sa   //-g  -u 参数
[root@bogon ~]# useradd -g sa -u 901 oldboy1

[root@bogon ~]# id oldboy1
uid=901(oldboy1) gid=801(sa) groups=801(sa)

 

[root@bogon ~]# groupadd -g 801 sa  //生产实例
groupadd: group 'sa' already exists
[root@bogon ~]# useradd -g sa -u 902 ett
useradd: user 'ett' already exists
[root@bogon ~]# id ett
uid=501(ett) gid=501(ett) groups=501(ett)
[root@bogon ~]# useradd -g sa -u 903 meng
[root@bogon ~]# echo "iloveming0426" |passwd meng --stdin
Changing password for user meng.
passwd: all authentication tokens updated successfully.
[root@bogon ~]# echo "meng ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
[root@bogon ~]# visudo -c
/etc/sudoers: parsed OK
[root@bogon ~]# history -c

 

[root@bogon ~]# useradd oldboy2 -M -s /sbin/nologin //-M -s  参数,常用于部署apache/mysql.nagios服务时常用
[root@bogon ~]# ll /home/
total 28
drwx------. 30 centos centos 4096 Jul 15 12:15 centos
drwx------. 4 etiantian etiantian 4096 Jul 25 21:05 etiantian
drwx------. 4 ett ett 4096 Jul 25 20:24 ett
drwx------. 4 meng sa 4096 Jul 25 21:38 meng
drwx------. 4 ett ett 4096 Jul 15 15:39 oldboy
drwx------. 4 502 502 4096 Jul 15 15:41 oldboy1
drwx------. 4 tmpuser1 tmpuser1 4096 Jul 25 20:41 tmpuser1
[root@bogon ~]# grep oldboy2 /etc/passwd
oldboy2:x:5002:5002::/home/oldboy2:/sbin/nologin

[root@bogon ~]# su - oldboy2
su: warning: cannot change directory to /home/oldboy2: No such file or directory
This account is currently not available.

 

[root@bogon ~]# date +%F
2017-07-25

[root@bogon ~]# date -s 01/18/12
Wed Jan 18 00:00:00 CST 2012
[root@bogon ~]# date +%F
2012-01-18

[root@bogon ~]# useradd tmpuser2 -e 01/19/12  //-e 参数指定失效日期
[root@bogon ~]# su - tmpuser2
[tmpuser2@bogon ~]$ pwd
/home/tmpuser2
[tmpuser2@bogon ~]$ exit
logout
[root@bogon ~]#
[root@bogon ~]# date -s 01/21/12
Sat Jan 21 00:00:00 CST 2012
[root@bogon ~]# date +%F
2012-01-21
[root@bogon ~]# su - tmpuser2  //过期了,why still do?!
[tmpuser2@bogon ~]$ pwd
/home/tmpuser2
[tmpuser2@bogon ~]$ exit
logout

[root@bogon ~]# chage -l tmpuser2
Last password change : Jan 17, 2012
Password expires : never
Password inactive : never
Account expires : Jan 19, 2012  //确实哦?!
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@bogon ~]# date -s 01/23/12
Mon Jan 23 00:00:00 CST 2012
[root@bogon ~]# clock -w
[root@bogon ~]# date +%F
2012-01-23
[root@bogon ~]# su - tmpuser2  //居然还可以?!
[tmpuser2@bogon ~]$ pwd
/home/tmpuser2
[tmpuser2@bogon ~]$ exit
logout
[root@bogon ~]# chage -l tmpuser2
Last password change : Jan 17, 2012
Password expires : never
Password inactive : never
Account expires : Jan 19, 2012
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

原因:1、通过-e设置后无法远程SSH连接(可实验),但是可以su 切换,账户并未被锁定;

   2、账户过期时间和系统时间需要相差2天。

结论:账户一建立就是过期的,单窗口通过其账号登陆测试,发现账户过期1天可以登陆,过了2天后无法登陆!

[root@bogon ~]# tail -4 /etc/shadow  //系统将用户有效期的记录放在/etc/shadow 文件了。
oldboy1:!!:17372:0:99999:7:::
meng:$6$JEKHFXOi$V.M3dih6vNhBCE2coozugRAExxRGj60sbRIBI99QNqvg6AjiJttiUPufXXQxiEBG.7g88LqLBDRCoed6miBQu1:17372:0:99999:7:::
oldboy2:!!:17372:0:99999:7:::
tmpuser2:!!:15356:0:99999:7::15358:

 

//综合例子:-c(设置注释信息) -u -G -s -d多参数组合;指定用户家目录,shell类型,所属的用户组等。

[root@bogon ~]# useradd -c HandsomeBoy -u 806 -G root,sa -s /bin/sh -d /oldboy6 oldboy6

Creating mailbox file: File exists

[root@bogon ~]# ls -al /oldboy6/
total 32
drwx------. 4 oldboy6 oldboy6 4096 Jan 23 00:14 .
dr-xr-xr-x. 27 root root 4096 Jan 23 00:14 ..
-rw-r--r--. 1 oldboy6 oldboy6 18 May 11 2012 .bash_logout
-rw-r--r--. 1 oldboy6 oldboy6 176 May 11 2012 .bash_profile
-rw-r--r--. 1 oldboy6 oldboy6 124 May 11 2012 .bashrc
drwxr-xr-x. 2 oldboy6 oldboy6 4096 Nov 12 2010 .gnome2
drwxr-xr-x. 4 oldboy6 oldboy6 4096 Jun 17 2017 .mozilla
-rw-r--r--. 1 oldboy6 oldboy6 7 Jul 25 2017 oldboy

[root@bogon ~]# finger oldboy6
Login: oldboy6 Name: HandsomeBoy
Directory: /oldboy6 Shell: /bin/sh
Never logged in.
No mail.
No Plan.

[root@bogon ~]# grep oldboy6 /etc/passwd
oldboy6:x:806:806:HandsomeBoy:/oldboy6:/bin/sh

[root@bogon ~]# id oldboy6 //在添加新用户时如果不使用-n参数,系统会自动建一个与用户名同名的用户组。
uid=806(oldboy6) gid=806(oldboy6) groups=806(oldboy6),0(root),801(sa)

 

(二)

//添加用户组groupadd;维护文件:
/etc/group用户组相关文件 /etc/gshadow用户组加密文件
[root@localhost ~]# groupadd -g 802 sa
[root@localhost ~]# tail -1 /etc/group
sa:x:802:
[root@localhost ~]# groupadd -g sa1
groupadd:无效的组 ID “sa1”
[root@localhost ~]# groupadd sa1
[root@localhost ~]# tail -2 /etc/group
sa:x:802:
sa1:x:1001:
[root@localhost ~]# tail -2 /etc/gshadow
sa:!::
sa1:!::

[root@localhost ~]# groupadd -r ett;grep ett /etc/group //建立系统用户组,GID值会比/etc/login.defs中定义的UID_MIN值小
ett:x:493:


[root@localhost ~]# groupadd ett
groupadd:“ett”组已存在
[root@localhost ~]# groupadd -f ett //新增加一个用户,强制覆盖一个已经存在的用户组账号
[root@localhost ~]# grep ett /etc/group
ett:x:493:


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

[root@localhost ~]# useradd oldboy
[root@localhost ~]# grep oldboy /etc/passwd
oldboy:x:504:1002::/home/oldboy:/bin/bash
[root@localhost ~]# passwd oldboy //或者在自己用户下如root一样直接修改密码passwd
更改用户 oldboy 的密码 。
新的 密码:
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。


[root@localhost ~]# passwd -S oldboy //-S 查看状态
oldboy PS 2017-07-26 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
[root@localhost ~]# grep oldboy /etc/shadow
oldboy:$6$gAfwtE.w$WVLB/H1R5wmBf.LhaReS2Y7irxwy1daODhjAjkANPv/EDvgbvUNLD/p./serU3oHXrmAY2T7EqLRZdp4fiehI/:17373:0:99999:7:::
[root@localhost ~]# passwd -l oldboy //-l 锁定用户不能改密码
锁定用户 oldboy 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -S oldboy
oldboy LK 2017-07-26 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# grep oldboy /etc/shadow
oldboy:!!$6$gAfwtE.w$WVLB/H1R5wmBf.LhaReS2Y7irxwy1daODhjAjkANPv/EDvgbvUNLD/p./serU3oHXrmAY2T7EqLRZdp4fiehI/:17373:0:99999:7:::
[root@localhost ~]# su - oldboy //切换用户改密码
[oldboy@localhost ~]$ passwd
更改用户 oldboy 的密码 。
为 oldboy 更改 STRESS 密码。
(当前)UNIX 密码:
passwd: 鉴定令牌操作错误
[oldboy@localhost ~]$ exit
logout
[root@localhost ~]# passwd -u oldboy //-u 解除锁定
解锁用户 oldboy 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -S oldboy
oldboy PS 2017-07-26 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
[root@localhost ~]# grep oldboy /etc/shadow //可以修改用户密码了!可以手工修改哦!
oldboy:$6$gAfwtE.w$WVLB/H1R5wmBf.LhaReS2Y7irxwy1daODhjAjkANPv/EDvgbvUNLD/p./serU3oHXrmAY2T7EqLRZdp4fiehI/:17373:0:99999:7:::


[root@localhost ~]# passwd -d oldboy //-d 清除密码(root下操作)
清除用户的密码 oldboy。
passwd: 操作成功
[root@localhost ~]# passwd -S oldboy
oldboy NP 2017-07-26 0 99999 7 -1 (密码为空。)
//无密码则无法ssh远程登陆


//-x -n -w -i 控制密码时效的举例:用户oldboy7天内不能改密码,60天以后必须改密码,过期前10天通知用户,过期后30天后禁止用户登陆。
[root@localhost ~]# date +%F
2017-07-26
[root@localhost ~]# chage -l oldboy
最近一次密码修改时间 :7月 26, 2017
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@localhost ~]# passwd -n 7 -x 60 -w 10 -i 30 oldboy //chage -m 7 -M 60 -W 10 -i 30 oldboy
调整用户密码老化数据oldboy。
passwd: 操作成功
[root@localhost ~]# chage -l oldboy //查看修改后结果
最近一次密码修改时间 :7月 26, 2017
密码过期时间 :9月 24, 2017
密码失效时间 :10月 24, 2017
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :7
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :10


[root@localhost ~]# echo "oldboy123456"|passwd --stdin oldboy
更改用户 oldboy 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# history -c


[root@localhost ~]# cat us.sh //生产批量添加用户用例:
#!/bin/sh
#author:meng
#qq:2431108588
userchars="stu"
for num in `seq 3`
do
useradd $userchars$num
passwd=`date|md5sum|cut -c3-20`
echo "$passwd"|passwd --stdin $userchars$num
echo -e "user:$userchars$num\tpasswd:$passwd" >> /tmp/user.log
sleep 1
done
echo -----------------------
cat /tmp/user.log
[root@localhost ~]# sh us.sh
更改用户 stu1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 stu2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 stu3 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
-----------------------
user:stu1 passwd:323b3f7a75885c6ff2
user:stu2 passwd:af6428409ab4930699
user:stu3 passwd:59c0af1b2f33a1a3bb

//passwd 特殊权限说明:
[root@localhost ~]# which passwd //查看passwd完整路径
/usr/bin/passwd
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 11月 24 2015 /usr/bin/passwd
[root@localhost ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2071 7月 26 13:58 /etc/passwd
//setuid权限位:表示允许普通用户以/user/bin/passwd 属主root的权限位来执行普通用户本来无法执行的功能。


(三)

[root@localhost ~]# chage //修改用户密码有效期限
用法:chage [选项] 登录

选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并推出
-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-R, --root CHROOT_DIR chroot 到的目录
-W, --warndays 警告天数 将过期警告天数设为“警告天数”

[root@localhost ~]#chage -m 7 -M 60 -W 10 -i 30 oldboy //passwd -n 7 -x 60 -w 10 -i 30 oldboy
[root@localhost ~]# chage -l oldboy //-l 参数
最近一次密码修改时间 :7月 26, 2017
密码过期时间 :9月 24, 2017
密码失效时间 :10月 24, 2017
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :7
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :10
[root@localhost ~]# chage -E 12/25/17 oldboy //-E 参数
[root@localhost ~]# chage -E "12/25/17 23:59:00" oldboy
[root@localhost ~]# usermod -e 12/26/17 oldboy //等价条件

[root@localhost ~]# chage -l oldboy
最近一次密码修改时间 :7月 26, 2017
密码过期时间 :9月 24, 2017
密码失效时间 :10月 24, 2017
帐户过期时间 :12月 25, 2017
两次改变密码之间相距的最小天数 :7
两次改变密码之间相距的最大天数 :60
在密码过期之前警告的天数 :10


[root@localhost ~]# userdel stu1 //删除用户;也可注释掉/etc/passwd 相应用户行信息
[root@localhost ~]# ll /home/stu1
总用量 0
[root@localhost ~]# userdel -r stu2 //-r 同时将用户家目录及本地邮件存储的目录和文件也一同删除
[root@localhost ~]# ll /home/stu
stu1/ stu3/

[root@localhost ~]# mkdir myoldboy
[root@localhost ~]# chown -R oldboy.oldboy ./myoldboy/
[root@localhost ~]# ll /home/oldboy/
总用量 0
[root@localhost ~]# ls -ld /home/oldboy/
drwx------. 4 oldboy oldboy 4096 7月 26 11:23 /home/oldboy/
[root@localhost ~]# ls -ld myoldboy/
drwxr-xr-x. 2 oldboy oldboy 4096 7月 26 14:56 myoldboy/
[root@localhost ~]# userdel -r oldboy
[root@localhost ~]# ls -ld /home/oldboy
ls: 无法访问/home/oldboy: 没有那个文件或目录
[root@localhost ~]# ls -ld ./myoldboy/
drwxr-xr-x. 2 504 1002 4096 7月 26 14:56 ./myoldboy/
结论:属主和用户处显示了数字,表示用户被删除了,同时也说明了用了-r 参数,原来属于oldboy
的用户的目录和文件未被删除。
注意:用户正在使用时不能被删除!用-r 时注意用户家目录下是否有重要文件!(注意备份)


[root@localhost ~]# sed -i 's#stu3#\#stu3#g' /etc/passwd //脚本修改用户是否被注释!类似回收站.
[root@localhost ~]# grep stu3 /etc/passwd
#stu3:x:510:510::/home/#stu3:/bin/bash
[root@localhost ~]#
[root@localhost ~]# sed -i 's#\#stu3#stu3#g' /etc/passwd
[root@localhost ~]# grep stu3 /etc/passwd
stu3:x:510:510::/home/stu3:/bin/bash


//删除用户组相关命令groupdel;就是修改/etc/group 和/etc/gshadow 文件
[root@localhost ~]# groupadd zhansan //建立
[root@localhost ~]# tail -2 /etc/group
stu3:x:510:
zhansan:x:1004:
[root@localhost ~]# tail -1 /etc/gshadow
zhansan:!::
[root@localhost ~]# groupdel zhansan //删除
[root@localhost ~]# tail -2 /etc/group
3:x:507:
stu3:x:510:
[root@localhost ~]# tail -1 /etc/gshadow
stu3:!::

[root@localhost ~]# chfn //chfn用来修改通过finger可查到的用户的信息。
Changing finger information for root.
Name [root]:
Office []:
Office Phone []:
Home Phone []:

Finger information not changed.

[root@localhost ~]# useradd oldboy
[root@localhost ~]# finger oldboy
Login: oldboy Name:
Directory: /home/oldboy Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[root@localhost ~]# tail -1 /etc/passwd
oldboy:x:511:511::/home/oldboy:/bin/bash
[root@localhost ~]# chfn oldboy //实例
Changing finger information for oldboy.
Name []: oldboy
Office []: trainning
Office Phone []: 155****5115
Home Phone []: 1234556

Finger information changed.
[root@localhost ~]# finger oldboy
Login: oldboy Name: oldboy
Directory: /home/oldboy Shell: /bin/bash
Office: trainning, 155****5115 Home Phone: 123-4556
Never logged in.
No mail.
No Plan.
[root@localhost ~]# tail -1 /etc/passwd
oldboy:x:511:511:oldboy,trainning,155****5115,1234556:/home/oldboy:/bin/bash
[root@localhost ~]# grep oldboy /etc/passwd
oldboy:x:511:511:oldboy,trainning,155****5115,1234556:/home/oldboy:/bin/bash

[root@localhost ~]# chsh //改变用户shell类型;很少用、可用useradd/usermod 等替代
Changing shell for root.
New shell [/bin/bash]:
[root@localhost ~]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/dash
[root@localhost ~]# chsh -s /bin/tcsh oldboy
Changing shell for oldboy.
Shell changed.
[root@localhost ~]# finger oldboy
Login: oldboy Name: oldboy
Directory: /home/oldboy Shell: /bin/tcsh
Office: trainning, 155****5115 Home Phone: 123-4556
Never logged in.
No mail.
No Plan.
[root@localhost ~]# chsh -s /bin/sh oldboy
Changing shell for oldboy.
Shell changed.
[root@localhost ~]# chsh -s /sbin/nologin oldboy
Changing shell for oldboy.
Shell changed.
[root@localhost ~]# finger oldboy
Login: oldboy Name: oldboy
Directory: /home/oldboy Shell: /sbin/nologin
Office: trainning, 155****5115 Home Phone: 123-4556
Never logged in.
No mail.
No Plan.
[root@localhost ~]# grep nologin /etc/passwd //大多数账户不能登录,保证安全!

 (五)

[root@localhost ~]# usermod //不经常使用却功能强大
用法:usermod [选项] 登录

选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射

[root@localhost ~]# tail -4 /etc/passwd
2:x:506:1003::/home/2:/bin/bash
3:x:507:507::/home/3:/bin/bash
stu3:x:510:510::/home/stu3:/bin/bash
oldboy:x:511:511:oldboy,trainning,155****5115,1234556:/home/oldboy:/sbin/nologin
[root@localhost ~]# usermod -c etiantian oldboy //修改第5列注释信息
[root@localhost ~]# tail -1 /etc/passwd
oldboy:x:511:511:etiantian:/home/oldboy:/sbin/nologin
[root@localhost ~]# chfn -f Oldboy oldboy //
Changing finger information for oldboy.
Finger information changed.
[root@localhost ~]# tail -1 /etc/passwd
oldboy:x:511:511:Oldboy:/home/oldboy:/sbin/nologin


//添加用户oldboy6,并设置用户信息注释为HandsomeBoy,UID指定为806,归属为用户组root/oldboy/sa成员,
其shell类型为/bin/sh 设置家目录为/oldboy6
[root@localhost ~]# useradd -c HandsomeBoy -u 806 -G root,oldboy,sa -s /bin/sh -d /oldboy6 oldboy6
[root@localhost ~]# grep oldboy6 /etc/passwd
oldboy6:x:806:806:HandsomeBoy:/oldboy6:/bin/sh
[root@localhost ~]# ls -ld /oldboy6/
drwx------. 4 oldboy6 oldboy6 4096 7月 26 17:19 /oldboy6/
[root@localhost ~]# finger oldboy6
Login: oldboy6 Name: HandsomeBoy
Directory: /oldboy6 Shell: /bin/sh
Never logged in.
No mail.
No Plan.
[root@localhost ~]# id oldboy6
uid=806(oldboy6) gid=806(oldboy6) 组=806(oldboy6),0(root),802(sa),511(oldboy)

[root@localhost ~]# groups oldboy
oldboy : oldboy
[root@localhost ~]# groups oldboy6
oldboy6 : oldboy6 root sa oldboy
注意:在添加新用户时,如果不使用-n参数,系统会自动建立一个与用户名同名的用户组

[root@localhost ~]# usermod -c Oldboy -u 1806 -G root,sa -s /bin/tcsh -d /tmp/oldboy6 oldboy6
[root@localhost ~]# finger oldboy6
Login: oldboy6 Name: Oldboy
Directory: /tmp/oldboy6 Shell: /bin/tcsh
Never logged in.
No mail.
No Plan.
[root@localhost ~]# grep oldboy6 /etc/passwd
oldboy6:x:1806:806:Oldboy:/tmp/oldboy6:/bin/tcsh
[root@localhost ~]# id oldboy6
uid=1806(oldboy6) gid=806(oldboy6) 组=806(oldboy6),0(root),802(sa)
[root@localhost ~]# setenforce 0 //临时关闭selinux
[root@localhost ~]# vim /etc/selinux/config //配置文件修改SELINUX=disabled,重启系统后可永久生效。


[root@localhost ~]# chage -l oldboy
最近一次密码修改时间 :7月 26, 2017
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@localhost ~]# chage -E 12/25/17 oldboy //-E 设置账户过期时间
[root@localhost ~]# chage -l oldboy
最近一次密码修改时间 :7月 26, 2017
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :12月 25, 2017 //修改结果
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7


[root@localhost ~]# useradd zhangsan
[root@localhost ~]# grep zhangsan /etc/shadow
zhangsan:!!:17373:0:99999:7:::
[root@localhost ~]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# grep zhangsan /etc/shadow
zhangsan:$6$ipsZ6CTx$bhvJzpUi6ZRV/ZP7GbuiIAJ8vCa9Xs6.SlmXjwogJhKK4iDWYqZEaAnVcfDXz3LmfahtiTIarHjTPpSYimm9V0:17373:0:99999:7:::
[root@localhost ~]# usermod -L zhangsan //冻结zhangsan用户密码,显示一个!
[root@localhost ~]# grep zhangsan /etc/shadow
zhangsan:!$6$ipsZ6CTx$bhvJzpUi6ZRV/ZP7GbuiIAJ8vCa9Xs6.SlmXjwogJhKK4iDWYqZEaAnVcfDXz3LmfahtiTIarHjTPpSYimm9V0:17373:0:99999:7:::
[root@localhost ~]# usermod -U zhangsan //取消冻结
[root@localhost ~]# grep zhangsan /etc/shadow
zhangsan:$6$ipsZ6CTx$bhvJzpUi6ZRV/ZP7GbuiIAJ8vCa9Xs6.SlmXjwogJhKK4iDWYqZEaAnVcfDXz3LmfahtiTIarHjTPpSYimm9V0:17373:0:99999:7:::


//用户查询相关命令:id finger users w who last lastlog groups
[root@localhost ~]# id oldboy6
uid=1806(oldboy6) gid=806(oldboy6) 组=806(oldboy6),0(root),802(sa)
[root@localhost ~]# finger oldboy6
Login: oldboy6 Name: Oldboy
Directory: /tmp/oldboy6 Shell: /bin/tcsh
Never logged in.
No mail.
No Plan.
[root@localhost ~]# finger //
Login Name Tty Idle Login Time Office Office Phone
crmn crmn tty1(真正的linux终端) 21d Jul 5 10:55 (:0)
crmn crmn pts/0(远程连接) Jul 5 10:55 (:0.0)
crmn crmn pts/1 15d Jul 11 11:34 (:0.0)
[root@localhost ~]# finger -s
Login Name Tty Idle Login Time Office Office Phone
crmn crmn tty1 21d Jul 5 10:55 (:0)
crmn crmn pts/0 Jul 5 10:55 (:0.0)
crmn crmn pts/1 15d Jul 11 11:34 (:0.0)
[root@localhost ~]# whoami
root
[root@localhost ~]# w
17:56:14 up 2 days, 11:38, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
crmn tty1 :0 05Jul17 21days 23:49 0.20s pam: gdm-password
crmn pts/0 :0.0 05Jul17 0.00s 17.54s 3:28 /usr/bin/gnome-terminal -x /bin/sh -c cd '/home/crmn/桌
crmn pts/1 :0.0 11Jul17 15days 1.32s 3:28 /usr/bin/gnome-terminal -x /bin/sh -c cd '/home/crmn/桌
[root@localhost ~]# who
crmn tty1 2017-07-05 10:55 (:0)
crmn pts/0 2017-07-05 10:55 (:0.0)
crmn pts/1 2017-07-11 11:34 (:0.0)
[root@localhost ~]# users
crmn crmn crmn
[root@localhost ~]# last   //  /var/log/wtmp  /var/log/btmp

crmn pts/2 :0.0 Wed Jul 26 15:42 - 15:42 (00:00)
crmn pts/1 :0.0 Tue Jul 11 11:34 still logged in
crmn pts/0 :0.0 Wed Jul 5 10:55 still logged in
crmn tty1 :0 Wed Jul 5 10:55 still logged in

[root@localhost ~]# lastlog //  /var/log/lastlog 
用户名 端口 来自 最后登陆时间
root **从未登录过**
bin **从未登录过**
daemon **从未登录过**

[root@localhost ~]# groups //查询用户所属用户组;id不专业。
root
[root@localhost ~]# groups oldboy
oldboy : oldboy
[root@localhost ~]# groups oldboy6
oldboy6 : oldboy6 root sa
[root@localhost ~]# id oldboy6
uid=1806(oldboy6) gid=806(oldboy6) 组=806(oldboy6),0(root),802(sa)

[root@localhost ~]# ls -al /tmp/oldboy6/
总用量 12
drwxrwxr-x. 2 oldboy6 oldboy6 4096 7月 27 09:25 .
drwxrwxrwx. 21 root root 4096 7月 27 09:24 ..
-rw-------. 1 oldboy6 oldboy6 53 7月 27 09:25 .history
[root@localhost ~]# chown -R oldboy6.oldboy6 /tmp/oldboy6/
[root@localhost ~]# ll /tmp/oldboy6/
总用量 0
[root@localhost ~]# su - oldboy6
[oldboy6@localhost ~]$ whoami
oldboy6
[oldboy6@localhost ~]$ groups oldboy6
oldboy6 : oldboy6 root sa
[oldboy6@localhost ~]$ touch test.txt //
[oldboy6@localhost ~]$ ll //查看属性:默认情况下有效用户组为oldboy6
总用量 0
-rw-rw-r--. 1 oldboy6 oldboy6 0 7月 27 09:32 test.txt
[oldboy6@localhost ~]$ newgrp sa //引入命令来修改用户oldboy6的有效组为sa
[oldboy6@localhost ~]$ groups //查看当前用户的用户组,有效用户组第一个已变成sa
sa root oldboy6
[oldboy6@localhost ~]$ touch test2.txt
[oldboy6@localhost ~]$ ll
总用量 0
-rw-r--r--. 1 oldboy6 sa 0 7月 27 09:40 test2.txt //这下新创建的文件所属组为sa
-rw-rw-r--. 1 oldboy6 oldboy6 0 7月 27 09:32 test.txt
[oldboy6@localhost ~]$ newgrp oldboy6 //修改回来咯!
[oldboy6@localhost ~]$ groups
oldboy6 root sa

(六)

在linux系统中,每个文件、目录和进程都是归属于某个用户的,没有其他用户定位,除了root用户,其他用户无法操作
root 用户的特权还表现在root可以超越任何用户和用户组来对文件或目录进行读取、修改或者删除;对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可对文件盒目录进行属主和权限进行修改。
[root@localhost ~]# su - oldboy6 //- -l --login;改变该用户为oldboy6,并使用oldboy6用户的环境变量
[oldboy6@localhost ~]$ su //su root;应该为 su -或者su - root切换到root用户,但没有改变为root用户登陆环境。
密码:
[root@localhost oldboy6]# env
HOSTNAME=localhost.localdomain
HOST=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
GROUP=oldboy6
USER=oldboy6
[root@localhost oldboy6]# su - root //规范导入
[root@localhost ~]# env
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
USER=root
[root@localhost ~]# env|egrep "USER|MAIL|PWD|LOGNAME"
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root

[root@localhost ~]# su - oldboy6
[oldboy6@localhost ~]$ su - -c "ls -l /root" //-c 参数;oldboy6用户使用root身份执行一个命令
密码:
总用量 60356

//为安全起见,一般会使用普通用户来启动服务进程
[oldboy6@localhost ~]$ ps -ef|grep tddoc //查看包括tddoc用户的服务进程
oldboy6 3925 3815 1 10:25 pts/0 00:00:00 grep tddoc
//让系统在每次开机时自动以普通用户启动指定的服务脚本!这里举例在系统开机时通过 su - 用户 -c "命令",执行的启动服务的命令,''里的就是仅能在tddoc用户下启动的服务命令脚本;
通过普通用户跑服务是个很好的提升系统安全的好办法。在生产环境中大多数服务(如apache/nginx/resin/tomcat/rsync/lvs/haproxy/heartbeat/squid等)都可以通过普通用户来启动而不用root,
这样做使得系统安全又提高了一个等级。
[root@localhost ~]# tail -5 /etc/rc.local //开机自启动配置文件
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
su - tddoc -c '/bin/sh /home/tddoc/bin/deploy.sh' //注意!

//sudo
[root@localhost ~]# userdel -r oldboy
[root@localhost ~]# useradd oldboy
[root@localhost ~]# passwd oldboy
更改用户 oldboy 的密码 。
新的 密码:
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# grep oldboy /etc/passwd
oldboy6:x:1806:806:Oldboy:/tmp/oldboy6:/bin/tcsh
oldboy:x:1808:1808::/home/oldboy:/bin/bash
[root@localhost ~]# su - oldboy
[oldboy@localhost ~]$ whoami
oldboy
[oldboy@localhost ~]$ sudo touch /root/text3.txt //

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for oldboy: //输入本账户密码
oldboy 不在 sudoers 文件中。此事将被报告。
[oldboy@localhost ~]$ exit
logout
You have new mail in /var/spool/mail/root
//通过echo命令追加一行授权规则,让oldboy对所有的主机,可以切换所有用户,执行所有的权限。
[root@localhost ~]# echo "oldboy ALL=(ALL) ALL" >> /etc/sudoers //较危险!最好如下:
[root@localhost ~]# visudo //安全操作!末行添加授权:oldboy ALL=(ALL) ALL //根据需求折中选择!
[root@localhost ~]#
[root@localhost ~]# visudo -c
/etc/sudoers:解析正确
[root@localhost ~]# su - oldboy
[oldboy@localhost ~]$ sudo touch /root/test3.txt
[sudo] password for oldboy:
[oldboy@localhost ~]$ sudo ls /root/test3.txt //再次执行不需要密码了耶!
/root/test3.txt
[oldboy@localhost ~]$ ll /var/run/sudo/
ls: 无法打开目录/var/run/sudo/: 权限不够
[oldboy@localhost ~]$ ll /var/run/sudo/%HOME
ls: 无法访问/var/run/sudo/%HOME: 权限不够
[oldboy@localhost ~]$ sudo -k //-k/-K 可以删除时间戳,使下一个sudo命令要求密码验证
[oldboy@localhost ~]$ sudo touch /root/test4.txt
[sudo] password for oldboy:

//sudo 和su 命令结合使用
[oldboy@localhost ~]$ sudo su - root //不用密码就可以登录root了耶!
[root@localhost ~]# whoami
root
[root@localhost ~]# cat /etc/hosts //有时依然要输入用户密码,可能是hosts主机名配置和当前系统主机名不一致导致!
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@localhost ~]# su - oldboy
[oldboy@localhost ~]$ whoami
oldboy
[oldboy@localhost ~]$ sudo su - zhangsan
[sudo] password for oldboy: //可以不输入密码的呀?!
[zhangsan@localhost ~]$ whoami
zhangsan

//oldboy用户通过sudo切换到zhangsan账户下创建目录
[oldboy@localhost ~]$ whoami
oldboy
[oldboy@localhost ~]$ sudo -u zhangsan mkdir /home/zhangsan/zhangsan_file
[sudo] password for oldboy:
[oldboy@localhost ~]$ whoami
oldboy
[oldboy@localhost ~]$ sudo -u zhangsan ls -l /home/zhangsan/zhangsan_file
总用量 0
[oldboy@localhost ~]$ sudo -u zhangsan ls -ld /home/zhangsan/zhangsan_file
[sudo] password for oldboy: //这里不应该要输入密码呀?!重启登陆可能会好!
drwxr-xr-x. 2 zhangsan zhangsan 4096 7月 27 11:49 /home/zhangsan/zhangsan_file
[oldboy@localhost ~]$ whoami
oldboy

[oldboy@localhost ~]$ sudo -l //查看自身拥有哪些权限
匹配此主机上 oldboy 的默认条目:
!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

用户 oldboy 可以在该主机上运行以下命令:
(ALL) ALL

//修改编辑/etc/sudoers文件注意:
>> ;除echo外还可用cat sed 等命令实现类似的功能;
visudo -c 语法检查;
/etc/sudoers 权限须为440,否则会导致sudo功能异常;
及时对授权的操作进行测试,验证是否正确(最好不要退出当前授权窗口以便发现问题及时恢复)
确保知道正确的root密码,以便在出现问题时可以通过普通用户等候执行su - 命令切换到root进行恢复。


//使用用户组的方式实现sudo授权
通过授权一个用户组的方式来配置/etc/sudoers 如:授权sa组具备以上所有主机的管理权限,
这样以后可直接将需要授权的用户加入到sa组就可以享受sa组的sudo授权了
[root@localhost ~]# echo "%sa ALL=(ALL) ALL" >>/etc/sudoers
[root@localhost ~]# tail -3 /etc/sudoers
#includedir /etc/sudoers.d
oldboy ALL=(ALL) ALL
%sa ALL=(ALL) ALL
[root@localhost ~]# visudo -c
/etc/sudoers:解析正确
[root@localhost ~]# su - zhangsan //zhangsan
[zhangsan@localhost ~]$ sudo ls /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for zhangsan:
zhangsan 不在 sudoers 文件中。此事将被报告。//不允许!
[zhangsan@localhost ~]$ exit
logout
You have new mail in /var/spool/mail/root
[root@localhost ~]# groups zhangsan
zhangsan : zhangsan
[root@localhost ~]# usermod -g sa zhangsan
[root@localhost ~]# groups zhangsan
zhangsan : sa
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ sudo ls /root //可以了!
[sudo] password for zhangsan:
anaconda-ks.cfg contactinfo.tmp install.log

===========================================================

 /etc/sudoers 配置文件全解,待续。。。

posted @ 2017-07-25 22:38  bkycrmn  阅读(672)  评论(0)    收藏  举报