1. 用户信息与密码的配置文件

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~]# 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
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

每一行内容存放一个用户的信息,每个用户信息有7部分组成。

1
2
3
4
5
6
7
8
9
10
11
root:x:0:0:root:/root:/bin/bash

通过“冒号”分割,解释说明:
root 用户名 用户登录系统时使用的用户名
x 密码 密码位
0 UID 用户标示号
0 GID 缺省组标示
root 注释性描述 例如存放用户全名等信息
/root 宿主目录 用户登录系统后的缺省目录
/bin/bash 命令解释器 用户使用的Shell,默认为bash
/sbin/nologin 表示该账号不能用来登录Linux系统

sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。

密码位

1
最早的Linux这个位置真的是放密码的,但因为不安全,所以就将密码单独存放在了/etc/shadow中。

UID 决定了用户权限而不是用户名。

1
Linux用户分为三种:超级用户(root UID=0),普通用户(CentOS6 UID 500~60000|CentOS7 UID 1000-60000),伪用户或叫系统用户、虚拟用户、假用户(Centos6 UID 1~499|Centos7 UID 1~999)

伪用户

1
2
3
4
5
6
7
A.
bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户。
mail、news、games、apache、ftp、mysql及sshd等,与Linux的进程相关。
B.
伪用户通常不需要或无法登陆系统
C.
可以没有宿主目录

2)密码文件: /etc/shadow

1
2
[root@localhost ~]# ls -al /etc/shadow
----------. 1 root root 592 Feb 6 18:03 /etc/shadow

密码文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~]# cat /etc/shadow
root:$6$IglT.f7rqrwKA7tJ$1YXkCR3shYkNopl03UaIrBf7e1PUW9JXkxlpHg4sb8MPKy4xYqFVelynW7Ww6F.x1nfqKknJZzE6n7vKENAZP0:17203:0:99999:7:::
bin:*:15628:0:99999:7:::
daemon:*:15628:0:99999:7:::
adm:*:15628:0:99999:7:::
lp:*:15628:0:99999:7:::
sync:*:15628:0:99999:7:::
shutdown:*:15628:0:99999:7:::
halt:*:15628:0:99999:7:::
mail:*:15628:0:99999:7:::
uucp:*:15628:0:99999:7:::
operator:*:15628:0:99999:7:::
games:*:15628:0:99999:7:::
gopher:*:15628:0:99999:7:::
ftp:*:15628:0:99999:7:::
nobody:*:15628:0:99999:7:::
vcsa:!!:17203::::::
saslauth:!!:17203::::::
postfix:!!:17203::::::
sshd:!!:17203::::::

密码文件说明

1
2
3
4
5
6
7
8
9
10
11
root:$6$IglT.f7rqrwKA7tJ$1YXkCR3shYkNopl03UaIrBf7e1PUW9JXkxlpHg4sb8MPKy4xYqFVelynW7Ww6F.x1nfqKknJZzE6n7vKENAZP0:17203:0:99999:7:::

root 用户名 用户登录系统时使用的用户名
$6$IglT.f7rqrwKA7tJ$1YXkCR3shYkNopl03UaIrBf7e1PUW9JXkxlpHg4sb8MPKy4xYqFVelynW7Ww6F.x1nfqKknJZzE6n7vKENAZP0 密码
17203 最后一次修改时间 Linux这里以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为17203。
0 最小时间间隔 这个字段代表要经过多久才可以更改密码。0表示密码可以随时更改。
99999 最大时间间隔 由于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个账号将暂时失效。99999表示密码不需要重新输入,最好设定一段时间修改密码,确保系统安全。
7 密码变更期期限快到前的警告期:当账号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。”默认是7天。
账号失效期: 如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让账号重新启用,那么这个账号将暂时失效。
账号取消日期:这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示,这个账号在此字段规定的日期之后将无法再使用。这个字段常用于收费服务系统中,可以规定一个日期让该账号不能再使用。
保留: 最后一个字段是保留的,看以后有没有新功能加入。

加密方式说明$id$salt$encrypted

1
2
3
4
$6$ 开头的,表明是用SHA-512加密。
$1$ 表明是用MD5加密。
$2$ 是用Blowfish加密的。
$5$ 是用SHA-256加密。

