溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux用戶與文件基礎命令整理

發(fā)布時間:2021-08-20 09:23:22 來源:億速云 閱讀:133 作者:chen 欄目:開發(fā)技術

這篇文章主要介紹“l(fā)inux用戶與文件基礎命令整理”,在日常操作中,相信很多人在linux用戶與文件基礎命令整理問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”linux用戶與文件基礎命令整理”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

linux系統(tǒng)是一個多用戶多任務的分時操作系統(tǒng),但系統(tǒng)并不能識別人,它通過賬號來區(qū)別每個用戶。每個linux系統(tǒng)在安裝的過程中都要為root賬號設置密碼,這個root即為系統(tǒng)的第一個賬號。每一個用這個賬號登錄系統(tǒng)的用戶都是超級管理員,他們對此系統(tǒng)有絕對的控制權。通過向系統(tǒng)管理員進行申請,還可以為系統(tǒng)創(chuàng)建普通賬號。每個用普通賬號登錄系統(tǒng)的用戶,對系統(tǒng)都只有部分控制權。

我們知道計算機中的數(shù)據是以二進制0、1的形式存儲在硬件之上的。在linux中,為了管理的方便,系統(tǒng)將這些數(shù)據組織成目錄和文件,并以一個樹形的結構呈現(xiàn)給用戶。如下圖所示:

linux用戶與文件基礎命令整理

其中處于頂端的/是根目錄,linux下所有的文件均起始于根目錄。另外很重要的一點,linux中不僅普通文檔是文件,目錄是文件,甚至設備、進程等等都被抽象成文件。這樣做的目的是為了簡化操作和方便管理。

于是,本文開始所說的控制權,即為用戶對系統(tǒng)中文件的控制權。通常所說的某某文件的權限,是針對特定用戶而言的。
另外,每一個登錄的用戶,在任意的時刻均處于某個目錄之內,稱為當前目錄(current directory)。用戶在剛剛登錄的時候所處的目錄是家目錄,root用戶的家目錄是/root,普通用戶的家目錄通常為/home/user_name。在這里第一個字符/即是上文所說的根目錄,root和home是根目錄下的兩個子目錄名,要注意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 root和cd ./root

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

另外如果cd后面任何參數(shù)都沒有的時候,執(zhí)行的效果是切換回家目錄:

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

3、ls 列出目錄內容

ls [OPTION]... [FILE]...
當命令ls后不跟任何參數(shù)的時候顯示當前目錄的內容

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

上面的例子顯示了/root目錄下的三個文件anaconda-ks.cfg、anaconda-ks.cfg、anaconda-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 創(chuàng)建目錄

mkdir [OPTION]... DIRECTORY...
通常的使用方法是命令名之后直接跟目錄名(可以多個),這里說一下linux文件命名的規(guī)則:linux允許文件名使用除字符/之外的所有字符,文件名的最大字符數(shù)為255(中文字符為127),linux不鼓勵在文件名中出現(xiàn)特殊字符(容易引起混淆),文件名對大小寫敏感。文件或目錄數(shù)量限制與所使用的文件系統(tǒng)有關。
如當前目錄下創(chuàng)建temp目錄并用ls查看:

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

選項-p可以遞歸地創(chuàng)建子目錄,如進入temp并創(chuàng)建目錄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]# ls
test

5、touch “創(chuàng)建文件”

touch [OPTION]... FILE...
其實此命令作用是修改文件時間,當指定的文件不存在時就會創(chuàng)建新文件。由于文件時間的更改可以通過許多其它途徑,反而許多用戶都誤以為它就是創(chuàng)建文件的命令。如在temp目錄下創(chuàng)建文件file1 在temp的子目錄dir1下創(chuàng)建文件file2:

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

6、useradd 添加賬號

useradd [options] name
如創(chuàng)建一個名叫l(wèi)earner的賬號:

[root@centos7 dir1]# useradd learner
useradd命令默認在創(chuàng)建用戶賬號的同時也會創(chuàng)建用戶的家目錄,同時更新系統(tǒng)中與用戶相關的配置文件(linux中有許多配置文件,它們的作用是為軟件運行設置環(huán)境信息、參數(shù)等,它們通常是純文本的格式,方便用戶變更其內容以改變軟件運行環(huán)境。在linux中,大多數(shù)配置文件都處于目錄/etc內,如與用戶管理相關的配置文件:/etc/passwd,/etc/group,/etc/shadow,/etc/gshadow等)。
讓我們進入新創(chuàng)建的用戶家目錄并用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登錄系統(tǒng)時所要用到的配置文件。

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命令后沒有用戶名直接執(zhí)行時,它的作用是更改當前賬號的口令。

8、cat 查看文件內容

cat [OPTION]... [FILE]...
如查看保存系統(tǒng)賬號的配置文件/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

這里節(jié)選了部分輸出,我們看到新創(chuàng)建的賬號learner的信息在文件最后一行。文件中每一行都被:分割為7列,拿第一行舉例說明每一列所表示的含義:

1) root表示賬號名。
2) x是口令,在一些系統(tǒng)中,真正的口令加密保存在/etc/shadow里,這里保留x或*。
3) 0是用戶ID。
4) 0是用戶組ID,對應著/etc/group文件中的一條記錄。
5) root是描述性信息。
6) /root是用戶家目錄。
7) /bin/bash是用戶的登錄shell,每一個登錄的用戶,系統(tǒng)都要啟動一個shell程序以供用戶使用。
對應于新創(chuàng)建的用戶learner來說,它的用戶ID是1000,通常用戶ID(UID)與用戶名是一一對應的。root的UID是0。用戶組ID(GID)如果在創(chuàng)建用戶的時候沒有被指定,那么系統(tǒng)會生成一個和UID號相同的GID,并把新用戶放到這個組里面。用戶組的意義是為了給權限控制增加靈活性,比如把不同的用戶歸到一個組之內,然后使文件針對這個組設置權限。
系統(tǒng)中還有一些登錄shell為/sbin/nologin的用戶,這些用戶是“偽用戶”,它們是不能登錄的,它們的存在主要是為了方便管理,滿足相應的系統(tǒng)進程對文件屬主的要求。

9、head tail more less 查看內容
這四個命令使用和cat類似,只是顯示方式的區(qū)別。
head從文件的第一行開始顯示,默認顯示10行,使用選項-n可以指定顯示行數(shù):

[root@centos7 ~]# head -n 3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

顯示文件/etc/group的前三行。
/etc/group中每行被:分隔成4列:

1) 組名
2) 口令,linux中一般無組口令,此處一般為x或*
3) 組ID(GID)
4) 組內成員列表,多個用逗號分隔。如果字段為空表示用戶組為GID的用戶名。

tail默認輸出文件的倒數(shù)10行內容,也可以用選項-n指定行數(shù):

[root@centos7 temp]# tail -n 4 /etc/shadow
postfix:!!:16814::::::
sshd:!!:16814::::::
tcpdump:!!:16994::::::
learner:$6$.U5pPYhu$h9TnYR9L4dbJY6b6VgnAQBG5qEg6s5fyJpxZVrAipHeeFhHAiHk6gjWa/xOfvWx.CzM2fvk685OEUc.ZdBYiC0:17095:0:99999:7:::

顯示文件/etc/shadow的后4行。
/etc/shadow中保存的是賬號密碼等信息,每行被:分隔成9列:

1) 用戶名
2) 加密的密碼
3) 上次修改口令的時間;這個時間是從1970年01月01日算起到最近一次修改口令的時間間隔(天數(shù))。
4) 兩次修改口令間隔最少的天數(shù);如果這個字段的值為空,帳號永久可用;
5) 兩次修改口令間隔最多的天數(shù);如果這個字段的值為空,帳號永久可用;
6) 提前多少天警告用戶口令將過期;如果這個字段的值為空,帳號永久可用;
7) 在口令過期之后多少天禁用此用戶;如果這個字段的值為空,帳號永久可用;
8) 用戶過期日期;此字段指定了用戶作廢的天數(shù)(從1970年的1月1日開始的天數(shù)),如果這個字段的值為空,帳號永久可用;
9) 保留字段,目前為空,以備將來發(fā)展之用;
/etc/shadow中的記錄行與/etc/passwd中的一一對應,它由pwconv命令根據/etc/passwd中的數(shù)據自動產生。
另外命令tail還有個常用選項-f,作用是隨著文件內容的增加而輸出,默認輸出間隔為1s。
more和less兩個命令的作用都是分頁顯示文件內容,區(qū)別是more不允許往回翻,只能用enter鍵和空格鍵分別顯示下一行和下一頁(類似于man命令),less允許往回翻,向上箭頭和pageup按鍵也是可用的。讀者可自行實驗這兩個命令,這里不再舉例。

10、groupadd創(chuàng)建用戶組

groupadd [OPTION] group
選項'-g'可以為新創(chuàng)建用戶組指定GID。如創(chuàng)建一個新用戶組group1并指定其GID為1005,然后再新創(chuàng)建一個用戶tom,使他的UID為1002,GID為1000,登錄shell為/bin/sh:

[root@centos7 ~]# groupadd -g 1005 group1
[root@centos7 ~]# useradd -u 1002 -g 1000 -s /bin/sh tom
[root@centos7 ~]# tail -n 1 /etc/passwd
tom:x:1002:1000::/home/tom:/bin/sh
[root@centos7 ~]# tail -n 1 /etc/group
group1:x:1005:

這里useradd命令的選項-u、-g和-s分別指定新用戶的uid、gid和登錄shell。

11、chmod 改變文件權限

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
在看此命令用法之前,我們先來解釋一下命令ls的選項-l的輸出:

[root@centos7 temp]# ls -l
總用量 0
drwxr-xr-x 3 root root 29 10月 21 20:34 dir1
drwxr-xr-x 2 root root 6 10月 21 20:33 dir2
-rw-r--r-- 1 root root 0 10月 21 20:34 file1

這部分輸出被分為7個部分:

1) -rw-r--r-- 10個字符中第一個字符-代表文件類型,linux中文件共有7種類型,分別表示如下:
    d:代表文件是一個目錄
    l:符號鏈接
    s:套接字文件
    b:塊設備文件
    c:字符設備文件
    p:命名管道文件
    -:普通文件,或者說除上述文件外的其他文件
剩下的9個字符每三個一組,表示這個文件的權限,linux中文件權限用二進制的000-111(一位八進制數(shù))來分別代表文件的權限,其中:
    r(read):讀權限(如果是文件表示讀取文件內容,如果是目錄表示瀏覽目錄)。二進制第一位置1即100,十進制為數(shù)字4。
    w(write):寫權限(對文件而言,具有新增、修改文件內容的權限,對目錄來說,具有刪除、移動目錄內文件的權限。)。二進制第二位置1即010,十進制為數(shù)字2。
    x(execute):執(zhí)行權(對文件而言,具有執(zhí)行文件的權限;對目錄來說具有進入該目錄的權限。)。二進制第三位置1即001,十進制為數(shù)字1。
    -(無權限):當沒有上述權限時。二進制表示為000。
這樣本例中最后一行文件file1權限:
前三個字符`rw-`表示文件的所有者(`owner`)對文件具有讀和寫的權限,十進制數(shù)字為4+2=6。
中間三個字符`r--`表示文件的所屬組(`group`)對文件具有讀權限,十進制數(shù)字為4。
最后三個字符`r--`表示系統(tǒng)中其他用戶(`others`)對文件具有讀權限,十進制數(shù)字為4。
這樣文件的權限可以用十進制數(shù)字`644`來表示。
對于目錄dir1來說:
前三個字符`rwx`表示目錄所有者(`owner`)對其具有讀、寫和執(zhí)行的權限,十進制表示為4+2+1=7。
中間三個字符`r-x`表示目錄的所屬組(`group`)對其具有讀和執(zhí)行的權限,十進制表示為4+1=5。
后三個字符`r-x`表示系統(tǒng)中其他用戶(`others`)對其具有讀和執(zhí)行的權限,十進制表示為4+1=5。
這個目錄權限用十進制表示即為`755`,注意文件和目錄相同權限之間的區(qū)別。
2) 權限后面的數(shù)字代表文件的硬鏈接數(shù)
3) root文件的所有者,有時表示為用戶的UID。
4) root文件的所屬組,有時表示為用戶組的GID。
5) 文件大小,以字節(jié)`Byte`為單位。
6) 10月 21 表示文件內容最近一次被修改的時間。
7) 最后一列為文件名。

如給文件file1的用戶組增加執(zhí)行權限:

[root@centos7 temp]# chmod g+x file1 
[root@centos7 temp]# ls -l file1 
-rw-r-xr-- 1 root root 0 10月 21 20:34 file1

這里g+x表示給group增加執(zhí)行x的權限。
如給文件file1的其他人減少讀權限:

[root@centos7 temp]# chmod o-r file1 
[root@centos7 temp]# ls -l file1
-rw-r-x--- 1 root root 0 10月 21 20:34 file1

這里o-r表示給others減少讀r權限。
如給文件file1的任何用戶都設置成rw-權限:

[root@centos7 temp]# chmod a=rw file1 
[root@centos7 temp]# ls -l file1 
-rw-rw-rw- 1 root root 0 10月 21 20:34 file1

這里a=rw表示給所有人all設置成rw-權限。
或者用十進制表示法直接指定文件的權限:

[root@centos7 temp]# chmod 644 file1 
[root@centos7 temp]# ls -l file1 
-rw-r--r-- 1 root root 0 10月 21 20:34 file1

如給目錄dir1和目錄內的所有目錄和文件權限都設置成777:

[root@centos7 temp]# chmod 777 -R dir1
[root@centos7 temp]# ls -l
總用量 0
drwxrwxrwx 3 root root 29 10月 21 20:34 dir1
drwxr-xr-x 2 root root 6 10月 21 20:33 dir2
-rw-r--r-- 1 root root 0 10月 21 20:34 file1

選項-R作用是遞歸地改變目標權限。
另外如目錄/tmp的權限:

[root@centos7 tmp]# ls -l /
....
drwxrwxrwt. 7 root root 88 10月 22 21:14 tmp
....

我們看到權限最后一位是t,這里代表粘滯位(sticky),它的作用是給目錄特殊的權限:使用戶不能刪除該目錄下不屬于此用戶的文件。
t后面的.表示該文件被selinux的安全上下文保護。
如可執(zhí)行文件/bin/su的權限:

[root@centos7 bin]# ls -l /bin/su
-rwsr-xr-x. 1 root root 32072 11月 20 2015 /bin/su

所有者的權限rws,這里的s代表suid,如果在用戶組位置的話代表sgid,作用是給文件特殊的權限:當用戶執(zhí)行此文件的時候,把他當成是文件的所有者來執(zhí)行。
這些特殊用途的的權限對普通用戶來說知道即可。

12、lsattr 列出隱藏權限

lsattr [option] [files...]
如:

[root@centos7 temp]# lsattr 
---------------- ./dir1
---------------- ./dir2
---------------- ./file1

列出了文件的隱藏權限位,共有16位(由于隱藏權限是文件系統(tǒng)相關的,不同的文件系統(tǒng)對于文件的隱藏權限的設定不一定相同)。

13、chattr 給文件設置隱藏權限

chattr [+-=] [mode] files...
如給文件file1增加隱藏權限a:

[root@centos7 temp]# chattr +a file1 
[root@centos7 temp]# lsattr file1 
-----a---------- file1

這里的a權限表示:這個文件將只能添加數(shù)據,而不能刪除也不能修改數(shù)據,只有root才能配置這個屬性。
給文件file2增加隱藏屬性i:

[root@centos7 temp]# chattr +i file2 
[root@centos7 temp]# lsattr file2 
----i----------- file2

這里的i權限表示:使文件不能被修改、刪除、改名、鏈接。只有root才能配置這個屬性。
這些隱藏權限都不常用,通常知道這兩個就可以了。

14、chown 改變文件的所有者和所屬組
chown [OPTION]... [OWNER][:[GROUP]] FILE...
如改變文件file1的所有者為learner:

[root@centos7 temp]# chown learner file1 
[root@centos7 temp]# ls -l file1
-rw-r--r-- 1 learner root 0 10月 21 20:34 file1

如遞歸地改變目錄dir1和其下面的所有目錄和文件,使它們的所有者和所屬組均為learner:

[root@centos7 temp]# chown -R learner:learner dir1
[root@centos7 temp]# ls -l
總用量 0
drwxrwxrwx 3 learner learner 29 10月 21 20:34 dir1
....

這里的用戶和用戶組可以用對應的uid和gid代替,冒號:也可以換為點號.。

15、userdel和groupdel 用于刪除用戶和用戶組。
userdel用于刪除用戶賬號,選項-r可以將用戶家目錄一并刪除。
groupdel用于刪除用戶組,注意不能移除現(xiàn)有用戶的主組。在移除此組之前,必須先移除此用戶。

