用户管理命令
sudoers文件
• 文件作用
sudo是一个系统管理员允许普通用户执行root级别命令(halt,reboot,su等等)的工具。使用sudo不仅可以减少root用户登陆次数和管理时间,还提高了系统的安全性。
sudo工具对应的配置文件是sudoers文件,它允许系统管理员集中地管理用户的权限,该文件所存放的默认位置是/etc/sudoers。
• 文件使用
当执行命令的时候,如果系统提示:xxx is not in the sudoers file. This incident will be reported.(xxx不在sudoers文件中。此事将被报告。),解决方法如下:
▶ 进入超级用户root:su -
▶ 添加文件写权限:chmod u+w /etc/sudoers
▶ 编辑/etc/sudoers文件,在root ALL=(ALL) ALL下面添加:xxx ALL=(ALL) ALL
▶ 撤销文件写权限:chmod u-w /etc/sudoers
配置文件
• /etc/passwd
▶ 文件作用
/etc/passwd文件是系统的主要文件之一。/etc/passwd是用户数据库,该文件中包含了所有用户登录名清单;为所有用户指定了主目录;在登录时使用的shell程序名称;该文件还保存了用户口令;给每个用户提供系统识别号。其中密码是以加密形式存储的。
▶ 文件说明
/etc/passwd文件是一个纯文本文件,每行采用了相同的格式:
username:password:uid:gid:comment:home:shell
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
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/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
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
lyb:x:500:500::/home/lyb/:/bin/bash
▶ 常用技巧
√ 统计所有用户:wc -l /etc/passwd
• /etc/shadow
▶ 文件作用
影子口令文件将/etc/passwd文件中的加密口令移动到/etc/shadow中,而后者只对超级用户root可读。这使破译口令更困难,以此增加系统的安全性。
▶ 文件说明
/etc/shadow文件中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用冒号隔开:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
root:$6$z/oBs2l65Pr3R.OX$ElYgRH4VjYkotWRhBgrdG5x0/If6Qdwsyj8JZcisYKMPSdPrW3sDC0v8RITzI
KTb52Bz.KgwSDbizLy7Vapg40:15810: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:::
dbus:!!:15810::::::
rpc:!!:15810:0:99999:7:::
vcsa:!!:15810::::::
saslauth:!!:15810::::::
postfix:!!:15810::::::
haldaemon:!!:15810::::::
ntp:!!:15810::::::
amandabackup:!!:15810::::::
apache:!!:15810::::::
abrt:!!:15810::::::
rpcuser:!!:15810::::::
nfsnobody:!!:15810::::::
sshd:!!:15810::::::
tcpdump:!!:15810::::::
lyb:$6$iMpVCch/$25S4TQJFZSCEMmvq/qWncPSx3Mb2i6ln/oJnlG/dypYVP7u7QEKlmeSv6nup96Cd4T2Vw6
qWFeEW9ZaoV07/c0:15846:0:99999:7:::
• /etc/group
▶ 文件作用
用户组的所有信息都存放在/etc/group文件中。将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。
▶ 文件说明
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用冒号隔开:
组名:口令:组标识号:组内用户列表
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:
dbus:x:81:
utmp:x:22:
utempter:x:35:
rpc:x:32:
floppy:x:19:
vcsa:x:69:
cdrom:x:11:
tape:x:33:amandabackup
dialout:x:18:
cgred:x:499:
saslauth:x:76:
postdrop:x:90:
postfix:x:89:
haldaemon:x:68:haldaemon
stapusr:x:156:
stapsys:x:157:
stapdev:x:158:
ntp:x:38:
apache:x:48:
abrt:x:173:
rpcuser:x:29:
nfsnobody:x:65534:
sshd:x:74:
tcpdump:x:72:
常用命令
• groupadd
▶ 命令描述
创建一个新的用户群组。
▶ 命令格式
groupadd [-g gid [-o]] [-r] [-f] groupname
▶ 常用选项
-g gid : 指定新的用户组id,该值必须唯一(除非启用-o选项)且非负。系统默认gid必须大于等于GID_MIN设定的值。
-r : 创建一个系统用户组。
-f : 如果新增一个已存在用户组,命令将正常结束。当和-g选项使用时,如果指定的gid已被使用,那么系统会自动选择一个唯一的gid。
==========================================================================
• groupdel
▶ 命令描述
删除一个用户群组。
▶ 命令格式
groupdel groupname
==========================================================================
• groupmod
▶ 命令描述
修改用户群组属性。
▶ 命令格式
groupmod [-g gid [-o]] [-n new_groupname] groupname
▶ 常用选项
-g : 将用户组id修改为新的用户组id,gid必须唯一(除非启用-o选项)且非负。
-n : 将用户组名从groupname修改为new_groupname。
==========================================================================
• useradd
▶ 命令描述
创建一个新的用户账户。
▶ 命令格式
useradd [-b base_dir] [-c comment] [-d home_dir] [-e expire_date] [-f inactive] [-g group] [-k skel_dir] [-l] [-m] [-o] [-p password] [-r] [-s shell] [-u uid] [-G groups] [-K key=value] [-M] [-N] [-R CHROOT_DIR] [-U] [-Z seuser] user_name
▶ 常用选项
-b base_dir : 指定新账户主目录的基目录。如果未使用-d选项,则使用默认的基目录,否则base_dir加上账户名将作为主目录。如果没有使用-m选项,那么该目录必须已经存在。
-c comment : 关于登录的简短描述,即/etc/passwd文件中的GECOS字段。
-d home_dir : 指定用户登入时的主目录,默认是base_dir加上账户名作为登录主目录。
-e expire_date : 指定用户账户过期的日期,日期以YYYY-MM-DD格式指定,缺省表示永久不过期。
-f inactive : 指定账户密码过期后到彻底禁用之前的天数。0表示密码过期时,立即禁用账户;-1表示禁用该功能。
-g group : 指定用户初始登陆组的组名或组id,该用户组必须已经存在。
-k skel_dir : 骨架目录,其中包含了创建用户时要拷贝到用户主目录中的文件和目录,该选项只有在指定-m选项时才有效。
-l : 不将用户添加到最近登录和登录失败数据库中。
-m : 如果不存在,则创建用户主目录,骨架目录中的文件和目录将会复制到主目录中。
-o : 允许创建重复uid的用户账户,此选项只有和-u选项组合使用才有效。
-p password : 指定新账户加密后的密码,默认为禁用密码。
-r : 创建一个系统账户。
-s shell : 指定用户登入shell。默认让系统根据/etc/default/useradd中的SHELL变量选择默认的登录shell。
-u uid : 指定uid值。此值必须唯一且非负,除非使用-o选项。
-G groups : 指定用户属于的附加组列表,附加组之间使用逗号分隔,这些组需要遵守与-g选项同样的限制。默认用户只属于初始组。
-K key=value : 默认覆盖/etc/login.defs预设值。
-N : 不要创建与用户同名组,而是将用户添加到-g选项指定的组,或根据/etc/default/useradd中的GROUP变量指定的组。
-R CHROOT_DIR : 将改动应用于CHROOT_DIR目录,并使用CHROOT_DIR目录下的配置文件。
-U : 创建一个和用户名一样的用户组,并将用户添加到组中。
-Z seuser : 指定用户登陆的SELinux用户,默认为空,则系统选择默认的SELinux用户。
==========================================================================
• userdel
▶ 命令描述
修改系统账户文件,删除与账户名登录相关的所有项目,给出的账户名必须存在。userdel命令可以用来删除用户帐号和用户的起始目录。
▶ 命令格式
userdel [-f] [-r] [-Z] [-R CHROOT_DIR] user_name
▶ 常用选项
-f : 强制删除用户账户,即使该账户的用户仍然在登录状态。该选项同时删除账户的主目录和邮箱。如果/etc/login.defs中的USERGROUPS_ENAB定义为yes,并且如果有一个和用户同名的组,也会删除此组,即使它仍然是别的用户的主组。 注意:此选项危险,可能会破坏系统的稳定性。
-r : 用户主目录中的文件将随用户主目录和邮箱一起删除,而在其它文件系统中的文件必须手动搜索并删除。
-z : 移除登录用户的所有SELinux用户映射。
-R CHROOT_DIR : 将改动应用于CHROOT_DIR目录,并使用CHROOT_DIR目录下的配置文件。
==========================================================================
• usermod
▶ 命令描述
usermod命令用来修改用户账户相关的各项设定。
▶ 命令格式
usermod [-a] [-c comment] [-d home_dir] [-e expire_date] [-f inactive] [-g group] [-l new_username] [-m] [-o] [-p password] [-s shell] [-u uid] [-G groups] [-L] [-R CHROOT_DIR] [-U] [-Z seuser] username
▶ 常用选项
-a : 将用户添加到附加组,该选项只能和-G选项一起使用。
-c comment : 修改用户密码文件中注释字段值,即/etc/passwd文件中的GECOS字段。
-d home_dir : 修改用户登录的新目录。如果指定了-m选项,当前主目录内容将会迁移到新主目录中,如果不存在,则创建目录。
-e expire_date : 指定账户过期的日期。日期以YYYY-MM-DD格式指定,缺省则表示永久不过期。
-f inactive : 指定账户密码过期后到彻底禁用之前的天数。0表示密码过期时,立即禁用账户;-1表示不使用该功能。
-g group : 指定用户新的初始登录组的组名或gid,此组必须存在。用户主目录中,属于原来主组的文件将转交给新组所有,主目录之外的文件所属的组必须手动修改。
-l new_username : 将用户登陆名从username为new_username。用户的主目录名和邮件需要手动修改来和新登录名对应。
-m : 将用户的主目录移动到新位置,该选项只和-d选项组合使用时才有效。
-o : 与-u选项一起使用时,可以将用户id改为非唯一的值。
-p password : 修改用户密码。
-s shell : 修改用户登录shell,如果将此字段设置为空,则选择系统默认的登录shell。
-u uid : 修改用户id为新值。
-G groups : 修改用户属于的附加组列表,附加组之间使用逗号分隔,这些组需要遵守与-g选项同样的限制。如果用户当前是一个组的成员,而这个组没有列出,用户将被从那个组里删除。
-L : 锁定用户密码。
-R CHROOT_DIR : 将改动应用于CHROOT_DIR目录,并使用CHROOT_DIR目录下的配置文件。
-U : 解锁用户密码。
-Z seuser : 修改用户登陆的SELinux用户,空的SELinux将移除用户登录的SELinux用户映射。
==========================================================================
• passwd
▶ 命令描述
passwd命令用来更新用户的身份验证令牌。
▶ 命令格式
passwd [-d] [-e] [-f] [-k] [-l] [-u] [ [-i] [-n] [-w] [-x] days ] [-S] [--stdin] username
▶ 常用选项
-d : 删除指定账户的密码,只有根用户才能进行此操作。
-e : 让指定账户的用户密码过期,只有根用户才能进行此操作。
-f : 强制执行操作。
-k : 该选项指定只对已过期的用户密码进行更新操作,用户可能希望重新生效的密码与之前密码一致。
-l : 锁定指定账户的用户密码,只有根用户才能进行此操作。
-u : 解锁指定账户的用户密码,只有根用户才能进行此操作。
-S : 输出指定帐号的密码状态的简要信息,只有根用户才能进行此操作。
-i days : 在密码过期后经过多少天该帐号会被禁用,只有根用户才能进行此操作。
-n days : 密码的最短有效时限,以天为单位,只有根用户才能进行此操作。
-w days : 密码的最长有效时限,以天为单位,只有根用户才能进行此操作。
-x days : 在密码过期前多少天开始提醒用户,只有根用户才能进行此操作。
--stdin : 从标准输入读取令牌。
==========================================================================
• id
▶ 命令描述
显示指定用户或当前用户(未指定用户时)的用户与组信息。
▶ 命令格式
id [-a] [-g] [-n] [-r] [-u] [-Z] [-G] username
▶ 常用选项
-a : 忽略其他版本的兼容性。
-g : 仅显示有效的用户组id。
-n : 显示组名称而非数字。
-r : 显示真实id而非有效id。
-u : 仅显示有效用户id。
-Z : 仅显示当前用户的安全环境。
-G : 显示所有用户组的id。
==========================================================================
• who
▶ 命令描述
显示当前已登录的用户信息。如果文件未被指定,将使用/var/run/utmp文件。
who am i和whoami命令的区别在于:who am i命令显示的是实际用户id,即用户登陆时候的用户id;whoami命令显示的是有效用户id。进一步说who am i命令显示的是切换用户前的实际登陆用户id,whoami是切换后的有效的用户id。
▶ 命令格式
who [-a] [-b] [-d] [-l] [-m] [-p] [-q] [-r] [-s] [-t] [-u] [-w] [-H] [-T] [--lookup] [--message] [--writable] [file | arg1 arg2]
▶ 常用选项
-a : 等同于-b -d --login -p -r -t -T -u选项组合。
-b : 上次系统启动时间。
-d : 显示已死进程的信息。
-l : 显示系统登录进程信息。
-m : 只显示主机名和标准输入相关的用户。
-p : 显示由init进程衍生的活动进程。
-q : 列出所有已登录用户的登录名与用户数量。
-r : 显示当前的运行级别。
-s : 显示名称、线路和时间(默认)。
-t : 显示上次系统时钟更改时间。
-u : 列出已登录的用户。
-w : 用+,- 或 ? 标注用户消息状态。
-H : 输出标题列。
-T : 用+,- 或 ? 标注用户消息状态。
--lookup : 尝试通过DNS查验主机名。
--message : 等同于-T。
--writable : 等同于-T。
==========================================================================
• whoami
▶ 命令描述
显示与当前的有效用户id相关联的用户名,与id -un命令作用相同。
▶ 命令格式
whoami
==========================================================================
• pwck
▶ 命令描述
pwck命令将检查用户及其认证信息的完整性,它将检查/etc/passwd和/etc/shadow文件的格式是否正确、数据是否有效。命令将会提示用户删除格式不正确或有其它错误的项的信息。
▶ 命令格式
pwck [-q] [-r] [-s] [ passwd [shadow] ]
▶ 常用选项
-q : 只显示错误信息,警告不显示。
-s : 根据UID进行排序。
-r : 只读方式执行命令。
==========================================================================
• su
▶ 命令描述
切换用户,可让一个普通用户切换为超级用户或其他用户,并可临时拥有所切换用户的权限,切换时需输入欲切换用户的密码;也可以让超级用户切换为普通用户,临时以低权限身份处理事务,切换时无需输入欲切换用户的密码。
su : 切换到root用户,不改变当前环境。
su - : 切换到root用户,改变到root用户登陆环境。
▶ 命令格式
su [-c command] [-f] [ [-g] [-G] groupname ] [-m, -p] [-s shell] [-, -l] [ username [args ...] ]
▶ 常用选项
-c command : 将一个命令传递给shell执行。
-f : 使shell不必读取启动文件,适用于csh和tsch。
-g groupname : 指定主用户组。
-G groupname : 指定辅助用户组。
-m : 变更身份时,保留环境变量不变。
-p : 变更身份时,保留环境变量不变。
-s shell : 运行指定的shell来代替当前的shell。
-, -l : 使得切换用户后的shell环境是所切换用户的登陆shell。
==========================================================================
• write
▶ 命令描述
write命令用于向其他用户发送消息。
▶ 命令格式
write username [tty]
▶ 常用选项
tty : 指定登录用户的tty