shadow文件保存了密码,而passwd文件中没有保存密码,为什么不把passwd文件中的密码位取消掉?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@localhost ~]# 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$IglT.f7rqrwKA7tJ$1YXkCR3shYkNopl03UaIrBf7e1PUW9JXkxlpHg4sb8MPKy4xYqFVelynW7Ww6F.x1nfqKknJZzE6n7vKENAZP0:17203:0:99999:7:::

[root@localhost ~]# pwunconv 将密码回写
[root@localhost ~]# grep root /etc/passwd /etc/shadow
/etc/passwd:root:$6$IglT.f7rqrwKA7tJ$1YXkCR3shYkNopl03UaIrBf7e1PUW9JXkxlpHg4sb8MPKy4xYqFVelynW7Ww6F.x1nfqKknJZzE6n7vKENAZP0:0:0:root:/root:/bin/bash
/etc/passwd:operator:*:11:0:operator:/root:/sbin/nologin
grep: /etc/shadow: No such file or directory
[root@localhost ~]# ls /etc/shadow
ls: cannot access /etc/shadow: No such file or directory

但此时依然可通过用户名、密码登录:
[c:\~]$ ssh 192.168.0.128


Connecting to 192.168.0.128:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Tue Feb 7 09:55:23 2017 from 192.168.0.1

[root@localhost ~]# pwconv 转换到shadow文件中,只不过这个动作平时由Linux自动完成。
[root@localhost ~]# 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$IglT.f7rqrwKA7tJ$1YXkCR3shYkNopl03UaIrBf7e1PUW9JXkxlpHg4sb8MPKy4xYqFVelynW7Ww6F.x1nfqKknJZzE6n7vKENAZP0:17204:0:99999:7:::

3)用户组文件: /etc/group

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@localhost ~]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:
mail:x:12:mail,postfix
uucp:x:14:
man:x:15:
games:x:20:
gopher:x:30:
video:x:39:
dip:x:40:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
floppy:x:19:
vcsa:x:69:
cdrom:x:11:
tape:x:33:
dialout:x:18:
saslauth:x:76:
postdrop:x:90:
postfix:x:89:
sshd:x:74:

group配置文件说明

1
2
3
4
5
root:x:0:
第一字段:是用户组的名称,有字幕或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
第二字段:字段存放的是用户组加密后的密码。一般为是x,因为密码存在/etc/gshadow。
第三字段:与用户标识号类似,也是一个整数,被系统内部用来表示组。
第四字段:是属于这个组的所有用户的列表,不同用户之间用逗号分隔。这个用户组可能是用户的主组,也可能是附加组。

4)用户组密码文件: /etc/gshadow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@localhost ~]# cat /etc/gshadow
root:::
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon
tty:::
disk:::
lp:::daemon
mem:::
kmem:::
wheel:::
mail:::mail,postfix
uucp:::
man:::
games:::
gopher:::
video:::
dip:::
ftp:::
lock:::
audio:::
nobody:::
users:::
utmp:!::
utempter:!::
floppy:!::
vcsa:!::
cdrom:!::
tape:!::
dialout:!::
saslauth:!::
postdrop:!::
postfix:!::
sshd:!::

在gshadow配置文件说明

1
2
3
4
5
6
root:*::
第一字段:是用户组的名称,由字母或数字构成。与/etc/group中的登录名一样。
第二字段:字段存放的是用户组加密后的密码。如果开头为!表示无合法密码。
第三字段:用户组管理员的所属帐号。
第四字段:该用户组所属帐号。与/etc/group中的一样
一个账户可以有多个用户组,当前时刻所属的用户组成为有效用户组。

查询当前有效用户组

1
2
3
[root@localhost ~]# groups
root
此时创建的文件的用户组就所属有效用户组root。

更改有效用户组:

1
2
3
4
newgrp xxx
groups
xxx root
第一列出的就是当前有效用户组

5)用户配置文件:/etc/login.defs、/etc/default/useradd

当我们新建用户时,通过/etc/login.defs和/etc/default/useradd 两文件实现新用户的基本设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
[root@localhost ~]# 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

/etc/login.defs配置文件说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MAIL_DIR	/var/spool/mail         邮件默认目录存放处