16、id 打印用戶ID信息

id [OPTION]... [USER]
當不跟用戶名時顯示當前用戶信息:

[root@centos7 ~]# id
uid=0(root) gid=0(root) 組=0(root)

17、whoami,who,w 顯示登錄用戶信息
命令whoami打印出當前用戶名:

[root@centos7 ~]# whoami
root

命令who打印當前登錄用戶信息:

[root@centos7 ~]# who
root  tty1   2016-09-30 15:18
root  pts/0  2016-10-23 17:12 (192.168.78.140)
learner pts/1  2016-10-23 17:49 (192.168.78.140)
root  pts/2  2016-10-23 17:50 (192.168.78.140)

顯示信息中第一列為用戶名,第二列為登錄終端,第三列為登錄時間,最后為登錄ip地址。

命令w顯示信息與命令who類似,增加了一些系統(tǒng)信息:

[root@centos7 ~]# w
 17:56:59 up 23 days, 2:39, 4 users, load average: 0.00, 0.01, 0.05
USER  TTY  FROM    LOGIN@ IDLE JCPU PCPU WHAT
root  tty1      309月16 23days 0.01s 0.01s -bash
root  pts/0 192.168.78.140 17:12 7:31 0.01s 0.00s bash
learner pts/1 192.168.78.140 17:49 7:29 0.00s 0.00s -bash
root  pts/2 192.168.78.140 17:50 3.00s 0.00s 0.00s w

輸出的第一行顯示了系統(tǒng)運行時間,當前有多少用戶登錄,cpu的平均負載(以后文章中會有詳述)。余下的信息增加了空閑時間,cpu的使用時間以及運行的命令。

18、su 執(zhí)行用戶命令

su [options...] [-] [user [args...]]
兩種常用用法:
選項-c command用于使用目標賬號執(zhí)行-c指定的命令:

[root@centos7 ~]# su learner -c pwd
/root

例子中使用賬號learner執(zhí)行了命令pwd。當不使用選項-c時則為切換用戶:

[root@centos7 ~]# whoami
root
[root@centos7 ~]# su learner
[learner@centos7 root]$ whoami
learner

注意如果是從普通賬號切換至root或其他賬號時,需要輸入對應密碼。
帶與不帶選項-或-l或--login切換賬號時,會有環(huán)境變量上的區(qū)別。同時帶這些選項也會把當前目錄切換至目標賬號的家目錄。使用命令exit可以退出:

[root@centos7 ~]# pwd
/root
[root@centos7 ~]# su - learner
上一次登錄:日 10月 23 18:22:23 CST 2016pts/5 上
[learner@centos7 ~]$ pwd
/home/learner
[learner@centos7 ~]$ exit
登出
[root@centos7 ~]# whoami
root

19、sudo 作為另一個用戶來執(zhí)行命令

sudo [OPTION]... command
linux中為了安全,往往并不允許每個用戶都用root賬號登錄系統(tǒng),通常都會創(chuàng)建一些普通用戶。但有些命令是只有root用戶才能執(zhí)行的,為了更靈活的分配權限,使普通用戶也能執(zhí)行某些root命令,我們可以使用sudo來完成這一任務。
sudo通過維護一個特權到用戶名映射的數(shù)據庫將特權分配給不同的用戶,這些特權可由數(shù)據庫中所列的一些不同的命令來識別。為了獲得某一特權項,有資格的用戶只需簡單地在命令行輸入sudo與命令之后,按照提示再次輸入口令(用戶自己的口令,不是root用戶口令)。
使用-l選項可以查看當前用戶可以執(zhí)行的root命令有哪些:

[learner@centos7 ~]$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for learner: 
對不起,用戶 learner 不能在 centos7 上運行 sudo。

這里看到learner用戶并不能使用sudo。若要設置用戶使用sudo,需要編輯sudo的配置文件/etc/sudoers。該文件中以符號#開頭的都是注釋行,用來解釋或描述配置,并不起實際作用。
需要使用命令visudo來編輯修改/etc/sudoers(使用方法和使用vi/vim編輯器類似,后面有文章詳細描述)。
配置文件中的一個條目格式為:

user MACHINE=COMMANDS
如給用戶learner在所有地方(ALL)運行任何命令(ALL):

