用户管理常用命令
useradd 新建用户(root权限)
userdel 删除用户(家目录保留)
参数-r(家目录删除)
passwd 修改用户密码
usermod 修改用户属性
参数-d 修改
usermod -d /home/w1 w(将家目录w改为w1)
-g 修改用户组
chage 修改用户属性
id+用户名 查看用户
家目录:/home/用户名
/root root管理
/etc/passwd 用户被记录在该目录
/etc/shadow 用户密码相关的目录
组管理命令
groupadd 新建用户组
1.groupadd group1
useradd user1
usermod -g group1 user1
2.useradd -g group1 user2
groupdel 删除用户组
临时切换用户
su - +用户(root切换到普通不需要密码;反之需要)
su-------切换用户
su - username 使用login shell方式切换用户
sudo 以其他用户身份执行命令(以自己的身份执行其他用户身份的命令)
visudo 设置需要sudo的用户(组)
用户和用户组的配置文件
/root root用户的家目录
/home/username 普通用户的默认家目录位置
/etc/shadow 用户密码相关配置文件
用户名称:加密的密码
/etc/passwd 用户配置文件
用户名:是否需要密码验证:uid:gid:家目录:用户登陆的命令解释器
user1:x:1003:1003::/home/user3:/bin/bash
/etc/group 用户组配置文件
组的名称:组是否密码验证:组的gid:其他组设置
用户信息文件: /etc/passwd
密码文件: /etc/shadow
用户组文件: /etc/group
用户组密码文件: /etc/gshadow
用户配置文件:
/etc/login.defs
/etc/default/useradd
新用户信息文件:/etc/skel
登录信息: /etc/motd
========================用户信息文件详解============================================
我们先看一下用户信息文件里都放的什么
[root@localhost ~]# vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:/sbin/nologin
........
每一行内容存放一个用户的信息,每个用户信息有7部分组成
root:x:0:0:root:/root:/bin/bash
root 用户名 用户登录系统时使用的用户名
x 密码 密码位
2 UID 用户标识号
2 GID 缺省组标识
root 注释性描述 例如存放用户全名等信息
/root 宿主目录 用户登录系统后的缺省目录
/bin/bash 命令解释器 用户使用的Shell ,默认为bash
UID ?
关于上面的UID这里细说一下,其实决定用户是什么权限,是由UID号决定的。
linux用户分为三种:
超级用户:(root UID=0)
普通用户: (UID 500~60000)
伪用户: (UID 1~499)
所以,我们可以修改用户的UID号来修改用户的类型,如果把root的UID号为500,那么root就变成了普通用户,如果把fnngj用户的UID改为0,那么它就拥有了root用户的超能力。
[root@localhost ~]# vi /etc/passwd 进入之后修改,完了保存退出就OK了。
伪用户?
说到用户种类,又牵扯到一个伪用户,那么伪用户是干什么用的?
1.伪用户与系统和程序服务相关
bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户。
mail、news、games、apache、ftp、mysql及sshd等,与linux系统的进程相关。
2. 伪用户通常不需要或无法登录系统
3. 可以没有宿主目录
==========================密码文件详解========================================
用户密码文件,用户信息文件中留有密码位,为什么没密码了呢? 其实,最早的linux这个位置真的是放密码的,因为不全安,所以,就将密码单独存放了,现在只是用x表示这里有存放密码的位置。
为什么要把密码放在/etc/shadow中
[root@bogon /]# ls -l /etc/shadow
-r-------- 1 root root 1021 2月 27 21:31 /etc/shadow 我可以看到这个文件只有管理员root有权限查看修改
现在我们来看密码文件都放了什么?
[root@bogon /]# more /etc/shadow
root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::
bin:*:15391:0:99999:7:::
daemon:*:15391:0:99999:7:::
adm:*:15391:0:99999:7:::
lp:*:15391:0:99999:7:::
sync:*:15391:0:99999:7:::
shutdown:*:15391:0:99999:7:::
halt:*:15391:0:99999:7:::
mail:*:15391:0:99999:7:::
news:*:15391:0:99999:7:::
uucp:*:15391:0:99999:7:::
operator:*:15391:0:99999:7:::
games:*:15391:0:99999:7:::
..........................
我们还以第一行为例进行分解。
root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::
root 用户名 用户登录系统时使用的用户名
$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs. 密码 加密密码 MD5
15391 最后一次修改时间 linux这里以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为15391了。
0 最小时间间隔 这个字段代表要经过多久才可以更改密码。如果是“0”表密码可以随时更改。
99999 最大时间间隔 于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个帐号将暂时失效。上面的99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全
7 密码变更期期限快到前的警告期:当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。默认的是七天。
帐号失效期: 如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重新启用,那么这个帐号将暂时失效。
帐号取消日期: 这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。
保留: 最后一个字段是保留的,看以后有没有新功能加入。
疑问:既然shadow文件保存了密码,而passwd文件中没有保存密码,为什么不把passwd文件中的密码位取消掉呢?
其实,密码在存放之前,是先放在passwd文件中的,然后再转换到shadow文件中的。下面来验证下
[root@bogon /]# grep root /etc/passwd /etc/shadow
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::
[root@bogon /]# pwunconv 将密码回写
[root@bogon /]# grep root /etc/passwd /etc/shadow
/etc/passwd:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:0:0:root:/root:/bin/bash
/etc/passwd:operator:*:11:0:operator:/root:/sbin/nologin
grep: /etc/shadow: 没有那个文件或目录
[root@bogon /]# pwconv 转换到shdow文件中,只不过平时这个动作平时由linux自动完成。
[root@bogon /]# grep root /etc/passwd /etc/shadow
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15456:0:99999:7:::
linux对用户登录的验证就是通passwod文件来验证用户名是否存在,然后通过shadow文件来验证用户名对应的密码是否正确,那么理解了底层东西很有必要,我们可以不需要去学习创建用户命令,真接通过vim命令在两个文件中添加用户。这就是linux的魅力噢。不像windows一样,我们不但知其然,还知其所以然。
查看文件权限的方法
1.查看文件权限
-rw-------1 root root 1523 sep 28 12:05 anaconda-ks.cfg
类型 权限 所属用户和组 文件名
rw-------
前三个rw-:用户对文件的权限
中间三个---:组对文件的权限
最后三个---:其他人对文件的权限
类型:
- 普通文件
d 目录文件
b 块特殊文件
c 字符特殊文件
l 符号链接(小写L)
f 命名管道
s 套接字文件(小写S)
权限:
1.普通文件:
字符 权限表示法:
r 读
w 写
x 执行
数字权限表示法:(8进制)
r=4
w=2
x=1
2.目录文件:
x:进入目录
rx:显示目录内的文件名(进入文件并查看文件名)
wx:修改目录内的文件名(进入文件并修改文件名)
3.文件权限的表示方法:
-rw-r-xr-- 1 username groupname mtime filename
-:普通文件
rw-:文件属主的权限(u)
r-x:文件属组的权限(g)
r--:其他用户的权限(o)
创建新文件有默认的权限,根据umask值计算,属主和属组更久当前进程的用户来设定
4.修改权限的命令
chmod:修改文件,目录权限
chmod u+x /tmp/testfile
chmod 755 /tmp/testfile
chown:更改属主、属组
chown 用户名:组名 文件名
chown [-R] 账号名称 文件/目录
chown [-R] 账号名称:组群 文件/目录
chgrp:可以单独更改属组,不常用 chgrp 组群 文件名/目录
echo:显示信息,显示在终端
echo 123 > afile(>输出重定向),将123输入到afile文件中
linux下分三类用户:
u 修改第一部分所有者
g 修改第二部分所属组
o 修改第三部分其他人
a 修改所有部分
修改权限符号:
+ 加权限
- 减权限
= 等于什么权限(设置权限)
ls -ld +单个文件,查看单个文件的权限id
ctrl+r 搜索之前写过的命令
5.特殊权限
SUID:用于二进制可执行文件,执行命令时取得文件属主权限su
SGID:用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属主
SBIT:用于目录,该目录下新建的文件和目录,仅root和自己可以删除