用户登录和注销
基本介绍:
1) 登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用‘su - 用户名’命令来切换成系统管理员身份。(确实需要权限高的操作切换到root即可,不带-的话用户名要加 ' ' )
2) 在提示符下输入 logout 即可注销用户【不同的shell 可能不同(logout exit)】
使用细节:
1) logout 注销指令在图形运行级别无效,在运行级别 3下有效.(通过远程登录是有效的)
用户管理
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
1、添加用户
useradd 用户名
1)案例1:添加一个用户 xiaoming
useradd xiaoming
细节说明
1)当创建用户成功后,会自动的创建和用户同名的家目录 【/home/xiaoming】。
2)也可以通过 useradd -d /home/目录 新的用户名,给新创建的用户指定家目录。
创建指定家目录skyorder2,用户名为jack2,切换到jack2 useradd -d /home/skyorder2 jack2
2、指定/修改密码(Password 密码)
基本语法
passwd 用户名 // 如果没有带用户名,则是给当前登录的用户修改密码
应用案例
1) 给xiaoming 指定密码
2) 给当前登录的用户(xiaoming)修改密码
3、删除用户(delete 删除)
基本语法
userdel 用户名
应用案例
1、删除用户xiaoming,但是要保留家目录 userdel 用户名 //userdel xiaoming 家目录没有被删除了
2、删除用户以及用户主目录 userdel -r 用户名// userdel –r xiaoming 家目录被删除了 (remove 移除)
细节说明
是否保留家目录的讨论? [一般保留] 假如xiaoming离职了,但是他的家目录还有很多开发的东西,我们不会删除这些东西。
4、查询用户信息指令
基本语法
id 用户名
应用实例 案例1:请查询root 信息
uid=0(root) gid=0(root) 组=0(root)
uid 用户的id号
gid 用户所在组的那个组的id号
组 所在组的组名称
细节说明
1) 当用户不存在时,返回无此用户。
5、切换用户
介绍
在操作Linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如root 。
基本语法
su – 切换用户名
su '用户名'
注:有没有 - 的区别
- 没有 - 这种方式切换仅仅是切换了权限,环境没有变,你之前在那个目录切换后还是在那个目录。而且你前后的环境变量是一样的(echo $PATH 前面一样)。
- 有 - 切换到切换用户的根目录
应用实例
创建一个用户milan ,指定密码,然后切换到 milan。
细节说明
1)从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
2)当需要返回到原来用户时,使用exit指令。
3)如果 su – 没有带用户名,则默认切换到root用户。
6、查看当前用户/登录用户
基本语法
whoami/ who am I
who whoami who am i的区别
在Linux系统命令行操作来回切换用户多次,很容易混淆现在处于什么用户下,当以root身份登录后切换至xiaofeng用户状态下。
who 命令:
- 第一列显示用户名称
- 第二列显示用户连接方式。Tty意味着用户直接连接到电脑上,而pts意味着远程登录。
- 第三、四列分别显示日期和时间
- 第五列显示用户登录IP地址
总结:
i) whoami显示当前所处的用户
ii) who am i是登录的用户
iii) who 显示当前所处的用户和登录的用户
使用whoami命令显示的是当前“操作用户”的用户名。而who am i显示的是“登录用户”的用户名。要解释这个现象需要引入linux中的两个概念——实际用户(UID,即user id)和有效用户(EUID,即effective user id)。
实际用户是指用户登录时所使用的用户,所以在整个登录会话中,实际用户是不会变化的。而有效用户是指当前执行操作的用户,这个是能够利用su和sudo命令进行任意切换的。一般情况下,实际用户和有效用户是一样的,只有发生用户身份切换的时候,会发生差异。所以who am i显示的是实际用户的用户名,即用户登陆时候的用户ID,相当于who -m,而whoami显示的是有效用户的ID即EUID。
7、用户组
介绍
类似于角色,系统可以对有共性的多个用户进行统一的管理。
i) 新增组
指令
groupadd 组名
1)案例演示: 增加 用户组 wudang(武当) groupadd wudang
增加用户时直接加上组
指令
useradd –g 用户组 用户名
1)案例演示:增加一个用户 zwj, 直接将他指定到 wudang useradd -g wudang zwj
通过id zwj可以看到zwj在wudang这个组里面了。
ii) 删除组
指令(基本语法)
groupdel 组名
案例演示
1)案例演示:删除组wudang groupdel wudang (删除组要保证里面没有元素了)
iii) 修改用户的组(modify 修改)
指令(基本语法)
usermod –g 新的组名 用户名
1)案例演示:创建一个shaolin组,将zwj 用户修改到shaolin(少林) usermod -g shaolin zwj
8、用户和组的相关文件
/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
zwj:x:509:510::/home/zwj:/bin/bash
zwj是用户名、x是密码(加密了的,真正的密码在 /etc/shadow 文件 里面)、509用户的id(用户标识符)、510 组id、/home/zwj 用户的家目录、/bin/bash 用户所对应的shell
/etc/shadow 文件 (用户的密码保存在这个里面,加密了的看不懂)
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留 [图]
/etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表(打开看不到)
shaolin:x:510:
shaolin 组名、x 组的口令(看不到)、510 组的id(组的标识符)、:后面的表示 有哪些用户属于这个组(看不到)
sudo及其配置文件 /etc/sudoers 的详细配置
让普通用户拥有 root 权限演示:
(1)、切换到 root 用户
(2)、修改 /etc/sudoer 文件 vi /etc/sudoers
(3)、找到 Allow root to run any commands anywhere 这一行。
a) sudo介绍
sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的 root 命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
b) sudo 特点
§ sudo能够限制用户只在某台主机上运行某些命令。
§ sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
§ sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
§ sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。
c) sudo的工作过程如下
1,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
2,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
3,若密码输入成功,则开始执行sudo后续的命令
4,root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
5,若欲切换的身份与执行者的身份相同,也不需要输入密码
d) 配置文件/etc/sudoers
sudo 它的主要配置文件是 sudoers , linux下通常在/etc目录下,如果是 solaris,缺省不装sudo的,编译安装后通常在安装目录的 etc 目录下,不过不管 sudoers 文件在哪儿,sudo都提供了一个编辑该文件的命令:visudo来对该文件进行修改。强烈推荐使用该命令修改 sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。
visudo 使用vi打开 /etc/sudoers 文件,但是在保存退出时,visudo会检查内部语法,避免用户输入错误信息。
[root@hadoop100 opt]# visudo
如何配置sudoers:
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
##
## This file must be edited with the 'visudo' command.
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
# Cmnd_Alias LOCATE = /usr/bin/updatedb
## Storage
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
# Cmnd_Alias DRIVERS = /sbin/modprobe
# Defaults specification
#
# Refuse to run if unable to disable echo on the tty.
#
Defaults !visiblepw
#
# Preserving HOME has security implications since many programs
# use it when searching for configuration files. Note that HOME
# is already set when the the env_reset option is enabled, so
# this option is only effective for configurations where either
# env_reset is disabled or HOME is present in the env_keep list.
#
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults env_keep += "HOME"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
## 该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或
## 用户组所使用
##
## This file must be edited with the 'visudo' command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhaps using
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 、或IP地址,这时可以配置主机别名
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,
## 可以通过sudo调用所有别名包含的命令,下面是一些示例
## Networking 网络操作相关命令别名
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient
, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig
, /sbin/mii-tool
## Installation and management of software 软件安装管理相关命令别名
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services 服务相关命令别名
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database 本地数据库升级命令别名
# Cmnd_Alias LOCATE = /usr/bin/updatedb
## Storage 磁盘操作相关命令别名
# Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe
, /bin/mount, /bin/umount
## Delegating permissions 代理权限相关命令别名
# Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes 进程相关命令别名
# Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers 驱动命令别名
# Cmnd_Alias DRIVERS = /sbin/modprobe
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
# 一些环境变量的相关配置,具体情况可见man soduers
Defaults requiretty
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax(语法):
##
## user MACHINE=COMMANDS 用户 登录的主机=(可以变换的身份) 可以执行的命令
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项
##
## Allow root to run any commands anywhere
## 允许root用户执行任意路径下的任意命令
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE
, DRIVERS
## Allows people in group wheel to run all commands
## 允许wheel用户组中的用户执行所有命令
%wheel ALL=(ALL) ALL
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
## 允许users用户组中的用户关闭localhost这台服务器
# %users localhost=/sbin/shutdown -h now
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
## 读取放置在/etc/sudoers.d/文件夹中的文件(此处的#不意味着这是一个声明)
#includedir /etc/sudoers.d
https://segmentfault.com/a/1190000007394449?utm_source=tag-newest#articleHeader0