1.用户管理:
相关的两个配置文件: /etc/passwd /etc/shadow
/etc/passwd 保存用户详细信息(掌握每一列代表的含义)
第一列 用户名
第二列 密码控位符,以 x 表示
第三列 uid
第四列 gid
第五列 用户的描述信息(姓名、办公室、手机号等信息)
第六列 用户家目录
第七列 用户 shell,两种 /bin/bash 用户可登录 /sbin/nologin 用户不可登录
/etc/shadow 保存用户密码信息(了解每一列代表的含义)
第一列 用户名
第二列 加密后的密码,三种加密格式:
$1 开头 MD5加密
$5 开头 SHA-256加密
$6 开头 SHA-512加密
!! 表示用户还未被设置密码
* 表示用户被锁定
第三列 密码更改时距1970年1月1日有多少天
第四列 表示要过多久才能修改密码,0表示随时可以修改
第五列 密码失效的时间默认 99999
第六列 密码到期前提醒的时间
第七列 密码到期后的锁定时间,默认为空
第八列 账号的生命周期,默认为空
第九列 保留字段
常用命令: useradd usermod userdel passwd
useradd lucy //添加 lucy 用户
useradd –u 666 lucy //添加 lucy 用户,并手动指定uid
useradd –g 666 lucy //添加 lucy 用户,并手动指定 gid,前提是该 gid 已存在
useradd –G 667,668 lucy //手动指定附属组,即将 lucy加入多个组中
useradd –d /home/lily lucy //手动指定用户家目录
useradd –M lucy //添加用户 lucy,不创建其家目录,此时在 /etc/passwd 中第六列仍有内容,但 /home 下不存在 lucy/目录
如果此时 su – lucy ,可以成功切换,但会警告无法切换到用户家目录:
-bash-4.1$ 为其 shell 形式,而非 [lucy@localhost ~]$
如何解决这个问题:
[root@localhost ~]# mkdir /home/lucy
[root@localhost ~]# cp /etc/skel/.b*
[root@localhost~]# chown –R songwei:songwei /home/songwei
注: /etc/skel 目录下为用户登录初始化所需要的文件,如 .bashrc 、 .bash_profile 和 .bash_logout。
useradd –s /sbin/nologinlucy //手动指定用户 shell
usermod 修改用户配置信息,参数与添加用户时的绝大多数相同,注意两个有区别的参数:
usermod –L lucy //锁定 lucy 用户,使其不能登录
usermod –U lucy //解锁 lucy 用户
锁定/解锁用户还有一种方式:
pass -l lucy //锁定 lucy 用户,使其不能登录
passwd -u lucy //解锁 lucy 用户
chfn lucy //修改用户的描述信息
passwd lucy //修改 lucy 用户的密码,需要重复输入以确认
注:useradd 后的用户在设置密码前不能登录,即空密码用户不能登录,但可以在其他用户登录以后使用 su 切换来登录。
如果在使用 passwd 命令设置密码时不想重复输入两次,有如下几种方法:
passwd --stdin lucy //或者
echo "shiyanmima" | passwd –stdin lucy //或者
echo –e "shiyanmima\nshiyanmima\n" | passwd lucy // \n 为Linux中的换行符, echo –e 参数可以解
//析特殊字符
passwd -d lucy //使用 -d 参数,删除 lucy 用户的密码
userdel 删除用户,想要在删除用户的同时删除用户家目录及邮箱地址,需要使用 –r 参数:
userdel lucy //删除用户,不会删除用户家目录和邮箱地址(位于 /var/spool/mail下)
userdel –r lucy //删除用户及其家目录和邮箱地址
2.用户组管理:
常用的两个配置文件: /etc/group /etc/gshadow
/etc/group 用户组信息
第一列 用户组名称
第二列 组密码控位符
第三列 gid
第四列 附属组
/etc/gshadow 用户组密码信息,一般不去操作,作为了解
常用命令: groupadd groupdel groupmod
groupadd songwei //添加 songwei 组
groupadd –g 1000 songwei //添加 songwei 组,并手动指定gid
groupdel songwei //删除 songwei 组,如果其中有用户,必须先清空,否则删除失败
3. 切换登录用户:
3.1 su 命令:
用于切换当前登录的用户,直接使用不会切换到用户家目录,PATH变量也不会改变:
[root@localhost ~]# susongwei
[songwei@localhost root]#
如果想要彻底切换,添加 – 参数:
[root@localhost ~]# su – songwei
[songwei@localhost ~]#
使用–c 参数,可以以特定用户的身份执行命令:(常用于脚本中)
// 以 songwei 用户的身份执行 touch 命令
[root@localhost ~]# su –c “touch/tmp/songwei.log” songwei
[root@localhost ~]# ll /tmp/songwei.log
-rw-r--r--. 1 songwei songwei 0 Mar 2223:00 /tmp/songwei.log
3.2 sudo 命令:
sudo 的作用是让一个用户拥有其他用户的权限(一般用于让普通用户拥有 root 权限)去执行一些命令,如何授予这种权限:
[root@localhost ~]# visudo
## Allow root to run anycommandsanywhere
root ALL=(ALL) ALL
songwei ALL=(root) NOPASSWD: /bin/ls //新添加的一行
解释一下新添加的这一行的作用,第一列为指定的用户,如果有多个用户,以逗号隔开,ALL 代表以所有IP登录的用户均可享受权限,=(root)代表执行命令时拥有哪个用户的权限, /bin/ls 为执行的具体命令,如果有多条,以逗号隔开(这里的命令必须写绝对路径)。其中,使用 NOPASSWD:可以让用户在执行 sudo ls 时不用输入自己的密码。
不仅可以为一个或多个用户分配权限,也可以同时为一组用户分配权限,组名前加 %:
%aming ALL=(root) /bin/ls
这样就可以为用户组为 aming 的用户授予权限。
实例:
公司为安全起见,不允许远程登录 root 用户,即便输入的 root 密码是正确的,现在需要授予 songwei 和aming 两个用户可以在登录后切换到 root 用户使用 root 权限,该如何做呢?
[root@localhost ~]# visudo
songwei, aming ALL=(root) NOPASSWD: /bin/su
[root@localhost ~]# su – songwei
[songwei@localhost ~]# sudo su –
[root@localhost ~]#
如此即可完美解决该问题。那么,如何禁止 root 用户远程登录:
[root@localhost ~]# vim /etc/ssh/sshd_config
PermitRootLogin no //由 yes 修改为 no
保存退出后,重启 sshd 服务即可:
service sshd restart
补充: