Linux学习笔记(2)用户管理,文件操作,权限管理

用户管理

who 命令

命令 功能
-a 打印能打印的全部
-d 打印死掉的进程
-m 同am i,mom likes
-q 打印当前登陆用户数及用户名
-u 打印当前登录用户登录信息
-r 打印运行等级

查看当前用户信息:

1
$ who am i

创建用户

创建用户需要root权限,这里就需要用到sudo这个命令了,不过使用这个命令有两个大前提:一是你要知道当前登录用户的密码,二是当前用户必须在sudo用户组

su,su - 与 sudo

命令 功能
su [user] 可以切换到用户user,执行时需要输入目标用户的密码。
su - [user] 也是切换用户,同时环境变量也会跟着改变成目标的环境变量。
sudo [cmd] 可以以特权级别运行cmd命令,需要当前用户属于sudo组,且需要输入当前用户密码。

查看用户组:

方式1:

1
$ groups lijianan

可以看到冒号之前表示用户,冒号之后表示用户所在的组。如果新建用户时不指定用户组的话,默认会自动创建一个与用户名相同的用户组。

这里如果当前用户组不是sudo用户组,却也可以执行sudo命令,可以查看一下/etc/sudoers.d/目录下是否有lijianan文件,如果有,则给lijianan用户赋予了sudo权限。

方式2:

查看/etc/group文件

1
$ cat /etc/group | sort

/etc/group 的内容包括用户组(Group)、用户组口令、GID及该用户组所包含的用户(User),每个用户组一条记录。
格式如下:

group_name:password:GID:user_list

将其它用户加入sudo用户组:

默认情况下新创建的用户是不具有root权限的,也不在sudo用户组,可以让其加入sudo用户组从而获取root权限。

1
2
$ su -l lilei
$ sudo ls

会提示lilei不在sudoers文件中,意思就是lilei不在sudo用户组中,至于sudoers文件(/etc/sudoers)你现在最好不要动它,操作不慎会导致比较麻烦的后果。

使用usermod命令可以为用户添加用户组,同样使用该命令你必须有root权限,你可以直接使用root用户为其它用户添加用户组,或者用其他已经在sudo用户组的用户使用sudo命令获取权限来执行该命令

这里我使用lijianan用户执行sudo命令将lilei添加到sudo用户组,让它也可以使用sudo命令获得root权限

1
2
3
4
$ su lijianan
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei

然后你再切换回lilei用户,现在就可以使用sudo获取root权限了。

删除用户

删除用户是很简单的事:

1
$ sudo deluser lilei --remove-home

文件操作

关于文件需要知道的事:

  • .代表当前目录
  • ..代表父目录
  • 目录也是一个文件
  • 当前目录下的 . 文件就是当前目录 .. 文件就是父目录。
  • 不过在linux下.开头的文件是隐藏文件

关于文件操作,需要记住的命令:

命令 功能
cd 进入目录
pwd 获取当前路径
touch 新建空白文件/更新文件时间戳
mkdir 新建目录
mkdir -p father/son/grandson 创建多级目录
cp test father/son/grandson 复制文件到指定目录
cp -r father family 复制目录到指定目录
rm test 删除文件
rm -f test 删除一个文件(忽略提示,比如删除一个只有只读权限的文件)
rm -r family 删除一个目录1
mv file1 Documents 移动文件到指定目录
mv file1 file2 重命名文件

关于文件查看,需要记住的命令

命令 功能
cat file1 查看文件
tac file1 倒叙查看文件
nl file1 查看文件并显示行号
more file1 分页查看文件,Enter向下滚动一行,Space向下滚动一屏,h帮助,q退出
head file1 查看文件前10行
tail -n 1 file1 查看文件第一行
tail 还可以根据参数-f 实现不停地读取某个文件内容并且显示,可以实现日志监控功能。
file /bin/ls 查看文件类型

权限管理

文件的属性

查看文件权限,使用较长的格式列出文件:

1
$ ls -l

从左往右依次列出了 文件类型权限链接数**所有者所有用户组文件大小最后修改时间文件名

首先来说说文件类型和权限:

表示文件类型:

字符 含义
d 目录
l 软链接,类似windows的快捷方式
b 块设备
c 字符设备
s socket
p 管道
- 普通文件

表示权限:

字符 含义
r 表示允许读权限
w 表示允许写权限
x 表示允许执行权限

表示文件类型和权限的字段,第一位代表文件类型,2到4位表示拥有者权限,5到7位表示所属用户组权限,8到10位表示其他用户权限。

关于文件权限

一个目录要同时具有读权限和执行权限才可以打开,而一个目录要有写权限才允许在其中创建其他文件,这是因为目录文件实际保存着该目录里面的文件等列表等信息。

链接数

链接到该文件所在的inode结点的文件名数目

ls常用命令

显示隐藏文件:

1
$ ls -A

查看某一个目录的完整属性,而不是现实目录里面的文件属性

1
$ ls -dl <目录名>

现实所有文件大小,并以普通人类能看懂的方式显示:

1
$ ls -AsSh

其中s为显示文件大小,S为按文件大小排序。

改变文件的所有者

1
$ sudo chown <用户名> <文件名>

修改文件权限

方式1: 二进制数字表示

2^0 (1)代表可执行权限,2^1 (2)代表可写权限, 2^2 (4)代表可读权限。

1
$ chmod 700 <文件名>

方式2: 加减赋值操作

'g','o'还有'u',分别表示groupothersuser,'+''-'就分别表示增加和去掉相应的权限。

1
$ chmod go-rw <文件名>