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
默认配置来创建的
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
orw
查看当前登录用户信息
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文件中有编写规则说明,具体参照下图。