分享

linux基础命令介绍一:用户与文件

 我本无我O 2016-12-28

不 断 前 行,方 可 不 被 淘 汰


linux系统是一个多用户多任务的分时操作系统,但系统并不能识别,它通过账号来区别每个用户。每个linux系统在安装的过程中都要为root账号设置密码,这个root即为系统的第一个账号。每一个用这个账号登录系统的用户都是超级管理员,他们对此系统有绝对的控制权。通过向系统管理员进行申请,还可以为系统创建普通账号。每个用普通账号登录系统的用户,对系统都只有部分控制权。


我们知道计算机中的数据是以二进制0、1的形式存储在硬件之上的。在linux中,为了管理的方便,系统将这些数据组织成目录和文件,并以一个树形的结构呈现给用户。如下图所示:



其中处于顶端的/是根目录,linux下所有的文件均起始于根目录。另外很重要的一点,linux中不仅普通文档是文件,目录是文件,甚至设备、进程等等都被抽象成文件。这样做的目的是为了简化操作和方便管理。


于是,本文开始所说的控制权,即为用户对系统中文件的控制权。通常所说的某某文件的权限,是针对特定用户而言的。


另外,每一个登录的用户,在任意的时刻均处于某个目录之内,称为当前目录(current directory)。用户在刚刚登录的时候所处的目录是家目录,root用户的家目录是/root,普通用户的家目录通常为/home/user_name。在这里第一个字符/即是上文所说的根目录,roothome是根目录下的两个子目录名,要注意home后面的/是目录分隔符,而不是目录名的一部分,user_name是普通用户家目录的名字。
下面我们来看具体命令:

1、pwd 打印当前目录

pwd [OPTION]...

例如:

[root@centos7 ~]# pwd
/root

2、cd 切换目录

cd [DIR]

例如切换到根目录然后打印当前目录(注意命令提示符的变化):

[root@centos7 ~]# cd /
[root@centos7 /]# pwd
/

这两个命令非常简单,简单到它们的选项都不常用,其中cd命令后面跟一个路径名。这个路径名可以是“绝对的”也可以是“相对的”。绝对的表示成以/为开头的路径名,如命令cd /usr/local/src中的路径名;相对的表示成相对于当前目录的路径名,若将linux中目录的包含与被包含关系比喻成父子关系的话,符号..代表的是父目录,符号.代表当前目录。
例:
假设当前所处目录为/usr/local/src,那么切换到根目录可以用两种方法:cd /cd ../../..

[root@centos7 src]# cd ../../..
[root@centos7 /]# pwd
/

然后再切换回root的家目录: cd rootcd ./root

[root@centos7 /]# cd ./
root
[root@centos7 ~]# pwd
/root

另外如果cd后面任何参数都没有的时候,执行的效果是切换回家目录:

[root@centos7 /]# cd
[root@centos7 ~]# pwd
/root

3、ls 列出目录内容

ls [OPTION]... [FILE]...

当命令ls后不跟任何参数的时候显示当前目录的内容

[root@centos7 ~]# lsanaconda-ks.cfg  install.log  install.log.syslog

上面的例子显示了/root目录下的三个文件anaconda-ks.cfganaconda-ks.cfganaconda-ks.cfg
选项-l可以使ls命令的结果以长格式显示:

[root@centos7 ~]# ls -l
total 84
-rw------- 1 root root  1666 Jan 14  2016 anaconda-ks.cfg-rw-r--r-- 1 root root 55745 Jan 14  2016 install.log
-rw-r--r-- 1 root root  5039 Jan 14  2016 install.log.syslog

显示结果的意思后述。

4、mkdir 创建目录

mkdir [OPTION]... DIRECTORY...

通常的使用方法是命令名之后直接跟目录名(可以多个),这里说一下linux文件命名的规则:linux允许文件名使用除字符/之外的所有字符,文件名的最大字符数为255(中文字符为127),linux不鼓励在文件名中出现特殊字符(容易引起混淆),文件名对大小写敏感。文件或目录数量限制与所使用的文件系统有关。
如当前目录下创建temp目录并用ls查看:

