3.1用户配置文件和密码配置文件
3.2用户组管理
3.3用户管理
3.4usermod命令
3.5用户密码管理
3.6mkpasswd命令
3.7su命令
3.8sudo命令
3.9限制root远程登录
{1}用户配置文件和密码配置文件
-
passwd 配置密码文件
-
每一个用户是一行,用:号分割为七段
-
第1个字段是用户名(第1行的root就是用户名)
-
第2个字段中都是x,存放的是用户的密码
-
第3个字段是一个数字,表示uid
-
第4个字段也是数字,表示gid
-
第5个字段为注释信息,没有实质意义
-
第6个字段是用户的家目录,root的家目录是/root,普通用户的家目录是/home/aming
-
最后一个字段是用户的shell,/bin/bash表示可以登录,/sbin/nologin表示不能登录
-
专门存密码的文件 /etc/shadow和/etc/passwd类似, 由冒号分成9个字段。
-
如果想在一行输入两条命令,中间可以用分号隔开如:head -n1 /etc/shadow: tail -n2 /etc/shadow
-
第1个字段为用户名
-
第二字段为用户密码,该密码是加密的 不能反明文密码。
-
第3个字段为天数,上次更改密码的日期(从1970-1-1开始计算)
-
第4个字段为要过多少天可以更改密码,默认为0
-
第5个字段为密码多少天后到期,即在多少天内需要更改密码。
-
第6个字段为密码到期前的警告期限
-
第7个字段为账号失效期限
-
第8个字段为账号的生命周期;最后一个字段作为保留用的,无实际意义
{2}用户组管理
-
带减号结尾的文件是系统自动做的备份。
- groupadd:增加组命令
- 加上-g,就可以指定gid,自定义的话最好还是一千以上的数字, Centos7默认是从1000开始的;(Centos7以下默认是从500开始)
- groupdel 删除组命令 。
- 当组里面有用户我们就不能删除这个组,想删除一个组前提是这个组里没有用户,
{3}用户管理
-
useradd 增加用户的命令。
-
-u:表示自定义uid
-
-g:表示指定所属组
-
-d:表示自定义用户的家目录。
-
-s:表示自定义shell。
- -M:表示不建立家目录 不创建不代表没有。
-
uid会跟着上面的数字增加
-
gid并不会跟着上面数字增加
- 命令adduser和命令useradd一样,都是用来创建用户的
-
userdel 删除用户命令
-
格式为userdel [-r] username 其中-r选项的作用是,当删除用户时,一并删除该用户的家目录
{4}usermod命令
-
usermod 更改用户属性的命令
-
-u: 更改用户的uid
-
-g: 更改用户的gid或组名
-
-d: 更改用户的家目录
-
-s: 更改用户的shell
-
-G:添加扩展组;把用户追加到某些组里,可以追加到多个组中,每个组之间用“,”隔开
{5}用户密码管理
-
passwd 更改用户密码的命令,格式 passwd {用户名}
-
改完查看tail /etc/shadow/
-
没有密码是两个叹号 !!,空密码不能登录
-
密码是加密字符串
-
查看 head /etc/shadow/
-
星号代表用户密码是被锁定的,不能用的
-
-l: 锁定用户密码(被锁定的密码前面会有个感叹号 !! );passwd -L aming
-
usermod -L aming也能锁定密码,前面只会有一个叹号!,不管是一个还是两个都是锁上了。
-
-u: 解锁用户密码
-
-L 也可以解锁用户密码
- --stdin 修改密码的时候可以明文显示密码,且直接输入密码就可以,在写脚本的时候可能会用到。
-
echo -e 可以实现换行
-
在使用echo -e 命令时,后面跟的有两组字符串,并且两组字符串用“\”隔开,在“\”后加n执行后会换行显示,在“\”后面加t ,会隔开显示
{6}mkpasswd命令
-
命令mkpasswd(make passwd)用于随机生成密码,Linux中默认没有这个命令,需要安装expect软件包,yum install -y expect
- -l:生成指定长度的密码
- -s:指定密码中有几个特殊字符
{7}su命令
-
su 切换用户
-
加 - 表示彻底切换用户,包括自己的配置、环境变量。
-
格式su [-] aming,命令后面不加aming,就是切换到root用户
-
假如我们以root的身份去执行一条命令,但是不登陆到aming用户上去也是可以的
- 假如我们创建用户时没有创建用户的家目录,所以当我们切换到这个用户的时候,就会显示成
-
以下操作我们可以让他恢复正常
-
先创建它的加目录,然后更改属组合所有者,拷贝skel的配置文件,在更改所有者和所属组。
- 只要知道root的密码,普通用户也可以su到root。
{8}sudo命令
-
sudo 它可以让普通用户临时执行一条命令,以指定用户的身份去执行。通常情况下都是给普通用户执行root用户的权利。
-
要使用这个命令,需要编辑配置文件,etc/sudoers,但是直接编辑这个文件出错后系统不会报错,所以我们用visudo命令来编辑,如果编辑有问题,系统会提示错误
- 往下翻,一直找到root ALL=(ALL) ALL这一行,表示允许root用户在任何地方允许所有命令
- 在这条命令下面添加命令aming ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat,保存退出:wq;注意这里要使用命令的绝对路径并且要用空格隔开;小用法" :set nu"可以查看文件的行数。小括号里面的ALL指的是用户,后面的ALL指所有的命令。
- 如果发生内容错误,它会显示成如图:
- 编辑之后,aming 就可以拥有root的ls,cd,cat ,的权限了,需要输入用户的密码,第二次就不需要了使用方式如下
- 继续编辑visudo ,在加一个user5,嫌输入密码麻烦就加一个 NOPASSWD, 可以在使用sudo命令时,不需要再输入密码。
- visudo中还有可以给命令做别名的用法,比如说 Cmnd_Alias AMING_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat 在aming哪里把/usr/bin/ls, /usr/bin/mv, /usr/bin/cat换成AMING_CMD
{9}限制root远程登录
-
使用root用户登录服务器有一定的危险,为安全起见,我们可以禁止root远程登录,只允许普通用户登录。首先输入#visudo,给普通用户做别名,然后设定规则,让普通用户拥有任何身份,执行su命令无需密码
- 限制root远程登录,首先修改配置文件/etc/ssh/sshd_config,输入/Root搜索,将#PermitRootLogin yes修改为PermitRootLogin no,保存配置文件,重启sshd服务# systemctl restart sshd.service,这样我们就成功的限制了root远程登陆
课堂笔记
sudo不错的教程 http://www.jianshu.com/p/51338e41abb7
限定用户chroot https://linux.cn/article-8313-1.html
扩展
sudo与su比较 http://www.apelearn.com/bbs/thread-7467-1-1.html
sudo配置文件样例 www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers
sudo不错的教程 http://www.jianshu.com/p/51338e41abb7
sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html