10 11Linux使用者管理規則及使用者管理函式

2021-07-23 15:47:16 字數 3806 閱讀 1620

使用者管理:

useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage

組管理:

groupadd, groupdel, groupmod, gpasswd

/etc/login.defs

環境變數:

path

histsize

shell

/etc/shells:指定了當前系統可用的安全shell

userdel:

userdel [option] username

-r: 同時刪除使用者的家目錄

id:檢視使用者的帳號屬性資訊

-u-g

-g-n

finger: 檢視使用者帳號資訊

finger username

修改使用者帳號屬性:

usermod

-u uid 

-g gid

-a -g gid:不使用-a選項,會覆蓋此前的附加組;

-c-d -m:

-s-l

-l:鎖定帳號

-u:解鎖帳號

chsh: 修改使用者的預設shell

chfn:修改注釋資訊

密碼管理:

passwd [username]

--stdin

-l-u

-d: 刪除使用者密碼

pwck:檢查使用者帳號完整性

組管理:

建立組:groupadd

groupadd 

-g gid

-r:新增為系統組

groupmod

-g gid

-n grpname

groupdel

gpasswd:為組設定密碼

newgrp grpname <--> exit

實際使用者id和實際組id:用於表示當前linux的登入使用者,在會話中並不會改變,只有在使用sudo等命令時會暫時發生改變。

有效使用者id,有效組id,附加組id:用於確定每個檔案的訪問組許可權,儲存在stat結構體中的st_mode分量中。

s_irusr:使用者讀

s_iwusr:使用者寫

s_ixusr:使用者執行

s_irgrp:組讀

s_iwgrp:組寫

s_ixgrp:組執行

s_iroth:其他使用者讀

s_iwoth:其他使用者寫

s_ixoth:其他使用者執行

儲存的設定組id和儲存的設定使用者id:儲存了該使用者的有效組id和有效使用者id的乙個副本

測試檔案訪問許可權函式:

#include

int access(const char *pathname, int mode);

umask函式:

mode_t umask(mode_t cmode);

chmod函式和fchmod函式:

umask函式只能在建立檔案的時候給定檔案的許可權,而chmod和fchmod函式可以修改已經存在的檔案的許可權。chmod可以在任何時候修改指定檔案的許可權,而fchmod需要在檔案被開啟後使用檔案描述符來修改。

#include

#include

int chmod(const char *filename, mode_t mode);

int fchmod(int fd, mode_t mode);

修改檔案的使用者id和使用者組id:chown,fchown,lchown

rename函式:

#include

int rename(const char *oldname, const char *newname);

檔案的其他高階操作函式:

1.    #include

int dup(int fd);

int dup2(int fd, int fd2);

2.    #include

#include

#include

int fcntl(int fd, int cmd, int arg);

第二個引數:

f_dupd:返回大於或等於arg的最低序號的檔案描述符。該功能可以由dup函式實現。新的檔案描述符與舊的可以互換使用。呼叫成功時,返回值為新的檔案描述符。        

f_getfd:獲得close-on-exec標誌。如果最後一位是0,則該標誌沒有設定。返回值為0或1.

f_setfd:設定close-on-exec標誌為指定的值arg(只有最後一位有效,為0或1)

f_getfl:獲得檔案的開啟方式。返回所有的標誌位,標誌位的含義與open函式中相同。

f_getlk:獲得本程序得到鎖的第乙個鎖的flock結構。

f_setlk:獲得離散的檔案鎖,不等待。

f_setlkw:獲得離散的檔案鎖,必要時等待。

f_getown:返回當前接受sigio或sigurg訊號(signal)的程序id或程序組。程序id以負值返回。

f_setown:設定程序或程序組接受sigio和sigurg訊號,程序組id以負值返回。程序id以正值指定。

檔案鎖:在文已經共享的情況下如何操作,也就是當多個程序同時操作同乙個檔案時,我們怎麼保證檔案資料的正確性。linux通常採用的方法是檔案上鎖,來避免共享資源的產生競爭狀態。

檔案鎖包括建議性鎖和強制性的鎖。建議性的,顧名思義,相對溫柔一些,在對檔案進行鎖操作時,會檢測是否已經有鎖存在,並且尊重已有的鎖。在一般的情況下,核心和系統都不使用建議鎖。強制性的鎖是由核心執行的鎖,當乙個檔案被上鎖進行寫入操作的時候,核心將阻止其他程序對其進行讀寫操作。採取強制性的鎖對效能的影響很大,每次進行讀寫操作都必須檢查是否有鎖存在。

fcntl函式返回檔案狀態標誌:

o_rdonly:唯讀

o_wronly:只寫

o_rdwr:讀寫

o_nonblock:非阻塞模式

o_sync:等待資料和屬性寫完成

o_dsync:等待資料寫完成

o_rsync:同步讀寫

o_fsync:等待寫完成

o_async:非同步i/o操作

truncate和ftruncate函式:

#include

int truncate(char *filepath, size_t len);

int ftruncate(int fd, size_t len);

remove函式:

#include

int remove(const char *pathname);

目錄檔案操作:

mkdir和rmdir

#include

#include

#include

int mkdir(const char *pathname, mode_t mode);//建立乙個目錄

int rmdir(const char *pathname);//刪除乙個目錄

int chdir(const char *pathname);//改變工作路徑

int fchdir(int fd);//改變檔案工作路徑

char *getcwd(char *buf, size_t size);//獲取檔案的完整路徑

#include

dir *opendir(const char *pathname);//開啟目錄,返回的是乙個dir指標,是乙個內部結構,用來儲存被度的目錄的有關資訊。

int close(dir *dp);//關閉目錄,引數是乙個內部結構指標

struct dirent *readdir(dir *dp);//讀目錄,返回乙個目錄dirent結構體指標。

struct dirent

;

LInux 使用者管理

最近在使用nagios的時候,需要新增一些使用者和組的資訊。需要整理一下,有些記不清楚了。原文連線 http www.g loaded.eu 2005 11 06 manage users from the command line userinfo 使用者資訊 命令id 顯示使用者基本資訊 命令u...

Linux使用者管理

0 產看使用者uid gid 等資訊 id 使用者名稱 1 linux使用者型別 1 超級使用者 root uid 0 2 偽使用者 uid 1 499之間 3 普通使用者 uid 500 60000之間 2 配置檔案 1 使用者資訊檔案 etc passwd 2 密碼檔案 etc shadow 3...

Linux 使用者管理

1 linux裡檢視所有使用者 linux裡,並沒有像windows的net user,net localgroup這些方便的命令來管理使用者.xwindows介面的就不說了.1 在終端裡.其實只需要檢視 etc passwd檔案就行了.2 看第三個引數 500以上的,就是後面建的使用者了.其它則為...