Linux学习笔记 - 用户账户

前提

对前一段时间学习Linux做一个总结,主要是整理笔记,写的可能比较乱,但是内容比较丰富,还是值得一看的。内容总共分为:用户账户、进程管理、计划任务、文件系统构成、磁盘管理、备份、Shell编程。内容都是比较基础,比较常用的,过一遍会加深你的印象。

用户账户

Linux用户基本上分为下面三类:

  • 超级用户(root , UID=0)
  • 普通用户(UID=[500,60000])
  • 伪用户(UID=[1,499])

用户配置文件储存在/etc/passwd文件下,文件中每一行代表一个用户,每一列代表用户的基本信息,第一列代表用户的用户名,第二列代表用户的密码,密码使用*代替。

因为密码是通过加密后存储在/etc/shadow文件下了,这个文件的权限只有root用户才能访问。

pwunconv命令可以将密码回写到/etc/passwd文件中,执行了这个密码后,再次进入/etc/passwd文件中,就会发现第二列的*被一串字符串所替代,这就是加密后的密码。

pwconv命令正好与上面的命令意思相反,它将密码从passwd中写入到shadow中,这个命令一般是在我们创建用户后就会自动执行。

同样的道理,用户组文件、用户组密码文件分别是/etc/group/etc/gshadow

用户配置文件:/etc/login.defs/etc/default/useradd

新用户信息文件:/etc/skel,在创建新用户后,会自动将此文件夹中的内容拷贝到新用户的HOME目录下,作为新用户的配置文件。

登录显示信息:/etc/motd成功后、/etc/issue登录时。

1、普通用户为什么可以改密码?

上面说过密码存放在/etc/passwd以及/etc/shadow中,而这两个文件对其他用户均没有写权限。

普通用户用passwd命令改密码,该命令的全路径是/usr/bin/passwd,你可以通过ls -l /usr/bin/passwd查看到该命令的权限,为-rwsr-xr-x,可以看到有个s权限位。
这个s权限位的意思就是当其他用户在使用这个命令的时候,将暂时获得这个命令的所属用户的权限。换句话就是说当普通用户在使用passwd命令的时候,会暂时获取root权限,从而可以改变/etc/passwd里的密码值,达到改密码的效果。

2、特殊权限位

那么,像上面那样的特殊权限位有哪些呢?又如何设置呢?

  • setUID:就是上面的s权限位,可以通过以下命令进行设置
    • chmod u+s filename
    • chmod 4755 filename
  • setGID: 大概意思同setUID,就是执行行默认获取命令所属组的权限,同样,可以通过下面命令进行设置
    • chmod g+s filename
    • chmod 2755 filename
  • 粘着位:用t表示,你可以通过查看/tmp目录的权限就知道了,那么,它的作用是什么呢?

/tmp目录的权限代表什么意思?
粘着位只是针对目录进行设置,大家知道/tmp目录的权限为drwxrwxrwt,意思就是什么人都具有读、写、执行的权限,那么,如果我建的文件或者目录被别人删了怎么办?所以,粘着位的作用就是:每个人在目录里都有读、写、执行的权限,但是只有自己可以删除自己创建的文件。

很神奇是不是?来看看怎么设置?
同样两种方式,chmod o+t dir&chmod 1777 dir,dir代表目录。

3、添加用户

useradd -D 其实就是根据/etc/default/useradd默认配置来创建的
default

4、用户组管理命令

  • usermod -G 组名 用户名 将用户加入用户组
  • gpasswd -a 用户名 组名 将用户加入用户组
  • groups查看用户隶属那些用户组
  • newgrp 切换用户组
  • grpck 用户组配置文件检查
  • chgrp修改文件所属用户组
  • vigr 编辑/etc/group文件

5、用户管理命令

  • pwck 检测/etc/passwd文件
  • vipw 编辑/etc/passwd文件
  • id 查看用户详细信息
  • finger 查看用户详细信息,有些Linux发行版默认不带此命令
  • passwd -S 查看用户密码状态
  • who or w查看当前登录用户信息

6、实例

  • 添加用户组:groupadd -g 888 webadmin
  • 删除用户组:groupdel webadmin
  • 修改用户信息:groupmod -n apache webadmin(将webadmin组名修改为apache)
  • 检测用户:passwd -S username
  • 锁定用户:passwd -l username

7、sudo

使普通用户以root的方式执行命令。
配置文件/etc/sudoers
格式:用户名(组名) 主体地址=命令(绝对路径);
实例:sudoer文件中有编写规则说明,具体参照下图。
sudoer