useradd新建用戶和權限分配


場景:在搭建Ftp服務器時候,需要新建ftp用戶,其實新建的ftp用戶和Linux中root新建的用戶一樣,只是需要了解新建用戶時候的相關規則。

1 解決新建用戶缺少配置文件

1.1 新建用戶 指定目錄 修改密碼

1. useradd 添加用戶或更新新創建用戶的默認信息

語法:useradd  選項 用戶名

該命令的各選項含義如下:

-c comment    描述新用戶帳號,通常為用戶全名,comment 為字符串。
-d home_dir   設置用戶主目錄,默認值為用戶的登錄名,並放在/home目錄下。
-D            創建新帳號后保存為新帳號設置的默認信息。
-e expire_date  用 MM/DD/YYYY 格式設置帳號過期日期。
-f inactivity   設置口令失效時間,該值為 0 使口令失效后帳號立即失效,為 -1 使該選項失效。
-g group      設置所要創建新用戶所在的基本組,group為組名。
-k skel_dir   設置框架目錄,該目錄包含用戶的初始配置文件,
              創建用戶時該目錄下的文件都被復制到用戶主目錄下。
-m   自動創建用戶主目錄,並把框架目錄(默認為/etc/skel)下的文件復制到用戶主目錄下。
-M   不創建用戶主目錄。
-r   允許保留的系統帳號使用用戶ID創建一個新帳號。 
-s shell    指定用戶的登錄shell。
-u user_id  設置用戶ID


代碼:

# useradd -d /home/test -m test;

然后給test設置密碼。

# passwd test;

 

 ps:注意上述test目錄中已經存在一些用戶默認的配置文件。

1.2 查看創建的用戶列表

一般情況下是:

cat /etc/passwd 可以查看所有用戶的列表
w 可以查看當前活躍的用戶列表
cat /etc/group 查看用戶組

 

 

 但是這樣看起來不是很簡潔,一個簡潔的命令是

cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more

 

 

1.3 刪除用戶及目錄

按部就班的辦法是先刪除用戶在刪除目錄:

刪除用戶的命令是:userdel 用戶名
比如我剛建立的用戶是:zhyh,則命令為:
userdel zhyh
執行以上命令成功后利用以下命令刪除目錄
rm -rf /home/zhyh/

 

一個簡單的辦法就是執行下面的命令
userdel -r zhyh

 

 
        

1.4 問題

今天新建了一個MQM的用戶 ,

useradd -g mqm -d /var/mqm //容易缺少配置文件
passwd mqm

終端中顯示 -bash-4.1$而不是 [mqm@locahost~]

百度了下。據說是因為缺少配置文件,所以將缺少的配置文件復制到用戶的家目錄既可以。

將/etc/skel中的文件全部復制到/var/mqm/之后,問題就得到了解決。 操作如下

#查看用戶的家目錄
cat /etc/passwd

#-a表示復制隱藏文件
cp -a /etc/skel/.  /var/mqm        

linux中以 .開頭的文件默認隱藏。在命令中加入-a可以對隱藏文件進行操作。

#可以查看隱藏文件
ls -a /etc/skel            

#可以復制隱藏文件
cp -a /etc/skel/.  /    

如果想將一個文件隱藏,只要在文件名之前加上“ . ”即可

#隱藏test文件
mv test  .test   

2 用戶Shell控制

linux adduser-s /sbin/nologin和/bin/false的區別

/bin/false 是最嚴格的禁止login選項,一切服務都不能用,
/sbin/nologin 只是不允許系統login,可以使用其他ftp等服務

如果想要用false在禁止login的同時允許ftp,則必須在/etc/shells里增加一行/bin/false。

知道了Linux用戶管理最重要的兩個文件就是/etc/passwd和/etc/shadow這兩個文件。其中/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
adm:x:3:4:adm:/var/adm:/sbin/nologin

由上面的格式可以看出,每一行代表一個用戶的信息,一共包括7個字段的信息,每個字段的信息用冒號隔開。這7個字段分別代表:

1. 賬號名稱:即登陸時的用戶名
2. 密碼:早期UNIX系統的密碼是放在這個文件中的,但因為這個文件的特性是所有程序都能夠讀取,所以,這樣很容易造成數據被竊取,因此后來就將這個字段的密碼數據改放到/etc/shadow中了
3. UID:用戶ID,每個賬號名稱對應一個UID,通常UID=0表示root管理員
4. GID:組ID,與/etc/group有關,/etc/group與/etc/passwd差不多,是用來規范用戶組信息的
5. 用戶信息說明欄: 用來解釋這個賬號是干什么的
6. 家目錄:home目錄,即用戶登陸以后跳轉到的目錄,以root用戶為例,/root是它的家目錄,所以root用戶登陸以后就跳轉到/root目錄這里
7. Shell:用戶使用的shell,通常使用/bin/bash這個shell,這也就是為什么登陸Linux時默認的shell是bash的原因,就是在這里設置的,如果要想更改登陸后使用的shell,可以在這里修改。

另外一個很重要shell可以用來替代讓賬號無法登陸shell的命令,那就是/sbin/nologin,此時該用戶只能使用ftp登錄。

當我看到這里的時候,我就去登陸我們實驗室的服務器,打開/etc/passwd這個文件,里面果然有很多的類似上面格式的用戶賬號信息。由於我們實驗室服務器開放了ftp服務,而我正好有一個ftp的賬號,我看到我的賬號信息是這樣的

lxb:x:530:525::/opt/ftp:/sbin/nologin

通過上面的學習,我覺得它的意思大概是這樣的,用戶名是lxb,x表示密碼經過加密放到/etc/shadow文件中了,UID是530,GID是525,訪問的目錄是/opt/ftp,我看了一下,這個目錄下的內容正好是我登陸ftp后所看到的,至於最后一個/sbin/nologin,應該是登錄時候使用的shell,但是它為什么是nologin呢,難道不讓我登陸嗎?

於是我用root權限登陸到里面,把后面的/sbin/nologin改成了/bin/bash,重新用ssh進行登陸,真的登陸進去了,而且登陸后的目錄正好是/opt/ftp。

修改用戶的shell類型有兩種方式:

1、編輯/etc/passwd 文件

vim /etc/passwd

 找到要修改的用戶,直接進行編輯即可。

2、使用命令修改

usermod -s /bin/bash cs408
usermod -s /sbin/nologin cs408 //限定用戶cs408不能shell登錄,只能ftp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM