Linux进阶之路01-用户部分

1.系统中为什么要有用户

用户是用来进行安全设定的
组是用来共享权力的
附加组:可以决定权限,不一定要有附加组
初始组:无法决定权限,一定有,不能更改

2.用户存在的形态

用户在系统中以表格和表格中的一系列字符出现的

3.用户配置文件

/etc/passwd        用户信息文件位置
用户名称    主机名称=(执行程序身份)命令

(以:号为分隔符)
用户名称:密码:用户id(唯一的身份证号):组id:用户说明:用户家目录(用户出现的默认地址):用户默认使用的shell

                  此处说一句题外话(用户的id默认是从1000开始,因此此处示例新建的用户id为1001)...

/etc/group        用户组信息

Linux进阶之路01-用户部分_第1张图片
组名称:组密码:组id:附加组成员(这些组暂时没有附加组成员,因此后面为空)

/home/username        用户家目录

/etc/skel.*        用户骨文件(用户环境配置模版,用户建立时会自动被复制到家目录中)

cat /etc/shells 可以查看linux下有哪些shell,

  Linux进阶之路01-用户部分_第2张图片
  其中sbin/nologin和usr/sbin/nologin 是默认系统启用的,创建的用户默认无法使用

4.用户的查看

whoami        查看当前用户的名称

id        username        查看用户的id信息
id    -u    username        查看用户的uid
id    -g    usernmae        查看那用户的初始组id
id    -G    username        查看用户的附加组id
id    -n    username        以名称显示信息

5.用户的创建

先输入这一行命令来监控passwd和组信息
watch -n 1 'tail /etc/passwd /etc/group ;echo=====;ls -l /home/'

Linux进阶之路01-用户部分_第3张图片

可见在passwd最后一行,是我在另外一个shell命令窗口下敲下useradd linux所创建的用户,右上角的时间可以证明确实是每一秒钟刷新一次,而不是页面固定一成不变^_^

在添加用户时,要先想到这个用户的初始组我要放在那里(如果你想放在一个指定的组,但这个组又没有的时候,那就要首先添加一个组,然后再创建用户)

watch -n 1 每秒钟显示一次
此下操作都是在root用户下操作
userdel            username    删除用户
userdel     -r    username    删除用户及所有信息

useradd               username    使用默认规则建立用户(规则查看/etc/login.defs)
useradd        -u    username    用户的uid
useradd        -g    username    指定用户的初始组id
useradd        -G    username    附加组
useradd        -c    username    说明文字    
useradd        -d    username    家目录(不要放在/mnt下,因为这个目录不可被写入,但可以再/mnt下先创建一个目录,再放在这个目录下)
userddd        -s    username    制定用户的shell(系统可以用shell可在/etc/shells中可以查看,不能自己随意写)
以上都只是在创建的时候指定特定的某一点,还可以进行多个点的指定,例如:
useradd -u 1234 -g 4321 -G 2233 -c "" -d /home/linux -s /bin/ bash linux
创建了一个id为1234,初始组id为4321(初始组id必须之前就存在,就像你必然出生在一个家庭中,不可能说你出生了就是一个人,最少还有母亲)附加组id为2233(类似你的初始组是你家这个组,但是你还可以加入别的组)说明文字为空,家目录为/home/linux shell指定为bin/bash,用户的名字叫linux

groupadd    groupname    建立组
groupadd    -g            建立组,并制定组id
groupdel    groupname    删除组        

异常操作:
1.当你删除时没有执行的时userdel username,而中间没有加入-r时,只会删掉该用户的基本信息(默认创建的除外),配置文件还存在,这时会再执行命令后报错,上面会显示一些目录,显示哪个目录,说明配置文件在哪些目录下,删除掉这些目录就算是删除干净了

2.当你在删除一个用户时,发现shell报错,显示当前用户正在启用着一个进程(例如2333端口正在执行该用户的进程),可以使用下面的命令
kill -9  2333强制结束某一个进程
再重新打开shell,再次进行删除用户操作

进入一个你所创建的用户中,但如果你想退出这个用户:ctrl+d,longout,exit