PASS_MAX_DAYS 99999 密码需要变更时间
PASS_MIN_DAYS 0 密码多久需要变更
PASS_MIN_LEN 5 密码最小长度
PASS_WARN_AGE 7 密码失效之前几天发送警告信息

UID_MIN 500 默认账号起始的最小UID数
UID_MAX 60000 最大的UID限制

GID_MIN 500 默认账号起始的最小GID数
GID_MAX 60000 最大的GID限制

CREATE_HOME yes 是否建立用户根目录,默认是“yes”,如果选择“no”,就是不建立

ENCRYPT_METHOD SHA512 采用SHA512加密

/etc/default/useradd配置文件说明

1
2
3
4
5
6
7
8
9
[root@localhost ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100 默认用户群组为100
HOME=/home 默认用户的根目录
INACTIVE=-1 是否启用账号过期停权,-1表示不启用,正数代表天数
EXPIRE= 是否设定到期时间,如果需要,可以设定一个数值,那么用户到期后就不能登录系统
SHELL=/bin/bash 默认的shell
SKEL=/etc/skel 默认配置文件路径,创建账号时此路径下的文件会拷贝到用户的家目录
CREATE_MAIL_SPOOL=yes 是否创建邮件池

5)新用户信息文件: /etc/skel

skel 是skeleton的缩写,每当你新建一个用户的时候(用过useradd命令),/etc/skel目录下的文件,都会原封不动的负值到新建用户的家目录下。

1
2
3
4
5
6
7
[root@localhost ~]# ls -al /etc/skel/
total 20
drwxr-xr-x. 2 root root 4096 Feb 6 18:00 .
drwxr-xr-x. 58 root root 4096 Feb 7 09:56 ..
-rw-r--r--. 1 root root 18 Feb 22 2013 .bash_logout
-rw-r--r--. 1 root root 176 Feb 22 2013 .bash_profile
-rw-r--r--. 1 root root 124 Feb 22 2013 .bashrc

6)布告栏信息:/etc/motd

/etc/motd即messageoftoday(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端。系统管理员可以在文件中编辑系统活动消息,例如:管理员通知用户系统何时进行软件或硬件的升级、何时进行系统维护等。如果shell支持中文,还可以使用中文,这样看起来更易于了解。/etc/motd缺点是,现在许多用户登录系统时选择自动进入图形界面,所以这些信息往往看不到。

1
/etc/issue文件的使用方法与/etc/motd文件相差不大,它们的主要区别在于:当一个网络用户或通过串口登录系统上时,/etc/issue的文件内容显示在login提示符之前,而/etc/motd内容显示在用户成功登录系统之后。

2. 创建用户

1)命令

1
2
3
4
5
6
7
8
useradd         //添加用户
passwd //为用户设置密码
userdel //删除用户
usermod //修改用户信息
groupadd //添加用户组
groupdel //删除用户组
groupmod //修改用户组信息
groups //显示当前进程用户所属的用户组

最简单的创建用户

1
2
3
4
5
6
7
[root@localhost ~]# useradd test
[root@localhost ~]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.

用户名为test,密码为test123。

查看用户信息

1
2
[root@localhost ~]# id test
uid=500(test) gid=500(test) groups=500(test)

创建第二个用户test1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~]# useradd test1
[root@localhost ~]# passwd test1
Changing password for user test1.
New password:
BAD PASSWORD: it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.

用户名为test1,密码为abc123,。

[root@localhost ~]# id test1
uid=501(test1) gid=501(test1) groups=501(test1)

发现uid和gid递增了1。新建第一个用户时,uid和gid为配置文件中定义的默认最小值。

带参数的创建用户

useradd 参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 -b, --base-dir BASE_DIR       新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER

新建一个UID为502,GID位600,30天有效期,用户组为test3,家目录为/home/thirty的用户test2。

1
2
3
4
5
6
7
8
9
[root@localhost ~]# groupadd -g 600 test3
[root@localhost ~]# useradd -u 501 -g 600 -f 30 -m -d /home/thirty test2
useradd: UID 501 is not unique
[root@localhost ~]# useradd -u 502 -g 600 -f 30 -m -d /home/thirty test2

