0321用户和组管理

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 用户
 

 

相关文章
相关标签/搜索