3.1 用户配置文件和密码配置文件html
3.2 用户组管理linux
3.3 用户管理shell
3.4 usermod命令vim
3.5 用户密码管理安全
3.6 mkpasswd命令app
3.7 su命令ssh
3.8 sudo命令ui
3.9 限制root远程登陆加密
sudo高级配置http://www.jianshu.com/p/51338e41abb7spa
使用 chroot 监狱限制 SSH 用户访问指定目录: 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
1、用户配置文件和密码配置文件
用户配置文件:cat /etc/passwd
一行表明一个用户,每一行用冒号分隔为7段:
第一段:用户名
第二段:早期为用户的密码,后来由于安全问题将密码保存在/etc/shadow文件里
第三段:用户的uid
第四段:用户的gid
第五段:用户的注释描述信息,没有实际做用
第六段:用户的家目录
第七段:用户登陆的shell
密码配置文件:cat /etc/shadow
head -n1 /etc/shadow; tail -n2 /etc/shadow 在一行中使用两个命令,用 ;分号分割
跟/etc/passwd 对应,每一行一个用户,用冒号分割为九段
第一段:用户名
第二段:用户密码
第三段:最近一次更改密码距离1970年1月1曰总共多少天
第四段:表示多少天之后才能够更改密码,默认为0不限制
第五段:表示多少天内必须更改密码,不然密码过时没法登陆
第六段:警告,提示距离密码过时还有几天
第七段:帐号的失效期限
第八段:用户距离1970年1月1曰多少天后过时
第九段:保留字段,没有实际意义
2、用户组管理
cat /etc/group
用户组的配置文件分为四段: 第一段:用户组的名称 第二段:用户组的密码,实际保存在/etc/gshadow文件中 第三段:用户组的GID。 第四段:用户组的成员。
cat /etc/gshadow 组密码的配置文件 与/etc/shadow对应
/etc/gshadow用户组的密码配置文件
此文件与/etc/group文件中的行一一对应,也有四段:
第一段:用户组名
第二段:加密码后的密码
第三段:组管理员(多个用,分隔)
第四段:组成员(多个用,分隔)
带 - 号的文件是系统自动备份的文件
groupadd grp1 使用groupadd建立组grp1
tail -n1 /etc/group 查看最后一行的组
groupadd -g 1005 grp2 -g 在建立组grp2的时候,指定gid为1005
修改用户组:
groupmod 选项 组名 #用法和usermod相似 -g选项:#改变组的ID号 groupmod -g 1122 user2 #将用户组user2的gid改成 1122
-n选项:改变用户组组名
使用groupdel 删掉组grp1 ,删除组以前,这个组里面不能有用户
3、用户管理
查看用户gid和uid: id命令
id命令能够査看用户的UID, GID,和附加组的GID
id 不带参数直接使用id命令是查看当前用户, id userl #带用户名参数能够查看指定用户。 括号里面的为用户名和组名
-u选项:只显示用户的uid -g选项:只显示用户的gid -G选项:只显示用户的附加组的gid -n选项:配合-u、-g、-G选项使用,只显示用户名,所属组名,和附加组名。#-n只能配合任意一个选项
建立用户user4时,指定uid为1004指定user4所属的组为grp2:
useradd -u 1004 -g grp2 user4
-u选项:指定uid。root用户的uid为0 , CentOS7的普通用户UID是从1000开始使用 -g选项:指定gid gid必须是已经存在的 -d选项:指定用户的家目录 : useradd -d /home/test2 testuser4 testuser4的家目录为 /home/test2 -s选项:指定用户登录的shell 通常不须要指定,指定不能登录的用户为/sbin/nologin : useradd -s /sbin/nologin testuser5 -M选项:建立用户的同时不建立家目录。一个用户没有家目录会出现不少问题,因此通常只在建立不可登录的用户时使用。
useradd -u 1007 -g grp2 -d /home/to/ -s /sbin/nologin user6 设置用户uid为1007,组为grp2,使用-d指定家目录为/home/to/
-M在建立用户的同时,不建立家目录
uid是自增的,若是指定了uid为1005,下一个会从1006开始,gid会根据uid增长
删除用户:
userdel + 用户名 直接删除用户,不删除家目录
userdel -r 用户名 删除用户而且把用户的家目录也删除,使用-r
4、usermod命令
更改用户属性的命令
命令格式:usermod 选项 user_name #注:使用usermod命令至少须要一个选项。
usermod -u 2222 user1 把用户user1的uid改成2222 -u选项:更改用户的uid
tail -n2 /etc/passwd 查看passwd最后两行user3的gid是2224,
usermod -g 2224 user1 使用-g把user1的gid更改为2224 usermod -g user2 user1 也可使用-g 加user2 (组名) user1(用户名),把用户user1的gid改为user2的2223 -g选项:更改用户gid 可使用组名也能够用gid
usermod -d /home/user2 user1 使用-d更改用户user1的家目录为/home/user2 -d选项:更改用户的家目录,若是更改用户的家目录不存在,须要将用户原有的家目录重命名为更改的家目录。或者复制系统的家目录模板到指定的路径下
usermod -s /sbin/nologin user3 -s选项:更改用户的shell,将 user3更改成不能登陆的shell
-G选项:扩展组,一个用户能够属于多个组,可是gid只有一个,除了gid以外的都叫作扩展组。 给用户指定多个组的格式: usermod -G usermod -G user1,user3 user1 user1(用户名)
-L选项:锁定用户。 #注:锁定用户后,ROOT用户可使用数su命令切换到该用户。 #可是,该用户没法直接登陆,在普通用户下也不能使用su命令登陆被锁定的用户。 #锁定后的用户在/etc/shadow文件中的密码最前面加上了一个感叹号。此时这个用户就没法登陆了。
-U选项:解锁用户 #将user2用户解锁: cat /etc/shadow |grep user2 #/etc/shadow文件中该用户的密码最前面的感叹号已经不在了,这个用户就能够正常登陆了。
5、用户密码管理
使用 passwd user1 给user1修改密码,会多一个加密的字符串,若是用户没有密码是 两个 !!,空密码用户不能登陆,*号,表示该用户的密码是被锁定的,也不能登陆
passwd -l user1 使用 -l选项锁定用户,用户锁定后出现两个!! passwd -u user1 使用-u选项解锁用户,两个!!取消
usermod -L user1 使用 -L 选项也是锁定用户,配合usermod使用,用户锁定后,有一个!,只要有!号就没法登陆 usermod -U user1 使用-U 解锁用户,配合usermod使用。
passwd --stdin user2 使用 --stdin 设置密码:123456 -stdin选项:更改用户密码的另外一种方式,能够echo password| passwd -stdin user_name 也能够passwd -stdin user_name,而后输入一个密码,此方法会以明文显示密码
shell脚本中使用 |把前面命令的结果传递给后面的命令
echo "123456" | passwd --stdin user2 |管道符把前面命令的结果(123456)传递给后面的命令,直接更改用户密码
echo -e "abc123456\nnnn123456" | passwd user2 ******
-e 能够在一行命令中出现换行符 \n 换行
6、mkpasswd命令 :
make password 能够生成随机的字符串,能够当作密码使用
使用前先安装:yum install -y expect mkpasswd 不带选项默认生成9位的随机字符串。 mkpasswd -l 12 生成12位随机字符串 mkpasswd -l 12 -s 3 -s 生成的字符串有三个特殊字符 mkpasswd -l 12 -s 0 生成的字符串没有特殊字符 ,0个
7、su命令 切换用户
su - user1 切换到用户user1 使用 - 能够完全切换到user1用户
su - -c "touch /tmp/uu.txt" user1 -c选项:使用指定用户执行一条命令,用user1用户的身份去执行touch .tmp/uu.txt文件的组根据用户的主组来决定
8、sudo命令
sudo:受权命令:
sudo命令用来以其余身份来执行命令,预设的身份为root。 在/etc/sudoers中设置了可执行sudo指令的用户。若其它未经受权的用户企图使用sudo,则会发岀警告的邮件给管理员。 用户使用sudo时,必须先输入密码,以后有5分钟的有效期限,超过时限则必须从新输入密码。 sudo的配置文件: /etc/sudoers 也可使用visudo访问 /etc/sudoers文件为sudo的配置文件,能够设置用户能以什么身份执行哪些命令 visudo命令: 使用visudo命令能够编辑配置sudoers文件,保存时会自动检查是否有语法错误
执行visudo命令后,找到:
而后在找到的内容下面添加如下内容:
添加这一行的意思是user1用户能够在全部终端上以root权限运行全部命令
编辑完成后,保存退出,切换到user1用户,看看是否能够用sudo命令执行一些root用户才能够执行的命令,
sudo /usr/bin/ls /root/ 须要输入密码才能够
写成绝对路径/usr/bin/ls,能够用which查看
sudoers文件配置格式说明:
配置格式:用户名 ALL=(ALL) [NOPASSWD:] Command
用户名:授予哪一个用户或用户别名(多个用户创建一个别名,User_Alias)
ALL=(ALL):其中等号左边的ALL表示主机IP或者主机名,通常都为All,等号右边的ALL为前面的用户名将授予那个用户的权限,ALL表示root或者说是全部用户。
NOPASSWD:添加这个字符串后,用户使用sudo受权的时候不需输入用户密码。
Command:表示什么命令可使用sudo受权。命令必须以绝对路径表示。多个命令使用逗号隔开。当Command是ALL 的时候,表示全部命令均可以使用sudo受权。还能够配置命令组别名。
编辑配置文件visudo给命令加别名:Cmnd_Alias USER1_CMD=/usr/bin/ls, /usr/bin/mv
在上面定义别名的名称为USER1_CMD
在下面使用别名名称USER1_CMD,便可使用别名中的命令
9、限制root远程登陆
生产环境中,咱们为了安全起见,是应该禁止root用户远程登陆的。若是有需求要用到root权限,能够用sudo设置,受权给普通用户
限制root远程登录后,只有使用普通用户登录后,再使用su-切换到root,前提是必须知道root用户的密码。还有一个办法就是经过sudo受权su命令,让su命令不须要密码就能够切换到root用户。在visudo里面添加如下内容:
给几个用户设置别名,名称为USERS,User_Alias USERS = user1, user2, user3
给用户设置别名:USERS
并在使用/usr/bin/su命令时 不须要输入密码
先切换到user1,使用sudo su - root 切换到root,没有使用密码
限制root远程登录:
vim /etc/ssh/sshd_config
去掉PermitRootLogin前的 # 号 把yes改为no,若是是yes即容许root用户远程登录 而后保存退出,重启sshd服务:systemctl restart sshd.service 设置完成,root用户退出后,没法远程登录
能够先登录普通用户,根据在配置文件中的设置,在使用sudo su - root 时不须要使用密码,来实现登录root 用户