一、Linux用户管理
Linux是一个可以实现多用户登录的操作系统,多用户之间共享一些主机资源,但也分别拥有自己的用户空间,用于存放各自的文件。实际上,不同用户的文件都是存放在同一物理磁盘上甚至是同一逻辑分区或者目录里的,由于Linux的用户管理和权限机制,不同用户不可以轻易地查看、修改彼此的文件。
下面主要讨论Linux下账户管理的一些基础知识:
1.查看用户
-
[who]
打开终端执行如下命令:
who am i
或whoami
等执行结果如下:
执行who am i
输出的第一列表示当前伪终端用户的用户名(注意与whoami
的区别);第二列pts/5中的pts表示伪终端,所谓的伪是相对于/dev/tty设备而言的,/dev/tty0~/dev/tty7是“真终端”。在图形用户界面使用/dev/tty7时每打开一个终端都会产生一个伪终端,pts/5后面的数字表示打开的终端序号;第三列则表示当前伪终端的启动时间。
-
who
命令其他常用参数:
参数 | 说明 |
---|---|
-a | 打印能打印的全部 |
-d | 打印死掉的进程 |
-m | 通am i ,mom likes
|
-q | 打印当前登录的用户数 |
-u | 打印当前所有登录用户登录信息 |
-r | 打印运行等级 |
2.创建用户
在Linux系统中,只有root账户才具有新建/删除用户的权利。
root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,用 Windows 的方法理解也就是将自己的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。
我们一般登录系统时,都是以普通账户的身份登录的,要创建用户需要root权限,这里需要结合sudo命令完成。使用sudo命令需要两个前提:
1.知道当前登录用户的密码
2.当前用户必须在sudo用户组
-
[su,su-和sudo]
su <user>可以切换到用户user,执行时需要输入目标用户密码;sudo <cmd>可以以特权级别运行cmd命令,需要的当前用户属于sudo组,且需要输入当前用户密码;su -<user>命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。
创建用户使用adduser,注意useradd 与adduser的区别
sudo adduser eldon
退出当前用户跟退出终端一样可以使用exit命令或者使用Ctrl+d快捷键。
3.用户组
Linux里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。同时,一个用户是可以属于多个用户组的,正如一个人即属于家庭也属于学校或者公司一样。
查看用户所在用户组
- 方法1、使用groups命令
groups shiyanlou
其中冒号前面表示用户,后面表示用户所属的用户组。每次创建用户如果不指定用户组的话,默认会创建一个与用户名相同的用户组。默认情况下,sudo用户组里的用户可以使用sudo命令获得root权限。
截图中用户能够使用sudo命令,但是没有显示该用户在sudo用户组中,通过/etc/sudoers.d/中文件定义,给用户赋予sudo权限。
- 方法2、查看/etc/group文件
cat /etc/group | sort
-
/etc/group文件格式说明:
/etc/group的内容包括用户组(Group)、用户组口令、GID及该用户组包含的用户,每个用户组一条记录。格式如下:group_name:password:GID:user_list
上面看到的password字段为一个X,并不是说明密码就是X,只是表示密码不可见而已。
用户加入用户组
默认情况下新创建的用户是不具有root权限的,也不在sudo用户组,可以手动将其加入sudo用户组从而获取root权限。
使用usermod
命令可以为用户添加用户组,同样使用该命令你必须有root权限,可以直接使用root用户为其他用户添加用户组,或者让已经在sudo用户组中的用户使用sudo命令执行该命令。
4.删除用户
sudo deluser eldon --remove-home
二、Linux文件权限
1.查看文件权限
ls -l
-
输出结果的含义:
-
文件类型和规则详解:
1.文件类型
Linux中一切皆文件。所以文件类型有很多种,包括设备文件(/dev目录下有各种设备文件)、网络套接字文件(socket)、管道文件(pipe)和软链接文件、链接文件等。
2.文件权限
- 读权限:表示可以使用cat <filename>之类的命令来读取某个文件的内容;
- 执行权限:通常指可以运行的二进制程序文件或者脚本文件,一个目录要同时具有读权限和执行权限才可以打开,要有写权限才允许在其中创建其他文件。
- 所有者权限:
- 所有用户组权限:指所在的用户组中所有其他用户对于该文件的权限;
3.链接数
待续....
4.文件大小
以inode节点大小为单位表示文件大小;
5.常用命令
命令 | 用法 |
---|---|
ls -A | 显示除了'.'(当前目录)、'..'(上级目录)之外的所有包含的隐藏文件 |
ls -Al | 显示除了'.'(当前目录)、'..'(上级目录)之外的所有包含的隐藏文件的详细属性 |
ls -dl <目录名> | 显示目录详细信息(而不是目录中文件) |
ls -AsSh | 显示所有文件大小,s为显示文件大小,S为按文件大小排序 |
2.变更文件所有者
使用chown命令实现变更文件所有者
3.修改文件权限
如果有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限进行修改。修改文件权限的方式有两种:
-
方式一、二进制数字表示
每个文件有三组权限:拥有者、所属用户组、其他用户。每组权限都对应一个“rwx”,也就是一个7,所以如果我们要将文件的权限改为只有自己可用,可以做如下修改:
chmod 700 eldon.log
- 方式二、加减赋值操作
同样为了完成修改文件权限为仅自己可用,可以做如下操作:
chmod go-rw eldon.log
'g''o'还有'u'分别表示group、others、user,'+'、'-'分别表示增加和去掉相应的权限。