[root@centos7 ~]# mkdir temp
[root@centos7 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  temp

选项-p可以递归地创建子目录,如进入temp并创建目录dir1和dir2,dir1的子目录test:

[root@centos7 ~]# cd temp
[root@centos7 temp]# mkdir -p dir1/test dir2
[root@centos7 temp]# ls
dir1  dir2[root@centos7 temp]# cd dir1
[root@centos7 dir1]# lstest

5、touch “创建文件”

touch [OPTION]... FILE...

其实此命令作用是修改文件时间,当指定的文件不存在时就会创建新文件。由于文件时间的更改可以通过许多其它途径,反而许多用户都误以为它就是创建文件的命令。如在temp目录下创建文件file1 在temp的子目录dir1下创建文件file2:

[root@centos7 temp]# touch file1 dir1/file2
[root@centos7 temp]# ls
dir1  dir2  file1[root@centos7 temp]# cd dir1
[root@centos7 dir1]# lsfile2  test

6、useradd 添加账号

useradd [options] name

如创建一个名叫learner的账号:

[root@centos7 dir1]# useradd learner

useradd命令默认在创建用户账号的同时也会创建用户的家目录,同时更新系统中与用户相关的配置文件(linux中有许多配置文件,它们的作用是为软件运行设置环境信息、参数等,它们通常是纯文本的格式,方便用户变更其内容以改变软件运行环境。在linux中,大多数配置文件都处于目录/etc内,如与用户管理相关的配置文件:/etc/passwd,/etc/group,/etc/shadow,/etc/gshadow等)。
让我们进入新创建的用户家目录并用ls命令查看目录内容:

[root@centos7 dir1]# cd /home/learner
[root@centos7 learner]# ls
[root@centos7 learner]#

终端上并没有打印出任何信息,试试ls的-a选项:

[root@centos7 learner]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc

选项-a作用是显示目录下所有文件,包括当前目录.和父目录..,linux中以.开头的文件是隐藏文件。在这里的三个隐藏文件是用户learner登录系统时所要用到的配置文件。

7、passwd 添加或更改账号口令

passwd [OPTION]... [NAME]

注意通过命令useradd新添加的账号并不能马上进行登录,还必须为账号添加口令为新用户learner添加口令:

[root@centos7 ~]# passwd learner
Changing password for user learner.New UNIX password: xxxxxx                       #此处的xxxxxx并不在屏幕上显示
BAD PASSWORD: it is too simplistic/systematic   #此处可能会给出密码太简单的警告
Retype new UNIX password: xxxxxx                #重复输入,此处的xxxxxx不在屏幕上显示
passwd: all authentication tokens updated successfully.

当passwd命令后没有用户名直接执行时,它的作用是更改当前账号的口令。

8、cat 查看文件内容

cat [OPTION]... [FILE]...

如查看保存系统账号的配置文件/etc/passwd

[root@centos7 ~]# 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
....
learner:x:1000:1000::/home/learner:/bin/bash

这里节选了部分输出,我们看到新创建的账号learner的信息在文件最后一行。文件中每一行都被:分割为7列,拿第一行举例说明每一列所表示的含义:

1) root表示账号名。
2) x是口令,在一些系统中,真正的口令加密保存在/etc/shadow里,这里保留x或*。
3) 0是用户ID。
4) 0是用户组ID,对应着/etc/group文件中的一条记录。
5) root是描述性信息。
6) /root是用户家目录。
7) /bin/bash是用户的登录shell,每一个登录的用户,系统都要启动一个shell程序以供用户使用。

对应于新创建的用户learner来说,它的用户ID是1000,通常用户ID(UID)与用户名是一一对应的。root的UID是0。用户组ID(GID)如果在创建用户的时候没有被指定,那么系统会生成一个和UID号相同的GID,并把新用户放到这个组里面。用户组的意义是为了给权限控制增加灵活性,比如把不同的用户归到一个组之内,然后使文件针对这个组设置权限。

系统中还有一些登录shell为/sbin/nologin的用户,这些用户是“伪用户”,它们是不能登录的,它们的存在主要是为了方便管理,满足相应的系统进程对文件属主的要求。


长按关注——Reboot

戳原文,更有料!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多