learner ALL=(ALL) ALL
之后查看:

[learner@centos7 ~]$ sudo -l
[sudo] password for learner:
匹配此主機上 learner 的默認條目:
....
....
用戶 learner 可以在該主機上運行以下命令:
    (ALL) ALL
當然并不會給普通用戶所有權限,這里只是舉例。通常的做法是給某個用戶某些特定的命令權限,如允許用戶tom在主機machine上執(zhí)行立即關機的命令,在/etc/sudoers中添加條目:

tom machine=/usr/sbin/shutdown -h now
注意machine是tom登錄系統(tǒng)所用的主機名,可以用ip地址代替,如使用命令w時FROM那一列所顯示的登錄ip。等號后面的命令名必須是命令的絕對路徑,-h now是命令/usr/sbin/shutdown的參數(shù),命令效果是立即關機。等號后面可以接多個命令,用逗號分隔它們。同時用戶名也可以是用戶組,用%組名代替。另外,用戶tom在執(zhí)行sudo命令時,sudo后面的命令寫法也必須和配置中的一致。

20、mv 移動文件或目錄

mv [OPTION]... SOURCE... DIRECTORY
mv命令的作用是把文件或目錄從源移動到目標目錄,路徑可以是絕對的也可以是相對的
如將文件file2從當前目錄移動到/root/temp/dir2中:

[root@centos7 temp]# ls
dir1 dir2 file1 file2
[root@centos7 temp]# mv file2 /root/temp/dir2/
[root@centos7 temp]# ls
dir1 dir2 file1
[root@centos7 temp]# ls dir2/
file2

命令mv還可以對文件進行改名,如將目錄dir2移動到dir1內并改名為dir3:

[root@centos7 temp]# ls
dir1 dir2 file1
[root@centos7 temp]# mv dir2 ./dir1/dir3
[root@centos7 temp]# ls
dir1 file1
[root@centos7 temp]# ls dir1/
dir3 file2 test

21、cp 復制文件或目錄
cp [OPTION]... SOURCE... DIRECTORY
如復制文件file1為file3:

[root@centos7 temp]# ls
dir1 file1
[root@centos7 temp]# cp file1 file3
[root@centos7 temp]# ls
dir1 file1 file3

復制目錄dir1內目錄dir3及其包含內容到當前目錄下,起名為dir2:

[root@centos7 temp]# cp -r dir1/dir3/ ./dir2
[root@centos7 temp]# ls
dir1 dir2 file1 file3

復制目錄的時候需要使用選項-r,當目標已存在時,會需要用戶確認是否覆蓋,輸入y或yes表示確認覆蓋,輸入n或no表示取消覆蓋:

[root@centos7 temp]# cp file1 file3
cp:是否覆蓋"file3"? y
[root@centos7 temp]# cp file1 file3 
cp:是否覆蓋"file3"? no

可以使用選項-f(force)來強制復制,不需要確認。

[root@centos7 temp]# cp -rf dir1/test ./dir2/
注意此處-rf,當有多個選項作用于一個命令時,在不引起混淆的情況下可以連寫。

22、rm 刪除文件

rm [OPTION]... FILE...
選項-r作用是遞歸地刪除目錄,-f的作用是強制刪除:

[root@centos7 temp]# ls
dir1 dir2 file1 file3
[root@centos7 temp]# rm -rf dir2/
[root@centos7 temp]# ls
dir1 file1 file3

23、whereis 查找系統(tǒng)命令

whereis [options] name...
命令作用是顯示命令名稱的絕對路徑和命令的手冊位置:

[root@centos7 test]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

24、du 估算文件占用空間大小

u [OPTION]... [FILE]...
如查看文件file1的大?。?/p>

[root@centos7 temp]# du file1 
4  file1

輸出的結果第一列表示所占空間大小(單位是KB)。第二列是是文件名。
可以使用選項-h用人類可讀(human readable)的方式顯示:

[root@centos7 temp]# du -h file1 
4.0K file1

當使用-s選項作用在目錄上時,只顯示總用量。不用時則顯示該目錄下的每個文件:

[root@centos7 temp]# du dir1
0  dir1/test
0  dir1/dir3
0  dir1
[root@centos7 temp]# du -sh dir1
0  dir1

到此,關于“l(fā)inux用戶與文件基礎命令整理”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI