3.1 用户配置文件和密码配置文件
3.2 用户组管理
3.3 用户管理
3.4 usermod命令
3.5 用户密码管理
3.6 mkpasswd命令
3.7 su命令
3.8 sudo命令
3.9 限制root远程登录
sudo高级配置http://www.jianshu.com/p/51338e41abb7
使用 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
一、用户配置文件和密码配置文件
用户配置文件: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曰多少天后过期
第九段:保留字段,没有实际意义
二、用户组管理
cat /etc/group
cat /etc/gshadow 组密码的配置文件 与/etc/shadow对应
带 - 号的文件是系统自动备份的文件
groupadd grp1 使用groupadd创建组grp1
tail -n1 /etc/group 查看最后一行的组
groupadd -g 1005 grp2 -g 在创建组grp2的时候,指定gid为1005
使用groupdel 删掉组grp1 ,删除组之前,这个组里面不能有用户
三、用户管理
创建用户user4时,指定uid为1004指定user4所属的组为grp2:useradd -u 1004 -g grp2 user4
useradd -u 1007 -g grp2 -d /home/to/ -s /sbin/nologin user6
设置用户uid为1007,组为grp2,使用-d指定家目录为to
-M在创建用户的同时,不创建家目录
uid是自增的,如果指定了uid为1005,下一个会从1006开始,gid会根据uid增加
删除用户:userdel + 用户名 直接删除用户,不删除家目录
userdel -r 用户名 删除用户并且把用户的家目录也删除,使用-r
四、usermod命令
更改用户属性的命令
usermod -u 2222 user1 把用户user1的uid改为2222
-u选项:更改用户的uid
使用usermod命令至少需要—个选项
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(用户名)
五、用户密码管理
使用 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
shell脚本中使用 |把前面命令的结果传递给后面的命令
echo "123456" | passwd --stdin user2 |管道符把前面命令的结果(123456)传递给后面的命令,直接更改用户密码
echo -e "abc123456\nnnn123456" | passwd user2 ******
-e 可以在一行命令中出现换行符 \n 换行
六、mkpasswd命令 :
make password 可以生成随机的字符串,可以当做密码使用
使用前先安装:yum install -y expect
mkpasswd -l 12 长度12位
mkpasswd -l 12 -s 3 -s 生成的字符串有三个特殊字符
mkpasswd -l 12 -s 0 生成的字符串没有特殊字符 ,0个
七、su命令 切换用户
su - user1 切换到用户user1 使用 - 可以彻底切换到user1用户
su - -c "touch /tmp/uu.txt" user1 -c选项:使用指定用户执行一条命令,用user1用户的身份去执行touch .tmp/uu.txt文件的组根据用户的主组来决定
八、sudo命令
在/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/ 需要输入密码才可以
给命令加别名:Cmnd_Alias USER1_CMD=/usr/bin/ls, /usr/bin/mv
九、限制root远程登录
给用户设置别名:USERS
并在使用/usr/bin/su命令时 不需要输入密码
先切换到user1,使用sudo su - root 切换到root,没有使用密码
vi /etc/ssh/sshd_config
去掉PenmitRootLogin前的 # 号 把yes改成no,如果是yes即允许root用户远程登陆
然后保存退出,重启sshd服务:systemctl restart sshd.service
设置完成,root用户退出后,无法远程登陆
可以先登陆普通用户,根据在配置文件中的设置,在使用sudo su - root 时不需要使用密码,来实现登陆root 用户