[root@localhost ~]# id test2
uid=502(test2) gid=600(test3) groups=600(test3)
[root@localhost ~]# ls /home/
test test1 thirty

3. 更改用户设置

不同的用户需要不同的权限,拥有不同的SHELL,是否允许登录。这个部分,就需要用到usermod命令修改用户配置。

禁止test1用户登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@localhost test1]# usermod -s /sbin/nologin test1
[root@localhost test1]# su test1
This account is currently not available.

[c:\~]$ ssh 192.168.0.128


Connecting to 192.168.0.128:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Tue Feb 7 12:31:35 2017 from 192.168.0.1
This account is currently not available.

Connection closed by foreign host.

Disconnected from remote host(192.168.0.128:22) at 20:04:08.

Type `help' to learn how to use Xshell prompt.

[root@localhost test1]# cat /etc/passwd|grep test1
test1:x:501:501::/home/test1:/sbin/nologin
[root@localhost test1]# cat /etc/shadow |grep test1
test1:$6$PtGopWUu$IEvEngLz3S1Nx6MP0EF60EKzagdbRZhGqSn0vE4JTrra221.G7.8RLBUytHkyNXNPs8SSqm/IfdKolS4SS0Vv/:17204:0:99999:7:::

修改用户名

1
2
3
4
5
[root@localhost ~]# usermod -l test-1 test1
[root@localhost ~]# cat /etc/passwd|grep test-1
test-1:x:501:501::/home/test1:/sbin/nologin
[root@localhost ~]# cat /etc/shadow |grep test-1
test-1:$6$PtGopWUu$IEvEngLz3S1Nx6MP0EF60EKzagdbRZhGqSn0vE4JTrra221.G7.8RLBUytHkyNXNPs8SSqm/IfdKolS4SS0Vv/:17204:0:99999:7:::
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@localhost ~]# usermod 
Usage: usermod [options] LOGIN

Options:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the
new location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
-Z, --selinux-user new SELinux user mapping for the user account

4. 删除用户/组

当我们创建用户/组有错误时,可能会删除用户/组,然后再重新创建。我们使用userdel命令来删除用户。

执行命令:

1
2
3
4
5
[root@localhost ~]# userdel test
执行完成后,/etc/passwd和/etc/shadow下的test用户信息已经被删除
[root@localhost ~]# ls /home/
test test1 thirty
但home目录下的用户目录是存在的。

5. sudo执行命令

将当前用户切换到超级用户下,或切换到指定的用户下,然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户。

具体工作过程如下:

当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限

–>确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认

–>若密码输入成功,则开始执行sudo后续的命令

基本配置格式

/etc/sudoer的通用格式:
user host run_as command
user:一位或几位用户,在/etc/group中可以用一个%代替它,组对象的名称一定要用百分号%开头。
host:一个或几个主机名;
run_as:作为哪个用户运行,常见的选项是root和ALL
cmmand:想让用户或组运行的一个或几个根级别命令

admin ALL=(ALL) ALL
第一个ALL表示所有计算机;第二个ALL表示所有用户;第三个ALL表示所有命令。
授权admin用户在所有计算机上以所有用户的身份运行所有命令。

%admin ALL=(ALL) NOPASSWD:NOPASSWD ALL

admin组的用户都sudo不用密码

%admin ALL=(ALL) NOPASSWD:useradd,userdel

授权admin组全部成员在所有计算机上以所有用户的身份运行useradd,userdel命令;且运行时不必输入密码。

1
2
3
4
需要注意的是,当我们为用用户定义可以运行的命令时,必须使用完整的命令路径。
这样做是完全出于安全的考虑,如果我们给出的命令只是简单的useradd而非/usr/sbin/useradd,
那么用户有可能创建一个他自己的脚本,也就做useradd,然后放在它的本地路径中,如此一来他就能够通过这个名为useradd的本地脚本,
作为root来执行任何他想要的命令了。这是相当危险的!

%account ALL=(root) /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod
accounts组中的任何成员都能运行useradd、userdel和usermod命令。

jay ALL=NOPASSWD:/usr/bin/abc.sh,/usr/sbin/adduser

jay用户sudo不用密码即可执行某几个命令

jay ALL=(ALL) NOPASSWD:ALL

让普通用户jay 具有所有超级用户的权限而又不用输入密码