man useradd 查看useradd手册

6.用户的管理

usermod -l linux westos        修改用户的名称
usermod -u 666 westos         修改用户的id为666
usermod -g 6666    (要存在)westos 修改用户的初始组id为6666
usermod -G 7676 westos         修改用户的附加组为7676
usermod -aG 25             添加用户的附加组25
usermod -G "" westos         删除掉所有的附加组
usermod -c test westos         添加westos的备注信息为test
usermod -d /home/lee westos     修改家地址为lee,但是实际的文件名不会发生变化
usermod -md /homelee westos     修改家地址为lee,同时世纪的文件名也会发生变化
usermod -s /bin/tcsh westos     修改westos的shell的方式为tcsh

7.用户切换

su - username 进入username用户中(超级用户进入普通用户是需要密码的
        低级用户切换到高级用户或者切换到平级用户是需要后者密码的)

“注意:”
1.用户切换后需要及时退出在切换到下一个用户
2.su - 表示切换用户身份以及用户环境

echo $PATH 搜索环境变量的位置

8.用户的认证信息

watch -n 1 tail /etc/shadow 监控每一秒钟显示一次用户的认证信息
/etc/shadow用户的认证信息

Linux进阶之路01-用户部分_第4张图片

用户监控认证信息

用户名称:
用户密码:
    本机中使用的是md5 sha512 典型的对称加密(加密和解密使用同一种字符)    在vim /etc/login.defs里可以查询
  

    passwd username 只有超级用户可以执行(修改普通用户的密码,不加用户名则默认修改超级用户自身的密码)

               (题外话:超级用户修改密码不需要输出之前的密码,可以直接进行修改,这是因为在权限下的设定是这样的)
    passed -d westos 解除密码
    usermod -L 冻结帐号 强度弱
    usermod -U 解锁帐号 强度弱
    passwd -l 冻结帐号 强度强(执行命令后会像下图出现两个!!,其中两个表示冻结强度高,一个表示强度弱)
    passwd -u 解冻帐号 强度强


    上图中17753:0:99999:7:::的表示如下
1.密码最后一次被修改的时间:(表示距离1970年一月一号的时长)
    当此位数字为0时,用户在登陆系统时会被强制改密码
    chage -d 0 westos
    passwd -e westos
2.密码最短有效期:
    chage -m 1 westos
    passwd -n 3 westos
3.密码最长有效期:
    chage -M 30 westos
    pass -x 40 westos
4.密码过期警告:
    chage -W 2 westos
    passwd -w 3 westos
5.密码非活跃期:
    chage -I 2 westos
    passwd -i 0 westos
    如果写-1,则清除
6.帐号到期日:
    chage -E “2018-11-11” westos
7.未设定用户自定义

9.用户权力下放

之前先创建了一个纯净的linux普通用户,想让这个用户可以拥有超级用户的权力来创建一个普通用户

这是使用linux普通用户来创建用户时的操作,可以看见会显示没有权限不能创建,所以我们要进行下面的权利下发操作
1.配置文件
/etc/sudoers
2.配置命令
vim /etc/sudoers    此命令不提供语法检测,你写进去什么就是什么,(能不能执行我不会管)
visudo        此命令(和上面的命令作用一样,都是打开配置文件)但还提供语法检测

这是我打开文件后在第102行随便加入的错误命令

可以看到,在:wq保存退出后,会显示上图提示,报错并显示多少行,这时键入e,进入文件重新编辑


用户名称    主机名称=(执行程序身份)命令    当执行命令时需要进行身份验证

(主机名可以通过hosthome命令来进行查询)


linux localhost.localdomain=(root) /user/sbin/useradd(这就赋予了linux这个普通用户使用超级用户才能使用的useradd命令权限)
用户名称    主机名称=(执行程序身份)NOPASSWD:命令1,命令2 当执行命令时不需要用户验证

输入命令保存退出,配置完成.

配置完成后在shell上测试:

su - linux    切换用户到之前创建好的普通用户linux
sudo useradd hello    用linux就可以执行命令来创建一个hello的普通用户

你可能感兴趣的:(Linux)