用户操作
linux 用户分三种,根用户、系统用户、普通用户
useradd 新建用户
userdel 删除用户
passwd 修改密码
usermod 修改用户属性
用户新增
[root@localhost ~]# useradd kuan1 //新增一个用户叫kuan1
[root@localhost ~]# id kuan1 //新增后用id查看用户信息
uid=501(kuan1) gid=501(kuan1) groups=501(kuan1)
[root@localhost ~]# id adc
id: adc: No such user //若用户不存在则会提示
第一步 会在/etc/passwd和/etc/shadow里面新增一条信息,分配一个UID给用户
[root@localhost ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
kuan:x:500:500:CentOS 6_1:/home/kuan:/bin/bash
kuan1:x:501:501::/home/kuan1:/bin/bash
[root@localhost ~]# tail -3 /etc/shadow
tcpdump:!!:18073::::::
kuan:$1$diF26fa2$FKeyiGQIE3X.KS0BOsvmu.:18073:0:99999:7:::
kuan1:!!:18348:0:99999:7:::
第二步 创建家目录,再/home下创建一个和用户名同名的目录,然后把/etc/skel下的所有文件复制到创建的家目录
[root@localhost ~]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
[root@localhost ~]# ls -a /home/kuan1
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
第三步 如果没有指定用户组,系统会新建一个和用户名相同的用户组,默认新增用户就属于这个用户组的
[root@localhost ~]# id kuan1 //groups 就是用户所属用户组
uid=501(kuan1) gid=501(kuan1) groups=501(kuan1)
每个用户都有一个唯一的UID
新增时指定UID,指定的UID不能跟其他用户冲突
useradd -u [uid] 用户名
[root@localhost ~]# useradd -u 555 kuan2
[root@localhost ~]# tail -3 /etc/passwd
kuan:x:500:500:CentOS 6_1:/home/kuan:/bin/bash
kuan1:x:501:501::/home/kuan1:/bin/bash
kuan2:x:555:555::/home/kuan2:/bin/bash
指定用户组
useradd -g [用户组] 用户名
[root@localhost ~]# useradd -g kuan1 kuan3
[root@localhost ~]# id kuan3
uid=556(kuan3) gid=501(kuan1) groups=501(kuan1)
指定用户家目录
useradd -d [目录] 用户名
[root@localhost ~]# useradd -d /home/kuan1 kuan4
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@localhost ~]# tail -3 /etc/passwd
kuan2:x:555:555::/home/kuan2:/bin/bash
kuan3:x:556:501::/home/kuan3:/bin/bash
kuan4:x:557:557::/home/kuan1:/bin/bash
修改密码
passwd [用户名]
刚刚创建的用户,是没有登录权限的。需要设置密码
[root@localhost ~]# passwd kuan1
Changing password for user kuan1.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
如果是普通用户修改直接输入passwd然后回车即可,普通用户再passwd 后面不能输入用户名。
删除用户
userdel [参数] 用户名
[root@localhost ~]# userdel kuan3
[root@localhost ~]# ls -l /home/
total 16
drwx------. 36 kuan kuan 4096 Mar 27 19:05 kuan
drwx------. 4 kuan1 kuan1 4096 Mar 27 19:08 kuan1
drwx------. 4 kuan2 kuan2 4096 Mar 27 21:26 kuan2
drwx------. 4 556 kuan1 4096 Mar 27 21:28 kuan3
这条命令删除用户后还会保存用户的家目录。
[root@localhost ~]# userdel -r kuan3
这条命令会删除用户和用户的家目录
修改用户信息
usermod [参数] 用户名
修改用户所在家目录
usermod -d [目录] 用户名
修改用户所属组
usermod -g[用户组] 用户名
锁定账号
usermod -L 用户名
解锁账号
usermod -U 用户名
用户组的操作
添加用户组
groupadd 名称
[root@localhost ~]# groupadd demo1
[root@localhost ~]# cat /etc/group
root:x:0:root
(省略)
demo1:x:502:
在/etc/group文件中,每一行就代表一个用户组,其格式是使用3个分隔号“:”隔开的4列。第一列是用户组名,第二列代表密码(但是并不使用),第三列代表用户组的数字ID,第四列是组成员,这里为空说明还没有任何用户属于这个组。
删除用户组
groupdel 名称
[root@localhost ~]# groupdel demo1
如果已有用户属于这个用户组,是不能删除的。
检查用户信息
users
显示当前登录的用户列表
[root@localhost ~]# users
kuan kuan
查看用户
finger 名称
centos默认没有按照这个命令,先运行yum -y install finger 进行安装
finger后面不加参数,会显示系统登录的用户
[root@localhost ~]# finger
Login Name Tty Idle Login Time Office Office Phone
kuan CentOS 6_1 tty1 40 Mar 30 22:20 (:0)
kuan CentOS 6_1 pts/0 Mar 30 22:21 (:0.0)
finger后面添加用户名 显示详细信息
[root@localhost ~]# finger user
Login: ftp Name: FTP User
Directory: /var/ftp Shell: /sbin/nologin
Never logged in. #最后一次登录时间
No mail. #邮箱
No Plan. #计划信息
切换用户
su 切换用户
su - 姓名 使用login shell 方式切换用户
sudo 以其他用户身份执行命令
[kuan@localhost ~]$ su
密码:
[root@localhost kuan]# pwd
/home/kuan
[root@localhost kuan]# exit
exit
输入su 默认是切换到root用户,退出使用exit。
su后面可以加“-” 参数,加上这个参数说明,身份和用户环境都会切换
[kuan@localhost ~]$ su -
密码:
[root@localhost ~]# pwd
/root
su - 跟su 相比,切换了用户的家目录。
root用户使用su命令切换成任意用户则不需要输入密码
sudo 命令则是使用其他用户身份来执行命令,运行命令的时候会检查/etc/sudoers,判断用户是否有执行sudo的权限,有执行权限后,需要输入用户的密码,输入正确后则会执行sudo后面的命令。
用户配置文件
查看用户配置文件
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
(省略)
kuan:x:500:500:CentOS 6_1:/home/kuan:/bin/bash
kuan1:x:501:501::/home/kuan1:/bin/bash
这里用“:”分割成七个字段
第一列:用户名
第二列:密码(现已不用,现密码放在/etc/shadow中)注:如果把当前位置X删除,则用户登录就不需要密码验证
第三列:UID 用来区分不同用户的整数
第四列:GID 用来区分不同用户组的整数
第五列:说明 类似"注释"
第六列:家目录 用户登录后,所在的目录就是家目录
第七列:登录后shell 用户登录后所使用的shell
用户密码文件
[root@localhost ~]# cat /etc/shadow
root:$1$diF26fa2$FKeyiGQIE3X.KS0BOsvmu.:18073:0:99999:7:::
bin:*:15175:0:99999:7:::
daemon:*:15175:0:99999:7:::
dbus:!!:18073::::::
usbmuxd:!!:18073::::::
tcpdump:!!:18073::::::
kuan:$1$diF26fa2$FKeyiGQIE3X.KS0BOsvmu.:18073:0:99999:7:::
kuan1:$1$PlZe3f.Y$Ndafyfhjp7eZ54ZUYKu0.0:18348:0:99999:7:::
这里用“:”分割成九个字段
第一列:用户名
第二列:密码(加密后的密码)
第三列:密码最近修改日
第四列:密码不可修改天数(修改密码后,几天内不能修改密码,如果是0,随时可以修改)
第五列:密码重新修改的天数
第六列:密码失效前提前警告天数
第七列:密码失效宽限天数
第八列:账号失效日期
第九列:保留字段
用户组文件
[root@localhost ~]# cat /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
这里用“:”分割成四个字段
第一列:用户组名称
第二列:用户组是否需要密码验证
第三列:用户组的GID(和/etc/passwd 里面的GID相对应)
第四列:所属用户组的用户
文件和目录权限
查看所有文件
[root@localhost ~]# ls -al /
total 110
dr-xr-xr-x. 23 root root 4096 Mar 31 18:44 .
dr-xr-xr-x. 23 root root 4096 Mar 31 18:44 ..
-rw-r--r--. 1 root root 0 Mar 31 18:44 .autofsck
dr-xr-xr-x. 2 root root 4096 Mar 12 19:40 bin
dr-xr-xr-x. 5 root root 1024 Mar 12 18:13 boot
drwxr-xr-x. 10 root root 4096 Nov 26 23:19 cgroup
drwxr-xr-x. 19 root root 3800 Mar 31 18:44 dev
drwxr-xr-x. 107 root root 12288 Mar 31 21:02 etc
drwxr-xr-x. 5 root root 4096 Mar 30 21:32 home
dr-xr-xr-x. 10 root root 4096 Nov 26 22:33 lib
dr-xr-xr-x. 9 root root 12288 Mar 12 19:40 lib64
drwx------. 2 root root 16384 Jun 27 2019 lost+found
drwxr-xr-x. 2 root root 4096 Sep 23 2011 media
drwxr-xr-x. 3 root root 4096 Sep 23 2011 mnt
drwxr-xr-x. 2 root root 4096 Sep 23 2011 opt
dr-xr-xr-x. 164 root root 0 Mar 31 18:44 proc
dr-xr-x---. 3 root root 4096 Mar 31 18:49 root
dr-xr-xr-x. 2 root root 12288 Mar 12 19:40 sbin
drwxr-xr-x. 7 root root 0 Mar 31 18:44 selinux
drwxr-xr-x. 2 root root 4096 Sep 23 2011 srv
drwxr-xr-x 13 root root 0 Mar 31 18:44 sys
drwxrwxrwt. 43 root root 4096 Mar 31 19:47 tmp
drwxr-xr-x. 13 root root 4096 Nov 26 22:32 usr
drwxr-xr-x. 21 root root 4096 Nov 26 22:39 var
ls -l 会显示当前目录下文件的详细信息,每个文件有7列输出。
第一列:显示文件的类别和权限,第一个字符表明了文件的类型
d 目录
- 普通文件
l 链接文件
b 块文件
c 字符文件
s socket文件
f 管道文件
接下来是每三个字符为一组,分为三组,第一组代表该文件所有者的权限(user),第二组代表所有组的权限(group),第三组代表其他用户的权限(others)。每组都有rwx组成,r代表读权限,w代表写权限,x代表执行权限。数字权限表示,r=4,w=2,x=1。
第二列:代表‘连接数’,除目录文件外,其他文件的连接数都是1,目录文件的连接数是该目录下包含其他目录总个数+2,假如A目录里面包含B和C目录,则A目录的连接数为4。
第三列:代表该文件的所有人。
第四列:代表该文件的所有组。
第五列:代表文件的大小(默认显示的是字节大小,显示具体大小单位需要添加‘h’参数)
第六列:代表文件的创建或修改时间
第七列:代表文件名
修改文件权限
chmod 修改文件、目录权限
chown 更改属主、属组
chgrp 单独修改属组
新建个文件,文件属主和属组就是当前用户
[root@localhost ~]# mkdir demo
[root@localhost ~]# ls -ld demo
drwxr-xr-x. 2 root root 4096 Apr 1 00:35 demo
修改文件所属的属主
chown 用户名 文件名
[root@localhost ~]# chown kuan demo
[root@localhost ~]# ls -ld demo
drwxr-xr-x. 2 kuan root 4096 Apr 1 00:35 demo
修改所属组
chown :属组 文件名
[root@localhost ~]# chown :kuan demo
[root@localhost ~]# ls -ld demo
drwxr-xr-x. 2 kuan kuan 4096 Apr 1 00:35 demo
单独修改属组
chgrp 属组 文件名
[root@localhost ~]# chgrp kuan1 demo
[root@localhost ~]# ls -ld demo
drwxr-xr-x. 2 kuan kuan1 4096 Apr 1 00:35 demo
修改文件权限
一 、字符修改。
每个文件都定义了文件拥有者(user),拥有组(group),其他用户(others)的权限,可以用字母u、g、o来代表拥有者、拥有组、其他用户,增加权限用+号,删除权限用-号,详细权限用=号。
新建文件修改文件默认的权限,为拥有者心中可执行(x)权限。
[root@localhost demo]# touch filedemo
[root@localhost demo]# ls -ld filedemo
-rw-r--r--. 1 root root 0 Apr 1 00:48 filedemo
[root@localhost demo]# chmod u+x filedemo
[root@localhost demo]# ls -ld filedemo
-rwxr--r--. 1 root root 0 Apr 1 00:48 filedemo
修改属组可写(r)权限
[root@localhost demo]# chmod g-r filedemo
[root@localhost demo]# ls -ld filedemo
-rwx---r--. 1 root root 0 Apr 1 00:48 filedemo
直接设置其他用户为可读(w)权限
[root@localhost demo]# chmod o=w filedemo
[root@localhost demo]# ls -ld filedemo
-rwx----w-. 1 root root 0 Apr 1 00:48 filedemo
修改拥有者、拥有组、其他用户均有可写权限
[root@localhost demo]# chmod a+r filedemo
[root@localhost demo]# ls -ld filedemo
-rwxr--rw-. 1 root root 0 Apr 1 00:48 filedemo
二、数字修改
数字权限表示,r=4,w=2,x=1。
修改拥有者有全部权限,拥有组和其他用户有读和33的权限。
[root@localhost demo]# chmod 733 filedemo
[root@localhost demo]# ls -ld filedemo
-rwx-wx-wx. 1 root root 0 Apr 1 00:48 filedemo
默认权限
在Linux下,定义目录创建的默认权限的值是“umask遮罩777后的权限”,定义文件创建的默认权限是“umask遮罩666后的权限”。
再/etc/profile中,设置了不同用户的遮罩值
[root@localhost demo]# cat /etc/profile
(省略)
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
从上面可以看到UID大于199的用户遮罩值设置成002,否则为022,所以root用户的就为022,然后根据遮罩值计算权限。
777用字符串表示为:rwxrwxrwx,如果遮罩值是022,用字符串表示为:----w--w-,那么前者第五位和第八位的w被遮罩掉,权限变为rwxr-xr-x,用数字表示就是755。如果遮罩值是002,用字符串表示为:-------w-,那么第八位的w被遮罩掉,权限变为rwxrwxr-x,用数字表示就是775。
666用字符串表示为:rw-rw-rw-,如果遮罩值是022,用字符串表示为:----w--w-,那么前者第五位和第八位的w被遮罩掉,权限变为rw-r--r--,用数字表示就是644。如果遮罩值是002,用字符串表示为:-------w-,那么第八位的w被遮罩掉,权限变为rw-rw-r--,用数字表示就是664
0条评论